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); }
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 }); } }
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")); } }
public IActionResult GetSimillarRides(int rideId) { RideDto ride = _rideLogic.GetRideById(rideId); IEnumerable <RideDto> rides = _rideLogic.GetSimilarRides(ride); return(Ok(rides)); }
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)); }
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()); }