Always display events in the provider's timezone in the backend calendar pages
This commit is contained in:
parent
5512731c41
commit
cf7bad9f19
3 changed files with 11 additions and 70 deletions
|
@ -82,11 +82,11 @@ class Backend_api extends EA_Controller {
|
|||
])
|
||||
];
|
||||
|
||||
foreach ($response['appointments'] as $index => $appointment)
|
||||
foreach ($response['appointments'] as &$appointment)
|
||||
{
|
||||
$response['appointments'][$index]['provider'] = $this->providers_model->get_row($appointment['id_users_provider']);
|
||||
$response['appointments'][$index]['service'] = $this->services_model->get_row($appointment['id_services']);
|
||||
$response['appointments'][$index]['customer'] = $this->customers_model->get_row($appointment['id_users_customer']);
|
||||
$appointment['provider'] = $this->providers_model->get_row($appointment['id_users_provider']);
|
||||
$appointment['service'] = $this->services_model->get_row($appointment['id_services']);
|
||||
$appointment['customer'] = $this->customers_model->get_row($appointment['id_users_customer']);
|
||||
}
|
||||
|
||||
$user_id = $this->session->userdata('user_id');
|
||||
|
@ -218,6 +218,11 @@ class Backend_api extends EA_Controller {
|
|||
$response['unavailables'] = $this->appointments_model->get_batch($where_clause);
|
||||
}
|
||||
|
||||
foreach ($response['unavailables'] as &$unavailable)
|
||||
{
|
||||
$unavailable['provider'] = $this->providers_model->get_row($unavailable['id_users_provider']);
|
||||
}
|
||||
|
||||
$this->output
|
||||
->set_content_type('application/json')
|
||||
->set_output(json_encode($response));
|
||||
|
@ -282,16 +287,6 @@ class Backend_api extends EA_Controller {
|
|||
$appointment['id_users_customer'] = $customer['id'];
|
||||
}
|
||||
|
||||
$provider_timezone = $this->user_model->get_user_timezone($appointment['id_users_provider']);
|
||||
|
||||
$session_timezone = $this->timezones->get_session_timezone();
|
||||
|
||||
$appointment['start_datetime'] = $this->timezones->convert($appointment['start_datetime'],
|
||||
$session_timezone, $provider_timezone);
|
||||
|
||||
$appointment['end_datetime'] = $this->timezones->convert($appointment['end_datetime'],
|
||||
$session_timezone, $provider_timezone);
|
||||
|
||||
$appointment['id'] = $this->appointments_model->add($appointment);
|
||||
}
|
||||
|
||||
|
@ -565,8 +560,7 @@ class Backend_api extends EA_Controller {
|
|||
|
||||
foreach ($customers as &$customer)
|
||||
{
|
||||
$appointments = $this->appointments_model
|
||||
->get_batch(['id_users_customer' => $customer['id']]);
|
||||
$appointments = $this->appointments_model->get_batch(['id_users_customer' => $customer['id']]);
|
||||
|
||||
foreach ($appointments as &$appointment)
|
||||
{
|
||||
|
@ -615,16 +609,6 @@ class Backend_api extends EA_Controller {
|
|||
$provider = $this->providers_model->get_row($unavailable['id_users_provider']);
|
||||
|
||||
// Add appointment
|
||||
$provider_timezone = $this->user_model->get_user_timezone($unavailable['id_users_provider']);
|
||||
|
||||
$session_timezone = $this->timezones->get_session_timezone();
|
||||
|
||||
$unavailable['start_datetime'] = $this->timezones->convert($unavailable['start_datetime'],
|
||||
$session_timezone, $provider_timezone);
|
||||
|
||||
$unavailable['end_datetime'] = $this->timezones->convert($unavailable['end_datetime'],
|
||||
$session_timezone, $provider_timezone);
|
||||
|
||||
$unavailable['id'] = $this->appointments_model->add_unavailable($unavailable);
|
||||
$unavailable = $this->appointments_model->get_row($unavailable['id']); // fetch all inserted data
|
||||
|
||||
|
|
|
@ -13,10 +13,6 @@
|
|||
|
||||
/**
|
||||
* Timezones
|
||||
*
|
||||
* @property CI_Loader $load
|
||||
*
|
||||
* @package Models
|
||||
*/
|
||||
class Timezones {
|
||||
/**
|
||||
|
@ -484,36 +480,6 @@ class Timezones {
|
|||
return $this->timezones;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the dates of an event to the timezone of the user.
|
||||
*
|
||||
* @param array $event Must contain the "start_datetime", "end_datetime" and "id_users_provider" properties.
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function convert_event_timezone($event)
|
||||
{
|
||||
if ( ! isset($event['start_datetime'], $event['end_datetime'], $event['id_users_provider']))
|
||||
{
|
||||
throw new Exception('The provided event does not have the required properties: ' . print_r($event));
|
||||
}
|
||||
|
||||
$user_timezone = $this->CI->user_model->get_user_timezone($event['id_users_provider']);
|
||||
|
||||
$session_timezone = $this->get_session_timezone();
|
||||
|
||||
$event['start_datetime'] = $this->convert($event['start_datetime'],
|
||||
$user_timezone, $session_timezone);
|
||||
|
||||
$event['end_datetime'] = $this->convert($event['end_datetime'],
|
||||
$user_timezone, $session_timezone);
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the session timezone or the default timezone as a fallback.
|
||||
*
|
||||
|
|
|
@ -24,7 +24,6 @@ class Appointments_model extends EA_Model {
|
|||
{
|
||||
parent::__construct();
|
||||
$this->load->helper('data_validation');
|
||||
$this->load->library('timezones');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -317,11 +316,7 @@ class Appointments_model extends EA_Model {
|
|||
. $appointment_id);
|
||||
}
|
||||
|
||||
$appointment = $this->db->get_where('appointments', ['id' => $appointment_id])->row_array();
|
||||
|
||||
$appointment = $this->timezones->convert_event_timezone($appointment);
|
||||
|
||||
return $appointment;
|
||||
return $this->db->get_where('appointments', ['id' => $appointment_id])->row_array();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -363,8 +358,6 @@ class Appointments_model extends EA_Model {
|
|||
throw new Exception('The given field name does not exist in the database: ' . $field_name);
|
||||
}
|
||||
|
||||
$row_data = $this->timezones->convert_event_timezone($row_data);
|
||||
|
||||
return $row_data[$field_name];
|
||||
}
|
||||
|
||||
|
@ -401,8 +394,6 @@ class Appointments_model extends EA_Model {
|
|||
|
||||
foreach ($appointments as &$appointment)
|
||||
{
|
||||
$appointment = $this->timezones->convert_event_timezone($appointment);
|
||||
|
||||
if ($aggregates)
|
||||
{
|
||||
$appointment = $this->get_aggregates($appointment);
|
||||
|
|
Loading…
Reference in a new issue