public Journey AddJourney(string userId, JourneyForCreationDto journey, CarDto car) { journey.UserId = userId; journey.CarId = car.Id; var journeyToSave = Mapper.Map <Journey>(journey); if (car == null) { throw new Exception("Car does not exist"); } journeyToSave.PassengerRoutes.ForEach(pr => pr.SetDestination(journeyToSave.Destination)); _journeyRepository.Add(journeyToSave); if (!_journeyRepository.Save()) { throw new Exception("Could not save journey"); } return(journeyToSave); }
public async Task <IActionResult> CreateJourney([FromBody] JourneyForCreationDto journeyFromBody, string userId, int carId) { var car = _carService.GetCar(userId, carId, true); if (car == null) { ModelState.AddModelError("", "Car with this id does not exist"); return(BadRequest(ModelState)); } var routes = journeyFromBody.Routes; if (!_passengerRouteService.RoutesUsersExist(routes)) { ModelState.AddModelError("", "User from route does not exist"); return(BadRequest(ModelState)); } if (_passengerRouteService.SameUserForMultipleRoutes(routes)) { ModelState.AddModelError("", "Multiple users for the same route"); return(BadRequest(ModelState)); } var journey = _journeyService.AddJourney(userId, journeyFromBody, car); _journeyService.SetTotalPrices(journey, car.FuelConsumption100km, journeyFromBody.PriceForLiter); var payments = _paymentService.AddPayments(journey); _userService.EditUsersPaymentStatistics(userId, payments); var journeyToReturn = _journeyService.GetJourney(journey); await _linksService.AddLinksAsync(journeyToReturn); return(CreatedAtRoute(Constants.RouteNames.GetJourneyByCar, new { userId = userId, id = journey.Id, carId = journey.CarId }, journeyToReturn)); }
public IHttpActionResult CreateJourney([FromBody] JourneyForCreationDto JourneyFromBody, int userId, int carId) { try { if (JourneyFromBody == null) { return(BadRequest()); } var car = _carRepository.GetCarForUser(userId, carId, false); if (car == null) { return(NotFound()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var routes = Mapper.Map <IEnumerable <PassengerRoute> >(JourneyFromBody.Routes); if (!_passengerRouteRepository.UsersExistForRoutes(routes)) { return(BadRequest()); } if (_passengerRouteService.SameUserForRoutes(routes)) { return(BadRequest()); } _passengerRouteRepository.SetUsersForRoutes(routes); var journey = Mapper.Map <Journey>(JourneyFromBody); journey.PassengerRoutes.AddRange(routes); _journeyService.GiveTotalPrices(journey, (double)JourneyFromBody.PriceForLiter, car.FuelConsumption100km); var payments = _paymentService.GeneratePayments(journey, userId); _userService.EditUsersPaymentStatistics(payments, userId); //notification service albo repozytorium wysle notyfikacje _journeyRepository.AddJourneyForUserAndCar(userId, carId, journey); _paymentRepository.AddPayments(payments); if (!_appRepository.Commit()) { return(InternalServerError()); } var journeyToReturn = Mapper.Map <JourneyDto>(journey); return(CreatedAtRoute("GetJourneyForUserAndCar", new { userId = userId, id = journey.Id, passengerRoutes = true, carId = carId }, journeyToReturn)); } catch (Exception e) { return(InternalServerError()); } }