add all files
This commit is contained in:
+356
@@ -0,0 +1,356 @@
|
||||
<?php
|
||||
class Service_model extends CI_Model {
|
||||
|
||||
function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function createService($serviceArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO services (
|
||||
service_type,
|
||||
service_category,
|
||||
service_name,
|
||||
service_description,
|
||||
service_price,
|
||||
service_time,
|
||||
service_note
|
||||
) VALUES(
|
||||
"'.$serviceArray['service_type'].'",
|
||||
"'.$serviceArray['service_category'].'",
|
||||
"'.$serviceArray['service_name'].'",
|
||||
"'.$serviceArray['service_description'].'",
|
||||
"'.$serviceArray['service_price'].'",
|
||||
"'.$serviceArray['service_time'].'",
|
||||
"'.$serviceArray['service_note'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateService($service_id, $serviceArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceByServiceType($service_type, $lang){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;');
|
||||
$serviceArray = array();
|
||||
if($query->num_rows() > 0){
|
||||
foreach($query->result() as $resultItem){
|
||||
|
||||
$service_category = '';
|
||||
$service_name = '';
|
||||
$service_description = '';
|
||||
|
||||
switch($lang){
|
||||
case 'no':
|
||||
$service_category = $resultItem->service_category_no;
|
||||
$service_name = $resultItem->service_name_no;
|
||||
$service_description = $resultItem->service_description_no;
|
||||
break;
|
||||
case 'en':
|
||||
$service_category = $resultItem->service_category_en;
|
||||
$service_name = $resultItem->service_name_en;
|
||||
$service_description = $resultItem->service_description_en;
|
||||
break;
|
||||
case 'hu':
|
||||
$service_category = $resultItem->service_category_hu;
|
||||
$service_name = $resultItem->service_name_hu;
|
||||
$service_description = $resultItem->service_description_hu;
|
||||
break;
|
||||
}
|
||||
|
||||
$resultItemTmp = array(
|
||||
'service_id' => $resultItem->service_id,
|
||||
'service_type' => $resultItem->service_type,
|
||||
'service_category' => $service_category,
|
||||
'service_name' => $service_name,
|
||||
'service_description' => $service_description,
|
||||
'service_price' => $resultItem->service_price,
|
||||
'service_time' => $resultItem->service_time
|
||||
);
|
||||
|
||||
$serviceArray[] = (object)$resultItemTmp;
|
||||
}
|
||||
}
|
||||
return $serviceArray;
|
||||
}
|
||||
|
||||
public function getServiceById($service_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkerById($worker_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvailableTimes($worker_id, $selectedDate, $servicelength){
|
||||
$this->load->database();
|
||||
$serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength);
|
||||
$service_length_time = strtotime($servicelength);
|
||||
$availableTimeArray = array();
|
||||
$selectedDayName = date('D', strtotime($selectedDate));
|
||||
$dayStartTime = new DateTime($selectedDate.' 10:00');
|
||||
$finishTime = new DateTime($selectedDate.' 18:00');
|
||||
if($selectedDayName == 'Sun'){
|
||||
return array();
|
||||
}
|
||||
elseif($selectedDayName == 'Sat'){
|
||||
$finishTime = new DateTime($selectedDate.' 16:00');
|
||||
}
|
||||
else{
|
||||
//finish time - selected service length
|
||||
$finishTime = new DateTime($selectedDate.' 18:00');
|
||||
|
||||
}
|
||||
|
||||
$today=date_create(date('Y-m-d'));
|
||||
$selectedDay=date_create($selectedDate);
|
||||
$dateDiff=date_diff($today,$selectedDay);
|
||||
|
||||
$tmpDateStart = date_create(date('2023-12-22'));
|
||||
$tmpDateEnd = date_create(date('2024-01-06'));
|
||||
|
||||
$datelength = new DateTime($servicelength);
|
||||
$diff = $datelength->diff($finishTime);
|
||||
|
||||
//max time for start
|
||||
$maxTime = $diff->h.':'.$diff->i.':00';
|
||||
$hours = (intval($diff->h)-10)*4+1;
|
||||
$mins = floor(intval($diff->i) / 15);
|
||||
$loopSteps = intval($hours) + intval($mins);
|
||||
|
||||
for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){
|
||||
$minutes_to_add_start = $periodIndex*15;
|
||||
$minutes_to_add_end = ($periodIndex+1)*15;
|
||||
$startTime = new DateTime($selectedDate.' 09:45');
|
||||
$endTime = new DateTime($selectedDate.' 09:45');
|
||||
$startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M'));
|
||||
$endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M'));
|
||||
$maxTimeObject = new DateTime($maxTime);
|
||||
|
||||
$tz = new DateTimeZone('Europe/Budapest');
|
||||
$addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz);
|
||||
$addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H'));
|
||||
$addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M'));
|
||||
|
||||
$currentStartTime = $startTime->format('H:i:00');
|
||||
$currentEndTime = $endTime->format('H:i:00');
|
||||
|
||||
|
||||
|
||||
/*
|
||||
echo '<< ';
|
||||
print_r($serviceLengthDateTime->format('H:i:00'));
|
||||
echo ' / ';
|
||||
print_r($currentStartTime);
|
||||
echo ' / ';
|
||||
print_r($addStartTimeAndLength->format('H:i:00'));
|
||||
echo ' >>';
|
||||
*/
|
||||
$query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND (
|
||||
/*start later and finish before*/
|
||||
(TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
/*check if not end service until next booking*/
|
||||
(TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
/*start later and finish later*/
|
||||
(TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
/*start before and finish before*/
|
||||
(TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)
|
||||
AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR
|
||||
|
||||
/**/
|
||||
(TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)
|
||||
AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR
|
||||
|
||||
/**/
|
||||
(TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME))
|
||||
);
|
||||
');
|
||||
|
||||
$now = strtotime(date('H:i:s')) + 60*60;
|
||||
$timezone = 'Europe/Budapest';
|
||||
$todayStartTime = strtotime($currentStartTime.' '.$timezone);
|
||||
$minDiff = ($todayStartTime - $now) / 60;
|
||||
|
||||
if($dateDiff->format("%R%a") == 0 && $minDiff > 0){
|
||||
if($query->num_rows() == 0){
|
||||
$availableTimeArray[] = $currentStartTime;
|
||||
}
|
||||
}
|
||||
elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){
|
||||
if($query->num_rows() == 0){
|
||||
$availableTimeArray[] = $currentStartTime;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $availableTimeArray;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function createBooking($bookingArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query("INSERT INTO bookings (
|
||||
guest_name,
|
||||
guest_email,
|
||||
guest_phone,
|
||||
worker_id,
|
||||
booking_date,
|
||||
booking_start_time,
|
||||
booking_finish_time,
|
||||
service_ids,
|
||||
guest_confirmed,
|
||||
guest_confirm_code
|
||||
) VALUES(
|
||||
'".$bookingArray['guest_name']."',
|
||||
'".$bookingArray['guest_email']."',
|
||||
'".$bookingArray['guest_phone']."',
|
||||
'".$bookingArray['worker_id']."',
|
||||
'".$bookingArray['booking_date']."',
|
||||
'".$bookingArray['booking_start_time']."',
|
||||
'".$bookingArray['booking_finish_time']."',
|
||||
'".$bookingArray['service_ids']."',
|
||||
'".$bookingArray['guest_confirmed']."',
|
||||
'".$bookingArray['guest_confirm_code']."'
|
||||
);");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user