/** * Used to update bus details * URL: /public/api/v1.0/update/bus/details/{bus_id} { "params": { "bus_name": "Tarapop", "bus_from": "Aachara", "from_place_id" : 2, "bus_to": "Aahor", "to_place_id": 5, "bus_type": "Hollow", "bus_comfort": "Sleeepr", "bus_seat_image_location": "/here/asd.jpg", "bus_total_seats": "44", "online_booking_seats": "", "is_full_bus": true, "travelling_days": "sunday, monday" } } */ public function updateBusDetails(Request $request) { $response = $this->response; $validateAndHandleError = new ValidateAndHandleError(); if (!Auth::user()->id) { return $validateAndHandleError->invalidUser(); } $user_id = Auth::user()->id; $user_type = $validateAndHandleError->userIdentifier($user_id); //$user_type = 'admin'; //delete it later if (!$request->route('bus_id')) { return $response->errorResponse("id_not_exist"); } /* url bus_id should be a numeric value */ $bus_id = $request->route('bus_id'); $check_bus_id_numeric = $validateAndHandleError->multiValidator(['should_be_numeric_value' => $bus_id], "number"); if ($check_bus_id_numeric != "success") { return $check_bus_id_numeric; } $check_bus_availability = Bus::where('id', $bus_id)->get(); if (count($check_bus_availability) <= 0) { return $response->errorResponse("bus_details_not_available"); } $bus_owners_id = $check_bus_availability[0]->bus_owners_id; /* $user_id_temp is used to check whether the details are accessible or not */ $user_id_temp = BusOwner::where('id', $bus_owners_id)->get()[0]->user_id; /* details are only accessible by admin and bus owner */ if ($user_type == "customer" || $user_type == "dealer" || $user_type == "unknown" || $user_type == "bus_owner" && $user_id_temp != $user_id) { return $response->errorResponse("details_not_accessible"); } $data = Input::json()->all(); if (!isset($data) || !isset($data['params']) || !isset($data['params']['bus_name']) || !isset($data['params']['bus_from']) || !isset($data['params']['from_place_id']) || !isset($data['params']['bus_to']) || !isset($data['params']['to_place_id']) || !isset($data['params']['bus_type']) || !isset($data['params']['bus_comfort']) || !isset($data['params']['bus_seat_image_location']) || !isset($data['params']['bus_total_seats']) || !isset($data['params']['travelling_days']) || !isset($data['params']['is_full_bus'])) { return $response->errorResponse('invalid_params'); // return $validateAndHandleError->errorIdentifier("invalid_params"); } $online_booking_seats = ""; if (!$data['params']['is_full_bus'] && isset($data['params']['online_booking_seats'])) { $online_booking_seats = $data['params']['online_booking_seats']; } $bus_name = $data['params']['bus_name']; $bus_from = $data['params']['bus_from']; $from_place_id = $data['params']['from_place_id']; $bus_to = $data['params']['bus_to']; $to_place_id = $data['params']['to_place_id']; $bus_type = $data['params']['bus_type']; $bus_comfort = $data['params']['bus_comfort']; $bus_seat_image_location = $data['params']['bus_seat_image_location']; $bus_total_seats = $data['params']['bus_total_seats']; $is_full_bus = $data['params']['is_full_bus']; $travelling_days = $data['params']['travelling_days']; /* Bus null validation */ $validateNullData = array('bus_owner_id' => $bus_owners_id, 'bus_name' => $bus_name, 'bus_from' => $bus_from, 'from_place_id' => $from_place_id, 'bus_to' => $bus_to, 'to_place_id' => $to_place_id, 'bus_type' => $bus_type, 'bus_comfort' => $bus_comfort, 'bus_seat_image_location' => $bus_seat_image_location, 'bus_total_seats' => $bus_total_seats, 'is_full_bus' => $is_full_bus, 'travelling_days' => $travelling_days); $nullValidator = $validateAndHandleError->multiValidator($validateNullData, "string"); if ($nullValidator != "success") { return $nullValidator; } /* if is_full_bus is false then only online_booking_seats will exist */ if (!$is_full_bus && !$online_booking_seats) { return $response->errorResponse('online_booking_seats'); // return $validateAndHandleError->errorIdentifier("online_booking_seats"); } /* Validating seat number is numeric or not */ $validateSeats = $validateAndHandleError->multiValidator(['bus_total_seats' => $bus_total_seats], "seat_number"); if ($validateSeats != "success") { return $validateSeats; } /* Validating arrival an destination unique code */ $validateLocationId = $validateAndHandleError->multiValidator(['from_place_id' => $from_place_id, 'to_place_id' => $to_place_id], "number"); if ($validateLocationId != "success") { return $validateLocationId; } $validateDestinationAndArrival = $validateAndHandleError->arrivalAndDestinationVerifier($to_place_id, $from_place_id, $bus_from, $bus_to); if ($validateDestinationAndArrival !== TRUE) { return $validateDestinationAndArrival; } $is_bus_owner_updated = Bus::where('id', $bus_id)->where('bus_owners_id', $bus_owners_id)->update(['bus_name' => $bus_name, 'bus_from' => $bus_from, 'bus_to' => $bus_to, 'bus_type' => $bus_type, 'bus_comfort' => $bus_comfort, 'bus_seat_image_location' => $bus_seat_image_location, 'bus_total_seats' => $bus_total_seats, 'online_booking_seats' => $online_booking_seats, 'is_full_bus' => $is_full_bus, 'travelling_days' => $travelling_days]); $info = array('bus_id' => $bus_id, 'bus_owners_id' => $bus_owners_id); if ($is_bus_owner_updated == 1) { return $response->successResponse(200, "Bus details has been updated successully", $info); } return $response->errorResponse("update_unsuccessfull"); }