[Back]
<?php
/*
 * Copyright (c) 2024 LatePoint LLC. All rights reserved.
 */

if (!defined('ABSPATH')) {
	exit; // Exit if accessed directly.
}


if (!class_exists('OsFormFieldsController')) :


	class OsFormFieldsController extends OsController {


		function __construct() {
			parent::__construct();

			$this->views_folder = LATEPOINT_VIEWS_ABSPATH . 'settings/';
			$this->vars['page_header'] = OsMenuHelper::get_menu_items_by_id('form_fields');
			$this->vars['breadcrumbs'][] = array('label' => __('Form Fields', 'latepoint'), 'link' => OsRouterHelper::build_link(OsRouterHelper::build_route_name('form_fields', 'default_form_fields')));
		}

		public function default_form_fields() {
			$this->vars['page_header'] = OsMenuHelper::get_menu_items_by_id('form_fields');
			$this->vars['default_fields'] = OsSettingsHelper::get_default_fields_for_customer();

			$this->format_render(__FUNCTION__);
		}

		public function update_default_fields() {
			$updated_fields = $this->params['default_fields'];
			$default_fields = OsSettingsHelper::get_default_fields_for_customer();
			$fields_to_save = [];
			foreach ($default_fields as $name => $default_field) {
				$default_field['width'] = $updated_fields[$name]['width'];
				$default_field['required'] = ($updated_fields[$name]['required'] == 'off') ? false : true;
				$default_field['active'] = ($updated_fields[$name]['active']) ? true : false;
				$fields_to_save[$name] = $default_field;
			}
			OsSettingsHelper::save_setting_by_name('default_fields_for_customer', wp_json_encode($fields_to_save));
			if(!empty($fields_to_save['email']) || $fields_to_save['email']['active'] || $fields_to_save['email']['active']){
				// if email field is disabled or not required - disabled wordpress login for customers
				OsSettingsHelper::save_setting_by_name('wp_users_as_customers', LATEPOINT_VALUE_OFF);
			}
			if ($this->get_return_format() == 'json') {
				$this->send_json(array('status' => LATEPOINT_STATUS_SUCCESS, 'message' => __('Default Fields Updated', 'latepoint')));
			}
		}
	}
endif;