Send the appointment notifications to the language of the recipient instead of the currently logged in user language #1402

This commit is contained in:
Alex Tselegidis 2023-12-12 12:14:01 +01:00
parent 65aacce924
commit 1eada1b0e2

View file

@ -63,23 +63,7 @@ class Notifications
bool $manage_mode = false bool $manage_mode = false
): void { ): void {
try { try {
if ($manage_mode) { $current_language = config('english');
$customer_subject = lang('appointment_details_changed');
$customer_message = '';
$provider_subject = lang('appointment_details_changed');
$provider_message = '';
} else {
$customer_subject = lang('appointment_booked');
$customer_message = lang('thank_you_for_appointment');
$provider_subject = lang('appointment_added_to_your_plan');
$provider_message = lang('appointment_link_description');
}
$customer_link = site_url('booking/reschedule/' . $appointment['hash']); $customer_link = site_url('booking/reschedule/' . $appointment['hash']);
@ -92,14 +76,19 @@ class Notifications
!empty($customer['email']) && filter_var(setting('customer_notifications'), FILTER_VALIDATE_BOOLEAN); !empty($customer['email']) && filter_var(setting('customer_notifications'), FILTER_VALIDATE_BOOLEAN);
if ($send_customer === true) { if ($send_customer === true) {
config(['language' => $customer['language']]);
$this->CI->lang->load('translations');
$subject = $manage_mode ? lang('appointment_details_changed') : lang('appointment_booked');
$message = $manage_mode ? '' : lang('thank_you_for_appointment');
$this->CI->email_messages->send_appointment_saved( $this->CI->email_messages->send_appointment_saved(
$appointment, $appointment,
$provider, $provider,
$service, $service,
$customer, $customer,
$settings, $settings,
$customer_subject, $subject,
$customer_message, $message,
$customer_link, $customer_link,
$customer['email'], $customer['email'],
$ics_stream, $ics_stream,
@ -114,14 +103,19 @@ class Notifications
); );
if ($send_provider === true) { if ($send_provider === true) {
config(['language' => $provider['language']]);
$this->CI->lang->load('translations');
$subject = $manage_mode ? lang('appointment_details_changed') : lang('appointment_added_to_your_plan');
$message = $manage_mode ? '' : lang('appointment_link_description');
$this->CI->email_messages->send_appointment_saved( $this->CI->email_messages->send_appointment_saved(
$appointment, $appointment,
$provider, $provider,
$service, $service,
$customer, $customer,
$settings, $settings,
$provider_subject, $subject,
$provider_message, $message,
$provider_link, $provider_link,
$provider['email'], $provider['email'],
$ics_stream, $ics_stream,
@ -137,14 +131,19 @@ class Notifications
continue; continue;
} }
config(['language' => $admin['language']]);
$this->CI->lang->load('translations');
$subject = $manage_mode ? lang('appointment_details_changed') : lang('appointment_added_to_your_plan');
$message = $manage_mode ? '' : lang('appointment_link_description');
$this->CI->email_messages->send_appointment_saved( $this->CI->email_messages->send_appointment_saved(
$appointment, $appointment,
$provider, $provider,
$service, $service,
$customer, $customer,
$settings, $settings,
$provider_subject, $subject,
$provider_message, $message,
$provider_link, $provider_link,
$admin['email'], $admin['email'],
$ics_stream, $ics_stream,
@ -164,14 +163,19 @@ class Notifications
continue; continue;
} }
config(['language' => $secretary['language']]);
$this->CI->lang->load('translations');
$subject = $manage_mode ? lang('appointment_details_changed') : lang('appointment_added_to_your_plan');
$message = $manage_mode ? '' : lang('appointment_link_description');
$this->CI->email_messages->send_appointment_saved( $this->CI->email_messages->send_appointment_saved(
$appointment, $appointment,
$provider, $provider,
$service, $service,
$customer, $customer,
$settings, $settings,
$provider_subject, $subject,
$provider_message, $message,
$provider_link, $provider_link,
$secretary['email'], $secretary['email'],
$ics_stream, $ics_stream,
@ -187,6 +191,9 @@ class Notifications
$e->getMessage() $e->getMessage()
); );
log_message('error', $e->getTraceAsString()); log_message('error', $e->getTraceAsString());
} finally {
config(['language' => $current_language ?? 'english']);
$this->CI->lang->load('translations');
} }
} }
@ -208,6 +215,8 @@ class Notifications
string $cancellation_reason = '' string $cancellation_reason = ''
): void { ): void {
try { try {
$current_language = config('language');
// Notify provider. // Notify provider.
$send_provider = filter_var( $send_provider = filter_var(
$this->CI->providers_model->get_setting($provider['id'], 'notifications'), $this->CI->providers_model->get_setting($provider['id'], 'notifications'),
@ -215,6 +224,9 @@ class Notifications
); );
if ($send_provider === true) { if ($send_provider === true) {
config(['language' => $provider['language']]);
$this->CI->lang->load('translations');
$this->CI->email_messages->send_appointment_deleted( $this->CI->email_messages->send_appointment_deleted(
$appointment, $appointment,
$provider, $provider,
@ -232,6 +244,9 @@ class Notifications
!empty($customer['email']) && filter_var(setting('customer_notifications'), FILTER_VALIDATE_BOOLEAN); !empty($customer['email']) && filter_var(setting('customer_notifications'), FILTER_VALIDATE_BOOLEAN);
if ($send_customer === true) { if ($send_customer === true) {
config(['language' => $customer['language']]);
$this->CI->lang->load('translations');
$this->CI->email_messages->send_appointment_deleted( $this->CI->email_messages->send_appointment_deleted(
$appointment, $appointment,
$provider, $provider,
@ -252,6 +267,9 @@ class Notifications
continue; continue;
} }
config(['language' => $admin['language']]);
$this->CI->lang->load('translations');
$this->CI->email_messages->send_appointment_deleted( $this->CI->email_messages->send_appointment_deleted(
$appointment, $appointment,
$provider, $provider,
@ -276,6 +294,9 @@ class Notifications
continue; continue;
} }
config(['language' => $secretary['language']]);
$this->CI->lang->load('translations');
$this->CI->email_messages->send_appointment_deleted( $this->CI->email_messages->send_appointment_deleted(
$appointment, $appointment,
$provider, $provider,
@ -296,6 +317,9 @@ class Notifications
$e->getMessage() $e->getMessage()
); );
log_message('error', $e->getTraceAsString()); log_message('error', $e->getTraceAsString());
} finally {
config(['language' => $current_language ?? 'english']);
$this->CI->lang->load('translations');
} }
} }
} }