// POST api/BookCabController /// <summary> /// To Book a cab for the Passenger /// </summary> /// <param name="passangerId"></param> /// <param name="current_Lat"></param> /// <param name="current_Lon"></param> /// <param name="cab_Type"></param> /// <param name="destination_lat"></param> /// <param name="destination_Lon"></param> /// <returns> /// <param name="status">Status of the API request</param> /// <param name="message">Response message</param> /// </returns> public Response Post([FromBody] BookCab value) { AppDao dbobj = new AppDao(); Response responseobj = new Response(); Identifier resultObj = new Identifier(); SelectedDriver selectedCabObj = new SelectedDriver(); Person selectedDriver = new Person(); BookCabResponse returnObj = new BookCabResponse(); try { //To Fetch the vehicle_Type id for the cab type string query = "SELECT Id FROM Vehicle_Type WHERE type = '" + value.cab_Type + "'"; resultObj = dbobj.GetVehicleTypeId(query); //To Fetch the cab details if available query = "SELECT person_id as id, id AS vehicle_id , registration_number,ideal_location_lat AS driver_lat,ideal_location_lon AS driver_lon,passenger_capacity FROM Vehicle WHERE is_active = 1 AND person_id != " + value.passangerId + " AND ride_in_progress = 0 ORDER BY ((" + value.current_Lat + " - ideal_location_lat) * (" + value.current_Lat + " - ideal_location_lat) + (" + value.current_Lon + " - ideal_location_lon) * (" + value.current_Lon + " - ideal_location_lon)) LIMIT 1; "; selectedCabObj = dbobj.GetCab(query); //Insert the vehicle details in the vehicle location table as the cab has been booked query = "INSERT INTO Vehicle_Location Values(" + selectedCabObj.driver_lat + "," + selectedCabObj.driver_lon + "," + value.current_Lat + "," + value.current_Lon + "," + (selectedCabObj.passenger_capacity - 1) + "," + selectedCabObj.vehicle_id + "," + resultObj.Id + ")"; dbobj.Execute(query); //Update Ride in Progress status query = "UPDATE Vehicle SET ride_in_progress = 1 WHERE is_active = 1 AND person_id = " + selectedCabObj.Id + " AND id = " + selectedCabObj.vehicle_id + ""; dbobj.Execute(query); //Get the driver Name and phone number for the passenger query = "SELECT first_name,last_name,primary_phone_number FROM Person WHERE Id = " + selectedCabObj.Id + ""; selectedDriver = dbobj.GetDriverDetails(query); //Get the estimated Fare double estimatedFare = dbobj.EstimatedFare(value.current_Lat, value.current_Lon, value.destination_lat, value.destination_Lon, value.cab_Type); returnObj.first_name = selectedDriver.first_name; returnObj.last_name = selectedDriver.last_name; returnObj.driver_phone_number = selectedDriver.primary_phone_number; returnObj.estimated_fare = estimatedFare; responseobj.status = "Success"; responseobj.message = JsonConvert.SerializeObject(returnObj); } catch (Exception ex) { responseobj.status = "Failed"; responseobj.message = "Booking a cab Failed with error -> " + ex.Message; } return(responseobj); }