Пример #1
0
        public bool UpdateRequest(RideRequestDto request)
        {
            request.SeenByPassenger = false;
            var isUpdated = _rideRequestRepository.UpdateRequest(_mapper.Map <RideRequestDto, RideRequest>(request));

            if (isUpdated && request.Status == Dto.Status.ACCEPTED)
            {
                var entityRequest = _rideRequestRepository.GetRequestById(request.RequestId);
                var rideToUpdate  = _rideLogic.GetRideById(request.RideId);
                if (rideToUpdate.NumberOfSeats != 0)
                {
                    var added = _passengerLogic.AddPassenger(new PassengerDto {
                        Email = entityRequest.PassengerEmail, RideId = request.RideId, Completed = false
                    });
                    if (added)
                    {
                        rideToUpdate.NumberOfSeats--;
                        var updatedSeats = _rideLogic.UpdateRide(rideToUpdate);
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(isUpdated);
        }
Пример #2
0
        public void AddRequest(RideRequestDto requestDto)
        {
            var ride = _rideLogic.GetRideById(requestDto.RideId);

            if (ride.DriverEmail == requestDto.PassengerEmail)
            {
                throw new UnauthorizedAccessException();
            }

            if (ride == null)
            {
                throw new RideNoLongerExistsException();
            }

            if (ride.NumberOfSeats <= 0)
            {
                throw new NoSeatsInRideException();
            }

            if (ride.RideDateTime < DateTime.Now)
            {
                throw new ArgumentException();
            }

            if (_rideLogic.IsRideRequested(requestDto.RideId, requestDto.PassengerEmail))
            {
                throw new AlreadyRequestedException();
            }

            requestDto.SeenByDriver    = false;
            requestDto.SeenByPassenger = true;
            requestDto.DriverEmail     = ride.DriverEmail;
            int addressId = _addressLogic.GetAddressId(requestDto.Address);

            if (addressId == -1)
            {
                throw new ArgumentException("Failed to get address id");
            }

            requestDto.AddressId = addressId;
            var entity = _rideRequestRepository.AddRequest(_mapper.Map <RideRequestDto, RideRequest>(requestDto));

            var driverNote = _driverNoteLogic.GetNoteByRide(requestDto.RideId);


            _driverSeenNoteReposiotory.AddNote(new DriverSeenNote {
                RideRequestId = entity.RideRequestId, DriverNoteId = driverNote.DriverNoteId
            });

            if (requestDto.RequestNote != null)
            {
                _rideRequestNoteLogic.AddNote(new RideRequestNoteDto {
                    RideRequestId = entity.RideRequestId, Text = requestDto.RequestNote
                });
            }
        }
Пример #3
0
        public async Task <IActionResult> AddRequest([FromBody] RideRequestDto request)
        {
            if (request == null)
            {
                return(BadRequest("Invalid parameter"));
            }
            var userDto = await _userRepository.GetLoggedInUser(User);

            request.PassengerEmail = userDto.Email;
            string email = _rideLogic.GetRideById(request.RideId).DriverEmail;

            if (email == null)
            {
                return(BadRequest("Invalid parameter"));
            }

            bool result = _requestLogic.AddRequest(request, email);

            if (result)
            {
                return(Ok());
            }
            else
            {
                return(BadRequest("Operation failed"));
            }
        }
Пример #4
0
        public IActionResult GetSimillarRides(int rideId)
        {
            RideDto ride = _rideLogic.GetRideById(rideId);

            IEnumerable <RideDto> rides = _rideLogic.GetSimilarRides(ride);

            return(Ok(rides));
        }
Пример #5
0
        public IActionResult GetSimillarRides(int rideId)
        {
            RideDto ride = _rideLogic.GetRideById(rideId);

            if (ride == null)
            {
                return(BadRequest("Invalid parameter"));
            }

            IEnumerable <RideDto> rides = _rideLogic.GetSimilarRides(ride);

            return(Ok(rides));
        }
Пример #6
0
        public async Task <IActionResult> AddRequest([FromBody] RideRequestDto request)
        {
            if (request == null)
            {
                return(BadRequest());
            }
            var userDto = await _userRepository.GetLoggedInUser(User);

            request.PassengerEmail = userDto.Email;
            var ride = _rideLogic.GetRideById(request.RideId);

            if (ride == null)
            {
                throw new RideNoLongerExistsException();
            }

            _requestLogic.AddRequest(request, ride.DriverEmail);

            return(Ok());
        }