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)); }