public function ajax_res_appointment() { $table = 'ea_appointments'; $data = $_GET; $enum = new ReflectionClass('EAAppointmentFields'); $dont_remove = $enum->getConstants(); foreach ($data as $key => $rem) { if (!in_array($key, $dont_remove)) { unset($data[$key]); } } unset($data['action']); $logic = new EALogic(); $block_time = (int) EALogic::get_option_value('block.time', 0); $open_slots = $logic->get_open_slots($data['location'], $data['service'], $data['worker'], $data['date'], null, true, $block_time); $is_free = false; foreach ($open_slots as $value) { if ($value['value'] == $data['start']) { $is_free = true; break; } } if (!$is_free) { $this->send_err_json_result('{"err":true, "message":"Slots are full"}'); } $data['status'] = 'reservation'; $service = $this->models->get_row('ea_services', $data['service']); $data['price'] = $service->price; $end_time = strtotime("{$data['start']} + {$service->duration} minute"); $data['end'] = date('H:i', $end_time); $data['ip'] = $_SERVER['REMOTE_ADDR']; $data['session'] = session_id(); if (!$logic->can_make_reservation($data['ip']) && !is_user_logged_in()) { $resp = array('err' => true, 'message' => __('Daily limit of booking request has been reached. Please contact us by email!', 'easy-appointments')); $this->send_err_json_result(json_encode($resp)); } $response = $this->models->replace($table, $data, true); if ($response == false) { $resp = array('err' => true, 'message' => __("Something went wrong! Please try again.", 'easy-appointments')); $this->send_err_json_result(json_encode($resp)); } $this->send_ok_json_result($response); }