public string RequestRide(ApplicationUser user, RideRquestModel model) { try { Ride ride = carpoolDb.Rides.FirstOrDefault(c => c.Id.Equals(model.RideId)); Rider rider = carpoolDb.Riders.FirstOrDefault(c => c.ApplicationUserId.Equals(user.Id)); Driver driver = carpoolDb.Drivers.FirstOrDefault(c => c.Id.Equals(ride.DriverId)); Promotion promotion = carpoolDb.Promotions.FirstOrDefault(c => c.Id.Equals(driver.PromotionId)); if (rider == null) { rider = new Rider(user.Id, user.Id); carpoolDb.Riders.Add(rider); } var amount = Math.Round(model.Distance * Constants.Price, 2, MidpointRounding.ToEven); var driverDiscount = 0.0; if (model.Distance > promotion.Distance) { driverDiscount = promotion.Discount * amount; } var appDiscount = 0.0; if (model.Distance > Constants.MinimumDistance) { appDiscount = Constants.AppDiscount * amount; } var cgst = (amount - driverDiscount - appDiscount) * Constants.CGST; var sgst = (amount - driverDiscount - appDiscount) * Constants.SGST; Bill bill = new Bill(HelperService.GenerateId("BIL"), ride.DriverId, rider.Id, amount, sgst, cgst, driverDiscount, appDiscount); carpoolDb.Bills.Add(bill); RideRequest rideRequest = new RideRequest( HelperService.GenerateId("REQ"), model.RideId, rider.Id, ride.DriverId, model.Source.Id, model.Destination.Id, bill.Id ); carpoolDb.RideRequests.Add(rideRequest); carpoolDb.SaveChanges(); return("Ok"); } catch (Exception) { return("Ride could not be offered"); } }
public IActionResult RequestRide([FromBody] RideRquestModel model) { if (model == null) { return(BadRequest("invalid object")); } string email = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; ApplicationUser user = context.ApplicationUsers.FirstOrDefault(c => c.Email.Equals(email)); string result = IRiderService.RequestRide(user, model); if (result == "Ok") { return(Ok(new { status = 200, message = "Ride Requested Successfully." })); } return(BadRequest(new { error = result })); }