Include manage link + 24h notice in admin notification emails
Admin create/modify booking notifications now match the public confirmation/modify emails. Admin-created bookings get a manage_token generated; admin-modified bookings reuse the existing token (or backfill one if missing). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
e24e68f603
commit
e8aa9084c1
@@ -902,8 +902,8 @@ class Admin extends CI_Controller {
|
|||||||
if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){
|
if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){
|
||||||
for($index = 0; $index <= $diff->days; $index++){
|
for($index = 0; $index <= $diff->days; $index++){
|
||||||
$selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days'));
|
$selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days'));
|
||||||
|
|
||||||
|
$manageToken = bin2hex(random_bytes(16));
|
||||||
$bookingArray = array(
|
$bookingArray = array(
|
||||||
'guest_name' => $_POST['guest_name'],
|
'guest_name' => $_POST['guest_name'],
|
||||||
'guest_email' => $_POST['guest_email'],
|
'guest_email' => $_POST['guest_email'],
|
||||||
@@ -915,12 +915,14 @@ class Admin extends CI_Controller {
|
|||||||
'service_ids' => serialize($selectedServiceArray),
|
'service_ids' => serialize($selectedServiceArray),
|
||||||
'guest_confirmed' => '0',
|
'guest_confirmed' => '0',
|
||||||
'guest_confirm_code' => '1234',
|
'guest_confirm_code' => '1234',
|
||||||
|
'manage_token' => $manageToken,
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->Service_model->createBooking($bookingArray);
|
$this->Service_model->createBooking($bookingArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
$manageToken = bin2hex(random_bytes(16));
|
||||||
$bookingArray = array(
|
$bookingArray = array(
|
||||||
'guest_name' => $_POST['guest_name'],
|
'guest_name' => $_POST['guest_name'],
|
||||||
'guest_email' => $_POST['guest_email'],
|
'guest_email' => $_POST['guest_email'],
|
||||||
@@ -932,6 +934,7 @@ class Admin extends CI_Controller {
|
|||||||
'service_ids' => serialize($selectedServiceArray),
|
'service_ids' => serialize($selectedServiceArray),
|
||||||
'guest_confirmed' => '0',
|
'guest_confirmed' => '0',
|
||||||
'guest_confirm_code' => '1234',
|
'guest_confirm_code' => '1234',
|
||||||
|
'manage_token' => $manageToken,
|
||||||
);
|
);
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' létrehoza a(z) '.$_POST['guest_name'].' nevű vendég foglalást ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' létrehoza a(z) '.$_POST['guest_name'].' nevű vendég foglalást ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
$this->Service_model->createBooking($bookingArray);
|
$this->Service_model->createBooking($bookingArray);
|
||||||
@@ -976,8 +979,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Totalpris: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Totalpris: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Administrer bestilling</a><br />';
|
||||||
|
$content .= '<br /> Dersom noe skulle dukke opp og du ikke kan komme til avtalen din, vennligst gi oss beskjed minst 24 timer i forveien, slik at vi kan gi timen videre til en annen kunde og våre kollegers tid ikke blir stående ubrukt; avbestillinger innen 24 timer, eller manglende oppmøte, vil bli belastet med full pris for behandlingen; avbestilling kan gjøres via e-post til <a href="mailto:info@studiobeve.no">info@studiobeve.no</a> eller ved å sende oss en melding på Instagram eller Facebook. Takk for forståelsen og samarbeidet!';
|
||||||
|
$content .= '<br />';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /> STUDIOBEVE';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
case 'en':
|
case 'en':
|
||||||
$content = 'Dear Guest,<br />';
|
$content = 'Dear Guest,<br />';
|
||||||
@@ -999,8 +1005,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Total price: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Total price: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Manage booking</a><br />';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$content .= '<br /> If something comes up and you can’t make it to your booked appointment, please let us know at least 24 hours in advance so we can offer the time slot to another guest and our colleagues’ time won’t remain unused; cancellations within 24 hours or no-shows will be charged the full service fee; you can cancel by emailing <a href="mailto:info@studiobeve.no">info@studiobeve.no</a>, or by sending us a message on Instagram or Facebook. Thank you for your understanding and cooperation!';
|
||||||
|
$content .= '<br />';
|
||||||
|
$content .= '<br /> STUDIOBEVE';
|
||||||
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
case 'hu':
|
case 'hu':
|
||||||
$content = 'Kedves Vendégünk,<br />';
|
$content = 'Kedves Vendégünk,<br />';
|
||||||
@@ -1022,8 +1031,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Összesen fizetendő: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Összesen fizetendő: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Foglalás kezelése</a><br />';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$content .= '<br /> Kérünk, ha valami közbejön, és mégsem tudsz eljönni a lefoglalt időpontodra, jelezd nekünk legalább 24 órával előre, így más vendégnek is tudunk szabad időpontot biztosítani, és kollégáink ideje sem marad kihasználatlanul; 24 órán belüli lemondás, illetve meg nem jelenés esetén a szolgáltatás teljes díja felszámításra kerül; a lemondást az <a href="mailto:info@studiobeve.no">info@studiobeve.no</a> e-mail címen, vagy Instagram- és Facebook-üzenetben tudod megtenni. Köszönjük a megértést és az együttműködést!';
|
||||||
|
$content .= '<br />';
|
||||||
|
$content .= '<br /> STUDIOBEVE';
|
||||||
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1114,11 +1126,11 @@ class Admin extends CI_Controller {
|
|||||||
|
|
||||||
if($_POST['send_notification']){
|
if($_POST['send_notification']){
|
||||||
$worker = $this->Service_model->getWorkerById($bookingArray['worker_id']);
|
$worker = $this->Service_model->getWorkerById($bookingArray['worker_id']);
|
||||||
|
|
||||||
$services = unserialize($bookingArray['service_ids']);
|
$services = unserialize($bookingArray['service_ids']);
|
||||||
$serviceArray = array();
|
$serviceArray = array();
|
||||||
$emailArray = array();
|
$emailArray = array();
|
||||||
|
|
||||||
if(is_array($services)){
|
if(is_array($services)){
|
||||||
foreach($services as $serviceItem){
|
foreach($services as $serviceItem){
|
||||||
$selectedService = $this->Service_model->getServiceById($serviceItem);
|
$selectedService = $this->Service_model->getServiceById($serviceItem);
|
||||||
@@ -1127,11 +1139,17 @@ class Admin extends CI_Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$manageToken = (isset($oldBooking) && !empty($oldBooking->manage_token)) ? $oldBooking->manage_token : '';
|
||||||
|
if(empty($manageToken)){
|
||||||
|
$manageToken = bin2hex(random_bytes(16));
|
||||||
|
$this->Service_model->updateBooking($_POST['booking_id'], array('manage_token' => $manageToken));
|
||||||
|
}
|
||||||
|
|
||||||
$content = '';
|
$content = '';
|
||||||
|
|
||||||
$email_subject ='';
|
$email_subject ='';
|
||||||
|
|
||||||
switch($_POST['lang']){
|
switch($_POST['lang']){
|
||||||
case 'no':
|
case 'no':
|
||||||
$email_subject ='[studiobeve] Din reservasjon er endret';
|
$email_subject ='[studiobeve] Din reservasjon er endret';
|
||||||
@@ -1154,8 +1172,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Totalpris: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Totalpris: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Administrer bestilling</a><br />';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$content .= '<br /> Dersom noe skulle dukke opp og du ikke kan komme til avtalen din, vennligst gi oss beskjed minst 24 timer i forveien, slik at vi kan gi timen videre til en annen kunde og våre kollegers tid ikke blir stående ubrukt; avbestillinger innen 24 timer, eller manglende oppmøte, vil bli belastet med full pris for behandlingen; avbestilling kan gjøres via e-post til <a href="mailto:info@studiobeve.no">info@studiobeve.no</a> eller ved å sende oss en melding på Instagram eller Facebook. Takk for forståelsen og samarbeidet!';
|
||||||
|
$content .= '<br />';
|
||||||
|
$content .= '<br /> STUDIOBEVE';
|
||||||
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
case 'en':
|
case 'en':
|
||||||
$email_subject ='[studiobeve] Your booking has changed';
|
$email_subject ='[studiobeve] Your booking has changed';
|
||||||
@@ -1178,8 +1199,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Total price: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Total price: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Manage booking</a><br />';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$content .= '<br /> If something comes up and you can’t make it to your booked appointment, please let us know at least 24 hours in advance so we can offer the time slot to another guest and our colleagues’ time won’t remain unused; cancellations within 24 hours or no-shows will be charged the full service fee; you can cancel by emailing <a href="mailto:info@studiobeve.no">info@studiobeve.no</a>, or by sending us a message on Instagram or Facebook. Thank you for your understanding and cooperation!';
|
||||||
|
$content .= '<br />';
|
||||||
|
$content .= '<br /> STUDIOBEVE';
|
||||||
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
case 'hu':
|
case 'hu':
|
||||||
$email_subject ='[studiobeve] A foglalása módosult';
|
$email_subject ='[studiobeve] A foglalása módosult';
|
||||||
@@ -1202,8 +1226,11 @@ class Admin extends CI_Controller {
|
|||||||
$content .= '</table></td>';
|
$content .= '</table></td>';
|
||||||
$content .= '<tr><td>Összesen fizetendő: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
$content .= '<tr><td>Összesen fizetendő: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||||
$content .= '</table>';
|
$content .= '</table>';
|
||||||
|
$content .= '<br /><br /><a href="'.SITEURL.$_POST['lang'].'/manage-booking/'.$manageToken.'">Foglalás kezelése</a><br />';
|
||||||
|
$content .= '<br /> Kérünk, ha valami közbejön, és mégsem tudsz eljönni a lefoglalt időpontodra, jelezd nekünk legalább 24 órával előre, így más vendégnek is tudunk szabad időpontot biztosítani, és kollégáink ideje sem marad kihasználatlanul; 24 órán belüli lemondás, illetve meg nem jelenés esetén a szolgáltatás teljes díja felszámításra kerül; a lemondást az <a href="mailto:info@studiobeve.no">info@studiobeve.no</a> e-mail címen, vagy Instagram- és Facebook-üzenetben tudod megtenni. Köszönjük a megértést és az együttműködést!';
|
||||||
|
$content .= '<br />';
|
||||||
$content .= '<br /> STUDIOBEVE';
|
$content .= '<br /> STUDIOBEVE';
|
||||||
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
$this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user