Ejemplo n.º 1
0
 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");
     }
 }
Ejemplo n.º 2
0
        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
            }));
        }