load->database(); $query = $this->db->query('INSERT INTO services ( service_type, service_category, service_name, service_description, service_price, service_time, service_note ) VALUES( "'.$serviceArray['service_type'].'", "'.$serviceArray['service_category'].'", "'.$serviceArray['service_name'].'", "'.$serviceArray['service_description'].'", "'.$serviceArray['service_price'].'", "'.$serviceArray['service_time'].'", "'.$serviceArray['service_note'].'" );'); } public function updateService($service_id, $serviceArray){ $this->load->database(); foreach($serviceArray as $propertyKey => $propertyValue){ $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); } } public function getAllServiceByServiceType($service_type, $lang){ $this->load->database(); $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); $serviceArray = array(); if($query->num_rows() > 0){ foreach($query->result() as $resultItem){ $service_category = ''; $service_name = ''; $service_description = ''; switch($lang){ case 'no': $service_category = $resultItem->service_category_no; $service_name = $resultItem->service_name_no; $service_description = $resultItem->service_description_no; break; case 'en': $service_category = $resultItem->service_category_en; $service_name = $resultItem->service_name_en; $service_description = $resultItem->service_description_en; break; case 'hu': $service_category = $resultItem->service_category_hu; $service_name = $resultItem->service_name_hu; $service_description = $resultItem->service_description_hu; break; } $resultItemTmp = array( 'service_id' => $resultItem->service_id, 'service_type' => $resultItem->service_type, 'service_category' => $service_category, 'service_name' => $service_name, 'service_description' => $service_description, 'service_price' => $resultItem->service_price, 'service_time' => $resultItem->service_time ); $serviceArray[] = (object)$resultItemTmp; } } return $serviceArray; } public function getServiceById($service_id){ $this->load->database(); $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); if($query->num_rows() > 0){ return $query->result()[0]; } else{ return 0; } } public function getAllWorkers(){ $this->load->database(); $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); return $query->result(); } public function getWorkerById($worker_id){ $this->load->database(); $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); if($query->num_rows() > 0){ return $query->result()[0]; } else{ return 0; } } public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ $this->load->database(); $service_length_time = strtotime($servicelength); $availableTimeArray = array(); //finish time - selected service length $finishTime = new DateTime($selectedDate.' 18:00'); $datelength = new DateTime($servicelength); $diff = $datelength->diff($finishTime); //max time for start $maxdate = $diff->h.':'.$diff->i.':00'; $hours = (intval($diff->h)-8)*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.' 07:45'); $endTime = new DateTime($selectedDate.' 07:45'); $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); $currentStartTime = $startTime->format('H:i:00'); $currentEndTime = $endTime->format('H:i:00'); $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("'.$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)) ); '); 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']."' );"); } } ?>