foglalás időpont +1 órás baszakodás
This commit is contained in:
@@ -634,7 +634,7 @@ class Admin extends CI_Controller {
|
|||||||
'is_beauty' => $_POST['is_beauty'],
|
'is_beauty' => $_POST['is_beauty'],
|
||||||
'is_barber' => $_POST['is_barber'],
|
'is_barber' => $_POST['is_barber'],
|
||||||
'worker_profile_img' => $data['worker_img'],
|
'worker_profile_img' => $data['worker_img'],
|
||||||
'service_category_id' => $data['service_category_id'],
|
'service_category_id' => $_POST['service_category_id'],
|
||||||
'is_active' => $_POST['is_active']
|
'is_active' => $_POST['is_active']
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ class Pages extends CI_Controller {
|
|||||||
foreach($workers as $workerItem){
|
foreach($workers as $workerItem){
|
||||||
$workerListShow .= '<label for="worker_'.$workerItem->worker_id.'">';
|
$workerListShow .= '<label for="worker_'.$workerItem->worker_id.'">';
|
||||||
$workerListShow .= '<div class="profileRow">';
|
$workerListShow .= '<div class="profileRow">';
|
||||||
$workerListShow .= '<div class="profileCell profileRadioBtn"><input type="radio" class="workers" id="worker_'.$workerItem->worker_id.'" onclick="setWorker('.$workerItem->worker_id.')" '.($workerIndex==0?'checked':'').'></div>';
|
$workerListShow .= '<div class="profileCell profileRadioBtn"><input type="radio" name="worker_radio" class="workers" id="worker_'.$workerItem->worker_id.'" onclick="setWorker('.$workerItem->worker_id.')" '.($workerIndex==0?'checked':'').'></div>';
|
||||||
$workerListShow .= '<div class="profileCell profileImage"><img src="'.SITEURL.'assets/img/'.$workerItem->worker_profile_img.'"></div>';
|
$workerListShow .= '<div class="profileCell profileImage"><img src="'.SITEURL.'assets/img/'.$workerItem->worker_profile_img.'"></div>';
|
||||||
$workerListShow .= '<div class="profileCell">';
|
$workerListShow .= '<div class="profileCell">';
|
||||||
$workerListShow .= '<div class="profileName">'.$workerItem->worker_name.'</div>';
|
$workerListShow .= '<div class="profileName">'.$workerItem->worker_name.'</div>';
|
||||||
|
|||||||
@@ -407,10 +407,12 @@ class Service_model extends CI_Model {
|
|||||||
public function getAvailableTimes($worker_id, $selectedDate, $servicelength) {
|
public function getAvailableTimes($worker_id, $selectedDate, $servicelength) {
|
||||||
$this->load->database();
|
$this->load->database();
|
||||||
|
|
||||||
|
// múltbeli napra ne lehessen foglalni
|
||||||
if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) {
|
if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// max 3 hónappal előre
|
||||||
$today = new DateTime();
|
$today = new DateTime();
|
||||||
$maxDate = (clone $today)->modify('+3 months');
|
$maxDate = (clone $today)->modify('+3 months');
|
||||||
$selected = new DateTime($selectedDate);
|
$selected = new DateTime($selectedDate);
|
||||||
@@ -423,10 +425,11 @@ class Service_model extends CI_Model {
|
|||||||
$debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts);
|
$debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts);
|
||||||
log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}");
|
log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}");
|
||||||
log_message('error', "⏱ Timezone: " . date_default_timezone_get());
|
log_message('error', "⏱ Timezone: " . date_default_timezone_get());
|
||||||
|
|
||||||
$serviceLengthTime = strtotime($servicelength);
|
$serviceLengthTime = strtotime($servicelength);
|
||||||
$availableTimeArray = [];
|
$availableTimeArray = [];
|
||||||
|
|
||||||
// Check override first
|
// --- Override ellenőrzés ---
|
||||||
$overrideQuery = $this->db->query("
|
$overrideQuery = $this->db->query("
|
||||||
SELECT * FROM worker_schedule_overrides
|
SELECT * FROM worker_schedule_overrides
|
||||||
WHERE worker_id = '$worker_id' AND date = '$selectedDate'
|
WHERE worker_id = '$worker_id' AND date = '$selectedDate'
|
||||||
@@ -464,6 +467,29 @@ class Service_model extends CI_Model {
|
|||||||
$finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time);
|
$finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- ÚJ: ma foglalva csak (következő 15 perces blokk + 1 óra) UTÁN legyen időpont ---
|
||||||
|
if ($selectedDate == date('Y-m-d')) {
|
||||||
|
// használd a helyi (Oslo) időt, ne az esetleges UTC defaultot
|
||||||
|
$now = new DateTime('now', new DateTimeZone('Europe/Oslo'));
|
||||||
|
|
||||||
|
// kerekítés a következő 15 perces blokkra
|
||||||
|
$minutes = (int)$now->format('i');
|
||||||
|
$mod = $minutes % 15;
|
||||||
|
if ($mod !== 0) {
|
||||||
|
$now->modify('+' . (15 - $mod) . ' minutes');
|
||||||
|
}
|
||||||
|
|
||||||
|
// erre dobunk +1 órát
|
||||||
|
$now->modify('+1 hour');
|
||||||
|
$now->setTime((int)$now->format('H'), (int)$now->format('i'), 0);
|
||||||
|
// ha ez később van, mint a munkanap kezdete, toljuk fel a nap kezdetét
|
||||||
|
if ($now > $dayStartTime) {
|
||||||
|
$dayStartTime = clone $now;
|
||||||
|
}
|
||||||
|
|
||||||
|
log_message('error', '⏳ Min start (next 15min +1h, Europe/Oslo): ' . $dayStartTime->format('Y-m-d H:i:s'));
|
||||||
|
}
|
||||||
|
|
||||||
$interval = new DateInterval('PT15M');
|
$interval = new DateInterval('PT15M');
|
||||||
list($h, $m) = explode(':', $servicelength);
|
list($h, $m) = explode(':', $servicelength);
|
||||||
$serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M');
|
$serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M');
|
||||||
@@ -472,7 +498,6 @@ class Service_model extends CI_Model {
|
|||||||
$slotEnd = clone $current;
|
$slotEnd = clone $current;
|
||||||
$slotEnd->add($serviceDuration);
|
$slotEnd->add($serviceDuration);
|
||||||
if ($slotEnd > $finishTime) break;
|
if ($slotEnd > $finishTime) break;
|
||||||
if ($selectedDate == date('Y-m-d') && $current < new DateTime()) continue;
|
|
||||||
|
|
||||||
$startTimeStr = $current->format('H:i:s');
|
$startTimeStr = $current->format('H:i:s');
|
||||||
$endTimeStr = $slotEnd->format('H:i:s');
|
$endTimeStr = $slotEnd->format('H:i:s');
|
||||||
@@ -489,8 +514,9 @@ class Service_model extends CI_Model {
|
|||||||
if ($bookingQuery->num_rows() == 0) {
|
if ($bookingQuery->num_rows() == 0) {
|
||||||
$availableTimeArray[] = $startTimeStr;
|
$availableTimeArray[] = $startTimeStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_message('debug', 'Selected Date: ' . $selectedDate);
|
log_message('debug', 'Selected Date: ' . $selectedDate);
|
||||||
log_message('debug', 'Weekday: ' . $weekday);
|
log_message('debug', 'Weekday: ' . (isset($weekday) ? $weekday : 'N/A'));
|
||||||
log_message('debug', 'Worker ID: ' . $worker_id);
|
log_message('debug', 'Worker ID: ' . $worker_id);
|
||||||
log_message('debug', 'Query: ' . $this->db->last_query());
|
log_message('debug', 'Query: ' . $this->db->last_query());
|
||||||
}
|
}
|
||||||
@@ -500,6 +526,7 @@ class Service_model extends CI_Model {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function createBooking($bookingArray){
|
public function createBooking($bookingArray){
|
||||||
$this->load->database();
|
$this->load->database();
|
||||||
$query = $this->db->query("INSERT INTO bookings (
|
$query = $this->db->query("INSERT INTO bookings (
|
||||||
|
|||||||
@@ -459,25 +459,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setWorker(worker_id){
|
function setWorker(worker_id){
|
||||||
|
// csak az aktuális worker ID-t állítjuk be a formban
|
||||||
$('#worker_id').val(worker_id);
|
$('#worker_id').val(worker_id);
|
||||||
|
|
||||||
$.ajax({
|
// ne jelenjen meg worker név/kép a jobb oldali panelen
|
||||||
url: '<?php echo base_url();?>ajax',
|
$('.serviceBookingWorkerContainer').hide().html('');
|
||||||
type: 'POST',
|
|
||||||
data: {
|
|
||||||
action:'getSelectedWorker',
|
|
||||||
worker_id:worker_id
|
|
||||||
},
|
|
||||||
error: function() {
|
|
||||||
},
|
|
||||||
//dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
},
|
|
||||||
}).done(function(result){
|
|
||||||
$('.serviceBookingWorkerContainer').show();
|
|
||||||
$('.serviceBookingWorkerContainer').html(result);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -457,25 +457,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setWorker(worker_id){
|
function setWorker(worker_id){
|
||||||
|
// csak az aktuális worker ID-t állítjuk be a formban
|
||||||
$('#worker_id').val(worker_id);
|
$('#worker_id').val(worker_id);
|
||||||
|
|
||||||
$.ajax({
|
// ne jelenjen meg worker név/kép a jobb oldali panelen
|
||||||
url: '<?php echo base_url();?>ajax',
|
$('.serviceBookingWorkerContainer').hide().html('');
|
||||||
type: 'POST',
|
|
||||||
data: {
|
|
||||||
action:'getSelectedWorker',
|
|
||||||
worker_id:worker_id
|
|
||||||
},
|
|
||||||
error: function() {
|
|
||||||
},
|
|
||||||
//dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
},
|
|
||||||
}).done(function(result){
|
|
||||||
$('.serviceBookingWorkerContainer').show();
|
|
||||||
$('.serviceBookingWorkerContainer').html(result);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -458,25 +458,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setWorker(worker_id){
|
function setWorker(worker_id){
|
||||||
|
// csak az aktuális worker ID-t állítjuk be a formban
|
||||||
$('#worker_id').val(worker_id);
|
$('#worker_id').val(worker_id);
|
||||||
|
|
||||||
$.ajax({
|
// ne jelenjen meg worker név/kép a jobb oldali panelen
|
||||||
url: '<?php echo base_url();?>ajax',
|
$('.serviceBookingWorkerContainer').hide().html('');
|
||||||
type: 'POST',
|
|
||||||
data: {
|
|
||||||
action:'getSelectedWorker',
|
|
||||||
worker_id:worker_id
|
|
||||||
},
|
|
||||||
error: function() {
|
|
||||||
},
|
|
||||||
//dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
},
|
|
||||||
}).done(function(result){
|
|
||||||
$('.serviceBookingWorkerContainer').show();
|
|
||||||
$('.serviceBookingWorkerContainer').html(result);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user