model; return $query->get(); } public function show($id) { $data = $this->model->where('id', $id)->first(); return $data; } public function checkTourIsBooked($room_type_packet_id) { $query = $this->model ->join('bookings', function ($join){ $join->on('bookings.id', '=', 'room_booking.booking_id') ->where("bookings.status",BookingStatus::COMPLETED); }) ->where('room_type_packet_id', $room_type_packet_id); $data = $query->get(); return !($data->isEmpty()); } public function getNotAvailableByBooking($param) { $from_time = $param['checkin_at']; $to_time = $param['checkout_at']; $query = $this->model ->join('bookings', function ($join) use ($from_time, $to_time) { $join->on('bookings.id', '=', 'room_booking.booking_id') ->where(function ($query) use($from_time, $to_time){ $query->orwhere(function ($query) use ($from_time, $to_time) { $query ->whereRaw("bookings.checkin_at <= STR_TO_DATE(?, '%Y-%m-%d %H:%i:%s')", $from_time) ->whereRaw("bookings.checkout_at >= STR_TO_DATE(?, '%Y-%m-%d %H:%i:%s')", $from_time); }); $query->orwhere(function ($query) use ($from_time, $to_time) { $query ->whereRaw("bookings.checkin_at >= STR_TO_DATE(?, '%Y-%m-%d %H:%i:%s')", $from_time) ->whereRaw("bookings.checkin_at <= STR_TO_DATE(?, '%Y-%m-%d %H:%i:%s')", $to_time); }); }); }); return $query->get(); } public function save(array $attributes) { if (!empty($attributes['id'])) { $entity = $this->model->where('id', $attributes['id'])->first(); if ($entity) { $entity->fill($attributes)->save(); return $entity; } else { return null; } } else { $entity = $this->model->create($attributes); return $entity; } } public function delete($id) { $entity = $this->model ->where('id', $id)->first(); return !empty($entity) ? $entity->delete() : null; } }