add all files
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
class Log_model extends CI_Model {
|
||||
|
||||
function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function addLog($eventType, $eventContent, $username=""){
|
||||
$this->load->database();
|
||||
$query = $this->db->query("INSERT INTO system_log(event_type, event_content, username) VALUES('".$eventType."','".$eventContent."','".$username."');");
|
||||
}
|
||||
|
||||
public function getAllLoginfo(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM system_log ORDER BY event_datetime DESC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Executable
+252
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
class Module_model extends CI_Model {
|
||||
|
||||
function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function getAllModule(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM modules ORDER BY module_name ASC');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getModuleById($module_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM modules WHERE module_id = "'.$module_id.'" LIMIT 1;');
|
||||
return $query->result()[0];
|
||||
}
|
||||
|
||||
public function getModuleBySlug($module_slug){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM modules WHERE module_slug = "'.$module_slug.'" LIMIT 1;');
|
||||
return $query->result()[0];
|
||||
}
|
||||
|
||||
public function getUserModules($userId){
|
||||
$this->load->database();
|
||||
$this->load->model('User_model');
|
||||
|
||||
$currentUser = $this->User_model->getUserById($userId);
|
||||
|
||||
$query = $this->db->query('SELECT * FROM modules');
|
||||
$all_module = $query->result();
|
||||
$activeModules = array();
|
||||
$activeModuleIds = array();
|
||||
|
||||
foreach($all_module as $moduleItem){
|
||||
|
||||
//check groupmodules
|
||||
$moduleGroupIds = unserialize($moduleItem->permission_group_ids);
|
||||
$moduleUserIds = unserialize($moduleItem->permission_ids);
|
||||
|
||||
if(!empty($moduleItem->permission_ids)){
|
||||
}
|
||||
|
||||
//check group ids
|
||||
if(is_array($moduleGroupIds)){
|
||||
if(in_array($currentUser->permission_id, $moduleGroupIds)){
|
||||
if(!in_array($moduleItem->module_id, $activeModuleIds)){
|
||||
|
||||
$activeModules[] = $moduleItem;
|
||||
$activeModuleIds[] = $moduleItem->module_id;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//check user_ids
|
||||
|
||||
if(is_array($moduleUserIds)){
|
||||
if(in_array($currentUser->user_id, $moduleUserIds)){
|
||||
|
||||
if(!in_array($moduleItem->module_id, $activeModuleIds)){
|
||||
$activeModules[] = $moduleItem;
|
||||
$activeModuleIds[] = $moduleItem->module_id;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return $activeModules;
|
||||
}
|
||||
|
||||
|
||||
public function is_module_available($module_id, $userId){
|
||||
$this->load->database();
|
||||
$this->load->model('User_model');
|
||||
|
||||
$currentModule = $this->getModuleById($module_id);
|
||||
$currentUser = $this->User_model->getUserById($userId);
|
||||
$moduleGroupIds = unserialize($currentModule->permission_group_ids);
|
||||
$moduleUserIds = unserialize($currentModule->permission_ids);
|
||||
$moduleIsOk = 0;
|
||||
|
||||
//if($currentUser->permission_slug == 'admin' && $module_id != '5'){
|
||||
if($currentUser->permission_slug == 'admin'){
|
||||
$moduleIsOk = 1;
|
||||
}
|
||||
|
||||
//check groupmodules
|
||||
if(is_array($moduleGroupIds)){
|
||||
if(in_array($currentUser->permission_id, $moduleGroupIds)){
|
||||
$moduleIsOk = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//check user_ids
|
||||
if(is_array($moduleUserIds)){
|
||||
if(in_array($currentUser->user_id, $moduleUserIds)){
|
||||
$moduleIsOk = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if($moduleIsOk){
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function is_userId_available_in_module($module_id, $userId){
|
||||
$this->load->database();
|
||||
$this->load->model('User_model');
|
||||
|
||||
$currentModule = $this->getModuleById($module_id);
|
||||
$userIds = unserialize($currentModule->permission_ids);
|
||||
|
||||
|
||||
if(is_array($userIds)){
|
||||
if(in_array($userId, $userIds)){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function is_groupId_available_in_module($module_id, $groupId){
|
||||
$this->load->database();
|
||||
$this->load->model('User_model');
|
||||
|
||||
$currentModule = $this->getModuleById($module_id);
|
||||
$moduleGroupIds = unserialize($currentModule->permission_group_ids);
|
||||
|
||||
if(is_array($moduleGroupIds)){
|
||||
if(in_array($groupId, $moduleGroupIds)){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function updateModule($fieldName, $module_id, $moduleUserArray){
|
||||
$this->load->database();
|
||||
|
||||
if(!empty($moduleUserArray)){
|
||||
$query = $this->db->query("UPDATE modules SET ".$fieldName." ='".serialize($moduleUserArray)."' WHERE module_id = '".$module_id."';");
|
||||
}
|
||||
else{
|
||||
$query = $this->db->query("UPDATE modules SET ".$fieldName." ='' WHERE module_id = '".$module_id."';");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function getModulesByPermissionSlug($permissionSlug){
|
||||
$this->load->database();
|
||||
$this->load->model('Module_model');
|
||||
$selectedPermission = $this->Module_model->getPermissionBySlug($permissionSlug);
|
||||
|
||||
$query = $this->db->query('SELECT * FROM modules;');
|
||||
$results = $query->result();
|
||||
$resultArray = array();
|
||||
foreach($results as $resultItem){
|
||||
$permissionIdsArray = explode(',', $resultItem->permission_ids);
|
||||
if(in_array($selectedPermission->permission_id, $permissionIdsArray)){
|
||||
$resultArray[] = $resultItem;
|
||||
}
|
||||
}
|
||||
return $resultArray;
|
||||
}
|
||||
|
||||
public function getPermissionBySlug($permissionSlug){
|
||||
$this->load->database();
|
||||
|
||||
$query = $this->db->query('SELECT * FROM permissions WHERE permission_slug = "'.$permissionSlug.'";');
|
||||
if($query->num_rows() == 1){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function user_can_access_this_module($moduleSlug, $userId){
|
||||
$this->load->database();
|
||||
$this->load->model('User_model');
|
||||
$selectedUser = $this->User_model->getUserById($userId);
|
||||
|
||||
$query = $this->db->query('SELECT * FROM modules WHERE module_slug = "'.$moduleSlug.'" LIMIT 1;');
|
||||
|
||||
if($query->num_rows() == 1){
|
||||
$result = $query->result()[0];
|
||||
$permissionArray = explode(',', $result->permission_ids);
|
||||
if(in_array($selectedUser->permission_id, $permissionArray)){
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
Executable
+695
@@ -0,0 +1,695 @@
|
||||
<?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_no,
|
||||
service_category_en,
|
||||
service_category_hu,
|
||||
service_name_no,
|
||||
service_name_en,
|
||||
service_name_hu,
|
||||
service_description_no,
|
||||
service_description_en,
|
||||
service_description_hu,
|
||||
service_price,
|
||||
service_time,
|
||||
service_category_id,
|
||||
is_enabled
|
||||
) VALUES(
|
||||
"'.$serviceArray['service_type'].'",
|
||||
"'.$serviceArray['service_category_no'].'",
|
||||
"'.$serviceArray['service_category_en'].'",
|
||||
"'.$serviceArray['service_category_hu'].'",
|
||||
"'.$serviceArray['service_name_no'].'",
|
||||
"'.$serviceArray['service_name_en'].'",
|
||||
"'.$serviceArray['service_name_hu'].'",
|
||||
"'.$serviceArray['service_description_no'].'",
|
||||
"'.$serviceArray['service_description_en'].'",
|
||||
"'.$serviceArray['service_description_hu'].'",
|
||||
"'.$serviceArray['service_price'].'",
|
||||
"'.$serviceArray['service_time'].'",
|
||||
"'.$serviceArray['service_category_id'].'",
|
||||
"'.$serviceArray['is_enabled'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function createServiceCategory($serviceCategoryArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO service_categories (
|
||||
serv_cat_slug,
|
||||
serv_cat_name
|
||||
) VALUES(
|
||||
"'.$serviceCategoryArray['serv_cat_slug'].'",
|
||||
"'.$serviceCategoryArray['serv_cat_name'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateService($service_id, $serviceArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateServiceCategory($service_category_id, $serviceCategoryArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceCategoryArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function createWorker($workerArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO workers (
|
||||
worker_name,
|
||||
worker_profile_img,
|
||||
worker_info,
|
||||
is_beauty,
|
||||
is_barber,
|
||||
service_category_id
|
||||
) VALUES(
|
||||
"'.$workerArray['worker_name'].'",
|
||||
"'.$workerArray['worker_profile_img'].'",
|
||||
"'.$workerArray['worker_info'].'",
|
||||
"'.$workerArray['is_beauty'].'",
|
||||
"'.$workerArray['is_barber'].'",
|
||||
"'.$workerArray['service_category_id'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateWorker($worker_id, $workerArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($workerArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateBooking($booking_id, $bookingArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($bookingArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';");
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceByServiceType($service_type, $lang){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" 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,
|
||||
'serv_cat_slug' => $resultItem->serv_cat_slug,
|
||||
'service_category_id' => $resultItem->service_category_id
|
||||
);
|
||||
|
||||
$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 getServiceCategoryById($service_category_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceCategories(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvailableServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
|
||||
$serviceArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$serviceTmp = array(
|
||||
'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')',
|
||||
'service_id' => $resultItem->service_id
|
||||
);
|
||||
|
||||
$serviceArray[] = $serviceTmp;
|
||||
}
|
||||
return $serviceArray;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkersByCategorySlug($serv_cat_slug){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getActiveWorkers($subpage = ''){
|
||||
$this->load->database();
|
||||
$subpageString = '';
|
||||
|
||||
if($subpage == 'beauty'){
|
||||
$subpageString = ' AND is_beauty = "1"';
|
||||
}
|
||||
else if($subpage == 'barber'){
|
||||
$subpageString = ' AND is_barber = "1"';
|
||||
}
|
||||
else{
|
||||
$subpageString = '';
|
||||
}
|
||||
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function deleteBooking($booking_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";');
|
||||
}
|
||||
|
||||
public function getAllBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookingsByWorkerID($workerID){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getBookingById($booking_id){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) {
|
||||
return [];
|
||||
}
|
||||
$ts = strtotime($selectedDate);
|
||||
$debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts);
|
||||
log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}");
|
||||
log_message('error', "⏱ Timezone: " . date_default_timezone_get());
|
||||
$serviceLengthTime = strtotime($servicelength);
|
||||
$availableTimeArray = [];
|
||||
|
||||
// Check override first
|
||||
$overrideQuery = $this->db->query("
|
||||
SELECT * FROM worker_schedule_overrides
|
||||
WHERE worker_id = '$worker_id' AND date = '$selectedDate'
|
||||
LIMIT 1
|
||||
");
|
||||
|
||||
if ($overrideQuery->num_rows() > 0) {
|
||||
$override = $overrideQuery->row();
|
||||
|
||||
if ($override->is_day_off) return [];
|
||||
|
||||
$dayStartTime = new DateTime($selectedDate.' '.$override->start_time);
|
||||
$finishTime = new DateTime($selectedDate.' '.$override->end_time);
|
||||
} else {
|
||||
$weekday = date('w', strtotime($selectedDate)); // 0 = Sunday, 6 = Saturday
|
||||
$weekNumber = date('W', strtotime($selectedDate));
|
||||
$isOddWeek = $weekNumber % 2 !== 0;
|
||||
|
||||
$scheduleQuery = $this->db->query("
|
||||
SELECT * FROM worker_schedule
|
||||
WHERE worker_id = '{$worker_id}'
|
||||
AND weekday = '{$weekday}'
|
||||
AND (
|
||||
is_alternate_week = 0
|
||||
OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ")
|
||||
)
|
||||
");
|
||||
|
||||
if ($scheduleQuery->num_rows() == 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$schedule = $scheduleQuery->row();
|
||||
$dayStartTime = new DateTime($selectedDate . ' ' . $schedule->start_time);
|
||||
$finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time);
|
||||
}
|
||||
|
||||
$interval = new DateInterval('PT15M');
|
||||
list($h, $m) = explode(':', $servicelength);
|
||||
$serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M');
|
||||
|
||||
for ($current = clone $dayStartTime; $current < $finishTime; $current->add($interval)) {
|
||||
$slotEnd = clone $current;
|
||||
$slotEnd->add($serviceDuration);
|
||||
if ($slotEnd > $finishTime) break;
|
||||
if ($selectedDate == date('Y-m-d') && $current < new DateTime()) continue;
|
||||
|
||||
$startTimeStr = $current->format('H:i:s');
|
||||
$endTimeStr = $slotEnd->format('H:i:s');
|
||||
|
||||
$bookingQuery = $this->db->query("
|
||||
SELECT * FROM bookings
|
||||
WHERE booking_date = '{$selectedDate}'
|
||||
AND worker_id = '{$worker_id}'
|
||||
AND (
|
||||
(booking_start_time < '{$endTimeStr}' AND booking_finish_time > '{$startTimeStr}')
|
||||
)
|
||||
");
|
||||
|
||||
if ($bookingQuery->num_rows() == 0) {
|
||||
$availableTimeArray[] = $startTimeStr;
|
||||
}
|
||||
log_message('debug', 'Selected Date: ' . $selectedDate);
|
||||
log_message('debug', 'Weekday: ' . $weekday);
|
||||
log_message('debug', 'Worker ID: ' . $worker_id);
|
||||
log_message('debug', 'Query: ' . $this->db->last_query());
|
||||
}
|
||||
|
||||
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']."'
|
||||
);");
|
||||
}
|
||||
|
||||
public function getWorkerSchedule($worker_id) {
|
||||
return $this->db
|
||||
->where('worker_id', $worker_id)
|
||||
->order_by('weekday', 'ASC')
|
||||
->get('worker_schedule')
|
||||
->result();
|
||||
}
|
||||
|
||||
public function clearWorkerSchedule($worker_id) {
|
||||
$this->load->database();
|
||||
$this->db->where('worker_id', $worker_id)->delete('worker_schedule');
|
||||
}
|
||||
|
||||
public function addWorkerSchedule($data) {
|
||||
$this->db->insert('worker_schedule', $data);
|
||||
}
|
||||
|
||||
public function getAllWorkerSchedules() {
|
||||
$query = $this->db->query('SELECT * FROM worker_schedule');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getAllWorkerOverrides() {
|
||||
$query = $this->db->query('SELECT * FROM worker_schedule_overrides');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkerScheduleOverrides() {
|
||||
$this->load->database();
|
||||
$query = $this->db->query("
|
||||
SELECT o.*, w.worker_name
|
||||
FROM worker_schedule_overrides o
|
||||
JOIN workers w ON o.worker_id = w.worker_id
|
||||
ORDER BY o.date DESC
|
||||
");
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function createWorkerScheduleOverride($override) {
|
||||
$this->db->insert('worker_schedule_overrides', $override);
|
||||
}
|
||||
|
||||
public function getWorkerScheduleByDay($worker_id, $weekday) {
|
||||
$this->db->where('worker_id', $worker_id);
|
||||
$this->db->where('weekday', $weekday);
|
||||
$query = $this->db->get('worker_schedule');
|
||||
return $query->row(); // null if no row
|
||||
}
|
||||
|
||||
public function isEvenWeek($date) {
|
||||
return ((int)date('W', strtotime($date)) % 2) === 0;
|
||||
}
|
||||
|
||||
public function isWorkerAvailableThisWeek($worker_id, $selectedDate) {
|
||||
$weekday = date('w', strtotime($selectedDate));
|
||||
$weekNumber = date('W', strtotime($selectedDate));
|
||||
$isOddWeek = $weekNumber % 2 !== 0;
|
||||
|
||||
$query = $this->db->query("
|
||||
SELECT * FROM worker_schedule
|
||||
WHERE worker_id = '{$worker_id}'
|
||||
AND weekday = '{$weekday}'
|
||||
AND (
|
||||
is_alternate_week = 0
|
||||
OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ")
|
||||
)
|
||||
");
|
||||
|
||||
return $query->num_rows() > 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+568
@@ -0,0 +1,568 @@
|
||||
<?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_no,
|
||||
service_category_en,
|
||||
service_category_hu,
|
||||
service_name_no,
|
||||
service_name_en,
|
||||
service_name_hu,
|
||||
service_description_no,
|
||||
service_description_en,
|
||||
service_description_hu,
|
||||
service_price,
|
||||
service_time,
|
||||
is_enabled
|
||||
) VALUES(
|
||||
"'.$serviceArray['service_type'].'",
|
||||
"'.$serviceArray['service_category_no'].'",
|
||||
"'.$serviceArray['service_category_en'].'",
|
||||
"'.$serviceArray['service_category_hu'].'",
|
||||
"'.$serviceArray['service_name_no'].'",
|
||||
"'.$serviceArray['service_name_en'].'",
|
||||
"'.$serviceArray['service_name_hu'].'",
|
||||
"'.$serviceArray['service_description_no'].'",
|
||||
"'.$serviceArray['service_description_en'].'",
|
||||
"'.$serviceArray['service_description_hu'].'",
|
||||
"'.$serviceArray['service_price'].'",
|
||||
"'.$serviceArray['service_time'].'",
|
||||
"'.$serviceArray['is_enabled'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateService($service_id, $serviceArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function createWorker($workerArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO workers (
|
||||
worker_name,
|
||||
worker_profile_img,
|
||||
worker_info
|
||||
) VALUES(
|
||||
"'.$workerArray['worker_name'].'",
|
||||
"'.$workerArray['worker_profile_img'].'",
|
||||
"'.$workerArray['worker_info'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateWorker($worker_id, $workerArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($workerArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateBooking($booking_id, $bookingArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($bookingArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';");
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceByServiceType($service_type, $lang){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" AND is_enabled = "1" AND is_deleted != "1" 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 getAllServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvailableServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
|
||||
$serviceArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$serviceTmp = array(
|
||||
'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')',
|
||||
'service_id' => $resultItem->service_id
|
||||
);
|
||||
|
||||
$serviceArray[] = $serviceTmp;
|
||||
}
|
||||
return $serviceArray;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getActiveWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" AND is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function deleteBooking($booking_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";');
|
||||
}
|
||||
|
||||
public function getAllBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getBookingById($booking_id){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
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('2024-02-29'));
|
||||
$tmpDateEnd = date_create(date('2024-03-07'));
|
||||
|
||||
$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 (
|
||||
|
||||
(TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
|
||||
(TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
|
||||
(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
|
||||
|
||||
|
||||
(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))
|
||||
);
|
||||
');
|
||||
*/
|
||||
|
||||
|
||||
$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']."'
|
||||
);");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+685
@@ -0,0 +1,685 @@
|
||||
<?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_no,
|
||||
service_category_en,
|
||||
service_category_hu,
|
||||
service_name_no,
|
||||
service_name_en,
|
||||
service_name_hu,
|
||||
service_description_no,
|
||||
service_description_en,
|
||||
service_description_hu,
|
||||
service_price,
|
||||
service_time,
|
||||
service_category_id,
|
||||
is_enabled
|
||||
) VALUES(
|
||||
"'.$serviceArray['service_type'].'",
|
||||
"'.$serviceArray['service_category_no'].'",
|
||||
"'.$serviceArray['service_category_en'].'",
|
||||
"'.$serviceArray['service_category_hu'].'",
|
||||
"'.$serviceArray['service_name_no'].'",
|
||||
"'.$serviceArray['service_name_en'].'",
|
||||
"'.$serviceArray['service_name_hu'].'",
|
||||
"'.$serviceArray['service_description_no'].'",
|
||||
"'.$serviceArray['service_description_en'].'",
|
||||
"'.$serviceArray['service_description_hu'].'",
|
||||
"'.$serviceArray['service_price'].'",
|
||||
"'.$serviceArray['service_time'].'",
|
||||
"'.$serviceArray['service_category_id'].'",
|
||||
"'.$serviceArray['is_enabled'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function createServiceCategory($serviceCategoryArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO service_categories (
|
||||
serv_cat_slug,
|
||||
serv_cat_name
|
||||
) VALUES(
|
||||
"'.$serviceCategoryArray['serv_cat_slug'].'",
|
||||
"'.$serviceCategoryArray['serv_cat_name'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateService($service_id, $serviceArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateServiceCategory($service_category_id, $serviceCategoryArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceCategoryArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function createWorker($workerArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO workers (
|
||||
worker_name,
|
||||
worker_profile_img,
|
||||
worker_info,
|
||||
is_beauty,
|
||||
is_barber,
|
||||
service_category_id
|
||||
) VALUES(
|
||||
"'.$workerArray['worker_name'].'",
|
||||
"'.$workerArray['worker_profile_img'].'",
|
||||
"'.$workerArray['worker_info'].'",
|
||||
"'.$workerArray['is_beauty'].'",
|
||||
"'.$workerArray['is_barber'].'",
|
||||
"'.$workerArray['service_category_id'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateWorker($worker_id, $workerArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($workerArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateBooking($booking_id, $bookingArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($bookingArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';");
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceByServiceType($service_type, $lang){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" 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,
|
||||
'serv_cat_slug' => $resultItem->serv_cat_slug,
|
||||
'service_category_id' => $resultItem->service_category_id
|
||||
);
|
||||
|
||||
$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 getServiceCategoryById($service_category_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceCategories(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvailableServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
|
||||
$serviceArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$serviceTmp = array(
|
||||
'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')',
|
||||
'service_id' => $resultItem->service_id
|
||||
);
|
||||
|
||||
$serviceArray[] = $serviceTmp;
|
||||
}
|
||||
return $serviceArray;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkersByCategorySlug($serv_cat_slug){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getActiveWorkers($subpage = ''){
|
||||
$this->load->database();
|
||||
$subpageString = '';
|
||||
|
||||
if($subpage == 'beauty'){
|
||||
$subpageString = ' AND is_beauty = "1"';
|
||||
}
|
||||
else if($subpage == 'barber'){
|
||||
$subpageString = ' AND is_barber = "1"';
|
||||
}
|
||||
else{
|
||||
$subpageString = '';
|
||||
}
|
||||
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function deleteBooking($booking_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";');
|
||||
}
|
||||
|
||||
public function getAllBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookingsByWorkerID($workerID){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getBookingById($booking_id){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
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');
|
||||
$lastBookingLimitDate = date('Y-m-d', strtotime("+3 months", strtotime(date('Y-m-d'))));
|
||||
|
||||
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('2024-02-29'));
|
||||
$tmpDateEnd = date_create(date('2024-03-07'));
|
||||
|
||||
$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 (
|
||||
|
||||
(TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
|
||||
(TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR
|
||||
|
||||
|
||||
(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
|
||||
|
||||
|
||||
(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))
|
||||
);
|
||||
');
|
||||
*/
|
||||
|
||||
|
||||
$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($lastBookingLimitDate >= $selectedDate){
|
||||
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']."'
|
||||
);");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+677
@@ -0,0 +1,677 @@
|
||||
<?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_no,
|
||||
service_category_en,
|
||||
service_category_hu,
|
||||
service_name_no,
|
||||
service_name_en,
|
||||
service_name_hu,
|
||||
service_description_no,
|
||||
service_description_en,
|
||||
service_description_hu,
|
||||
service_price,
|
||||
service_time,
|
||||
service_category_id,
|
||||
is_enabled
|
||||
) VALUES(
|
||||
"'.$serviceArray['service_type'].'",
|
||||
"'.$serviceArray['service_category_no'].'",
|
||||
"'.$serviceArray['service_category_en'].'",
|
||||
"'.$serviceArray['service_category_hu'].'",
|
||||
"'.$serviceArray['service_name_no'].'",
|
||||
"'.$serviceArray['service_name_en'].'",
|
||||
"'.$serviceArray['service_name_hu'].'",
|
||||
"'.$serviceArray['service_description_no'].'",
|
||||
"'.$serviceArray['service_description_en'].'",
|
||||
"'.$serviceArray['service_description_hu'].'",
|
||||
"'.$serviceArray['service_price'].'",
|
||||
"'.$serviceArray['service_time'].'",
|
||||
"'.$serviceArray['service_category_id'].'",
|
||||
"'.$serviceArray['is_enabled'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function createServiceCategory($serviceCategoryArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO service_categories (
|
||||
serv_cat_slug,
|
||||
serv_cat_name
|
||||
) VALUES(
|
||||
"'.$serviceCategoryArray['serv_cat_slug'].'",
|
||||
"'.$serviceCategoryArray['serv_cat_name'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateService($service_id, $serviceArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateServiceCategory($service_category_id, $serviceCategoryArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($serviceCategoryArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function createWorker($workerArray){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('INSERT INTO workers (
|
||||
worker_name,
|
||||
worker_profile_img,
|
||||
worker_info,
|
||||
is_beauty,
|
||||
is_barber,
|
||||
service_category_id
|
||||
) VALUES(
|
||||
"'.$workerArray['worker_name'].'",
|
||||
"'.$workerArray['worker_profile_img'].'",
|
||||
"'.$workerArray['worker_info'].'",
|
||||
"'.$workerArray['is_beauty'].'",
|
||||
"'.$workerArray['is_barber'].'",
|
||||
"'.$workerArray['service_category_id'].'"
|
||||
);');
|
||||
}
|
||||
|
||||
public function updateWorker($worker_id, $workerArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($workerArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateBooking($booking_id, $bookingArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($bookingArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';");
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceByServiceType($service_type, $lang){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" 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,
|
||||
'serv_cat_slug' => $resultItem->serv_cat_slug,
|
||||
'service_category_id' => $resultItem->service_category_id
|
||||
);
|
||||
|
||||
$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 getServiceCategoryById($service_category_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllServiceCategories(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvailableServices(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
|
||||
$serviceArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$serviceTmp = array(
|
||||
'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')',
|
||||
'service_id' => $resultItem->service_id
|
||||
);
|
||||
|
||||
$serviceArray[] = $serviceTmp;
|
||||
}
|
||||
return $serviceArray;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllWorkers(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkersByCategorySlug($serv_cat_slug){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getActiveWorkers($subpage = ''){
|
||||
$this->load->database();
|
||||
$subpageString = '';
|
||||
|
||||
if($subpage == 'beauty'){
|
||||
$subpageString = ' AND is_beauty = "1"';
|
||||
}
|
||||
else if($subpage == 'barber'){
|
||||
$subpageString = ' AND is_barber = "1"';
|
||||
}
|
||||
else{
|
||||
$subpageString = '';
|
||||
}
|
||||
|
||||
$query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function deleteBooking($booking_id){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";');
|
||||
}
|
||||
|
||||
public function getAllBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookings(){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getActualBookingsByWorkerID($workerID){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;');
|
||||
|
||||
if($query->num_rows() > 0){
|
||||
$resultsArray = array();
|
||||
foreach($query->result() as $resultItem){
|
||||
$resultTmp = (array)$resultItem;
|
||||
if($resultTmp['service_ids'] != ''){
|
||||
$servicesArray = unserialize($resultTmp['service_ids']);
|
||||
if(is_array($servicesArray)){
|
||||
$services = array();
|
||||
foreach($servicesArray as $servicesArrayItem){
|
||||
$selectedService = $this->Service_model->getServiceById($servicesArrayItem);
|
||||
$services[] = (object)array(
|
||||
'service_type' => $selectedService->service_type,
|
||||
'service_name' => $selectedService->service_name_hu,
|
||||
'service_price' => $selectedService->service_price,
|
||||
'service_time' => $selectedService->service_time
|
||||
);
|
||||
}
|
||||
$resultTmp['services'] = $services;
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$resultTmp['services'] = array();
|
||||
|
||||
}
|
||||
$resultsArray[] = (object)$resultTmp;
|
||||
}
|
||||
|
||||
|
||||
return $resultsArray;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getBookingById($booking_id){
|
||||
$this->load->database();
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) {
|
||||
return [];
|
||||
}
|
||||
$ts = strtotime($selectedDate);
|
||||
$debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts);
|
||||
log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}");
|
||||
log_message('error', "⏱ Timezone: " . date_default_timezone_get());
|
||||
$serviceLengthTime = strtotime($servicelength);
|
||||
$availableTimeArray = [];
|
||||
|
||||
// Check override first
|
||||
$overrideQuery = $this->db->query("
|
||||
SELECT * FROM worker_schedule_overrides
|
||||
WHERE worker_id = '$worker_id' AND date = '$selectedDate'
|
||||
LIMIT 1
|
||||
");
|
||||
|
||||
if ($overrideQuery->num_rows() > 0) {
|
||||
$override = $overrideQuery->row();
|
||||
|
||||
if ($override->is_day_off) return [];
|
||||
|
||||
$dayStartTime = new DateTime($selectedDate.' '.$override->start_time);
|
||||
$finishTime = new DateTime($selectedDate.' '.$override->end_time);
|
||||
} else {
|
||||
$weekday = date('w', strtotime($selectedDate)); // 0 = Sunday, 6 = Saturday
|
||||
$weekNumber = date('W', strtotime($selectedDate));
|
||||
$isOddWeek = $weekNumber % 2 !== 0;
|
||||
|
||||
$scheduleQuery = $this->db->query("
|
||||
SELECT * FROM worker_schedule
|
||||
WHERE worker_id = '{$worker_id}'
|
||||
AND weekday = '{$weekday}'
|
||||
AND (
|
||||
is_alternate_week = 0
|
||||
OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ")
|
||||
)
|
||||
");
|
||||
|
||||
if ($scheduleQuery->num_rows() == 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$schedule = $scheduleQuery->row();
|
||||
$dayStartTime = new DateTime($selectedDate . ' ' . $schedule->start_time);
|
||||
$finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time);
|
||||
}
|
||||
|
||||
$interval = new DateInterval('PT15M');
|
||||
list($h, $m) = explode(':', $servicelength);
|
||||
$serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M');
|
||||
|
||||
for ($current = clone $dayStartTime; $current < $finishTime; $current->add($interval)) {
|
||||
$slotEnd = clone $current;
|
||||
$slotEnd->add($serviceDuration);
|
||||
if ($slotEnd > $finishTime) break;
|
||||
if ($selectedDate == date('Y-m-d') && $current < new DateTime()) continue;
|
||||
|
||||
$startTimeStr = $current->format('H:i:s');
|
||||
$endTimeStr = $slotEnd->format('H:i:s');
|
||||
|
||||
$bookingQuery = $this->db->query("
|
||||
SELECT * FROM bookings
|
||||
WHERE booking_date = '{$selectedDate}'
|
||||
AND worker_id = '{$worker_id}'
|
||||
AND (
|
||||
(booking_start_time < '{$endTimeStr}' AND booking_finish_time > '{$startTimeStr}')
|
||||
)
|
||||
");
|
||||
|
||||
if ($bookingQuery->num_rows() == 0) {
|
||||
$availableTimeArray[] = $startTimeStr;
|
||||
}
|
||||
log_message('debug', 'Selected Date: ' . $selectedDate);
|
||||
log_message('debug', 'Weekday: ' . $weekday);
|
||||
log_message('debug', 'Worker ID: ' . $worker_id);
|
||||
log_message('debug', 'Query: ' . $this->db->last_query());
|
||||
}
|
||||
|
||||
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']."'
|
||||
);");
|
||||
}
|
||||
|
||||
public function getWorkerSchedule($worker_id) {
|
||||
return $this->db
|
||||
->where('worker_id', $worker_id)
|
||||
->order_by('weekday', 'ASC')
|
||||
->get('worker_schedule')
|
||||
->result();
|
||||
}
|
||||
|
||||
public function clearWorkerSchedule($worker_id) {
|
||||
$this->load->database();
|
||||
$this->db->where('worker_id', $worker_id)->delete('worker_schedule');
|
||||
}
|
||||
|
||||
public function addWorkerSchedule($data) {
|
||||
$this->db->insert('worker_schedule', $data);
|
||||
}
|
||||
|
||||
public function getAllWorkerSchedules() {
|
||||
$query = $this->db->query('SELECT * FROM worker_schedule');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getAllWorkerOverrides() {
|
||||
$query = $this->db->query('SELECT * FROM worker_schedule_overrides');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getWorkerScheduleOverrides() {
|
||||
$this->load->database();
|
||||
$query = $this->db->query("
|
||||
SELECT o.*, w.worker_name
|
||||
FROM worker_schedule_overrides o
|
||||
JOIN workers w ON o.worker_id = w.worker_id
|
||||
ORDER BY o.date DESC
|
||||
");
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function createWorkerScheduleOverride($override) {
|
||||
$this->db->insert('worker_schedule_overrides', $override);
|
||||
}
|
||||
|
||||
public function getWorkerScheduleByDay($worker_id, $weekday) {
|
||||
$this->db->where('worker_id', $worker_id);
|
||||
$this->db->where('weekday', $weekday);
|
||||
$query = $this->db->get('worker_schedule');
|
||||
return $query->row(); // null if no row
|
||||
}
|
||||
|
||||
public function isEvenWeek($date) {
|
||||
return ((int)date('W', strtotime($date)) % 2) === 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Executable
+224
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
|
||||
require getcwd().'/vendor/autoload.php';
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\SMTP;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
|
||||
class User_model extends CI_Model {
|
||||
|
||||
function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function userCanLogin($username, $password){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'" AND password = "'.hash('sha256', $password).'" AND is_enabled = 1 LIMIT 1');
|
||||
|
||||
if($query->num_rows() == 1){
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllUser(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug ORDER BY fullname ASC');
|
||||
$userResults = $query->result();
|
||||
|
||||
foreach($userResults as $userResultItem){
|
||||
if($userResultItem->profile_img_url == ''){
|
||||
$userResultItem->profile_img_url = base_url().'img/default_profile.jpg';
|
||||
}
|
||||
}
|
||||
return $userResults;
|
||||
}
|
||||
|
||||
public function getUserByUsername($username){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE username = "'.$username.'" LIMIT 1');
|
||||
if($query->num_rows() == 1){
|
||||
|
||||
if($query->result()[0]->profile_img_url == ''){
|
||||
$query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg';
|
||||
}
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllUserPermission(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM permissions;');
|
||||
if($query->num_rows() > 0){
|
||||
return $query->result();
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public function getUserById($userId){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE user_id = "'.$userId.'" LIMIT 1');
|
||||
if($query->num_rows() == 1){
|
||||
if($query->result()[0]->profile_img_url == ''){
|
||||
$query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg';
|
||||
}
|
||||
return $query->result()[0];
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteUser($userId){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('DELETE FROM users WHERE user_id = "'.$userId.'";');
|
||||
}
|
||||
|
||||
public function isUsernameAvailable($username){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'";');
|
||||
if($query->num_rows() == 1){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
public function updateUser($userId, $userArray){
|
||||
$this->load->database();
|
||||
|
||||
foreach($userArray as $propertyKey => $propertyValue){
|
||||
$query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE user_id = "'.$userId.'";');
|
||||
}
|
||||
}
|
||||
|
||||
public function addNewUser($userArray){
|
||||
$this->load->database();
|
||||
|
||||
if(!is_object($this->getUserByUsername($userArray['username']))){
|
||||
$query = $this->db->query('INSERT INTO users (username, password, fullname, permission_slug, is_enabled, user_notes) VALUES("'.$userArray['username'].'", "'.hash('sha256', $userArray['password']).'", "'.$userArray['fullname'].'", "'.$userArray['permission_slug'].'", "'.$userArray['is_enabled'].'", "'.$userArray['user_notes'].'");');
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getAllUserGroup(){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM permissions ORDER BY permission_name ASC;');
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function getPermissionById($groupId){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM permissions WHERE permission_id = "'.$groupId.'" LIMIT 1;');
|
||||
return $query->result()[0];
|
||||
}
|
||||
|
||||
public function getPermissionBySlug($permission_slug){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM permissions WHERE permission_slug = "'.$permission_slug.'" LIMIT 1;');
|
||||
return $query->result()[0];
|
||||
}
|
||||
|
||||
public function sendEmail($addressList, $lang, $subpage){
|
||||
// Import PHPMailer classes into the global namespace
|
||||
// These must be at the top of your script, not inside a function
|
||||
echo $lang;
|
||||
if(!empty($addressList)){
|
||||
foreach($addressList as $addressListItem){
|
||||
// Instantiation and passing `true` enables exceptions
|
||||
$mail = new PHPMailer(false);
|
||||
$mail->SMTPDebug = false;
|
||||
$mail->do_debug = 1;
|
||||
try {
|
||||
//Server settings
|
||||
$mail->CharSet = 'UTF-8';
|
||||
//$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
|
||||
$mail->isSMTP(); //Send using SMTP
|
||||
$mail->Host = 'mail.absolutesolution.hu'; //Set the SMTP server to send through
|
||||
$mail->SMTPAuth = true; //Enable SMTP authentication
|
||||
$mail->Username = 'reservations@studiobeve.no'; //SMTP username
|
||||
$mail->Password = 'StudioBeve-1234'; //SMTP password
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
$mail->Port = 465; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
|
||||
|
||||
//Recipients
|
||||
$mail->setFrom('reservations@studiobeve.no', '[studiobeve]');
|
||||
$mail->addAddress($addressListItem['addressee_email'], $addressListItem['addressee_name']); // Add a recipient
|
||||
//$mail->addAddress('ellen@example.com'); // Name is optional
|
||||
//$mail->addReplyTo('info@example.com', 'Information');
|
||||
$mail->addCC('evelin@studiobeve.no');
|
||||
//$mail->addBCC('bcc@example.com');
|
||||
|
||||
// Attachments
|
||||
if(is_array($addressListItem['attachments'])){
|
||||
$attachments = $addressListItem['attachments'];
|
||||
foreach($attachments as $attachmentsItem){
|
||||
$mail->addAttachment(getcwd().'/documents/'.$attachmentsItem); // Add attachments
|
||||
}
|
||||
}
|
||||
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
|
||||
|
||||
// Content
|
||||
$mail->isHTML(true); // Set email format to HTML
|
||||
$mail->Subject = $addressListItem['subject'];
|
||||
ob_start();
|
||||
$body = ob_get_clean();
|
||||
$body .= $addressListItem['content'];
|
||||
|
||||
$mail->Body = $body;
|
||||
//$mail->AltBody = strip_tags($answer_message);
|
||||
|
||||
$mail->send();
|
||||
echo 'Üzenet elküldve';
|
||||
if($subpage != ''){
|
||||
header('location:'.base_url().$lang.'/booking-finished/'.$subpage);
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
//header('location:'.base_url().'manage-applicants/?email-sent=false&error='.$mail->ErrorInfo);
|
||||
echo "Üzenetküldési hiba. Mailer Error: {$mail->ErrorInfo}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function is_user_admin($username){
|
||||
$this->load->database();
|
||||
$query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE username = "'.$username.'" LIMIT 1');
|
||||
if($query->num_rows() == 1){
|
||||
if($query->result()[0]->permission_slug == 'admin'){
|
||||
return 1;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user