示例#1
0
        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));
        }
示例#3
0
        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());
            }
        }