public async Task <Booking> CreateBooking(RequestBooking requestBooking) { var bookingDate = requestBooking.DateBooked.Date; if (await bookingRepository.IsAvailable(bookingDate, requestBooking.TimeSlot, requestBooking.ServiceType)) { try { var booking = new Booking { ServiceType = requestBooking.ServiceType, DateBooked = bookingDate, TimeSlot = requestBooking.TimeSlot, CustomerEmail = requestBooking.CustomerEmail, CustomerMobile = requestBooking.CustomerMobile, CustomerName = requestBooking.CustomerName, Comment = requestBooking.Comment }; await bookingRepository.CreateSync(booking); var message = new StringBuilder(); message.Append(string.Format(@"Requested Service: {0}<br/>", requestBooking.ServiceType)); message.Append(string.Format(@"Date and Time: {0} {1}:00<br/>", requestBooking.DateBooked.ToString("d MMM yyyy"), requestBooking.TimeSlot)); message.Append(string.Format(@"Phone: {0}<br/>", booking.CustomerMobile)); message.Append(string.Format(@"Email: {0}<br/>", booking.CustomerEmail)); message.Append(string.Format(@"Other details/comments: {0}<br/>", booking.Comment)); var to = new List <string>(); to.Add("*****@*****.**"); //to.Add("*****@*****.**"); var emailNotification = new EmailNotification { From = "*****@*****.**", To = to, Subject = "A booking request has been made", Message = message.ToString(), IsHtml = true, Status = 1 }; var isPool = await emailNotificationRepository.CreateSync(emailNotification); return(booking); } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent("Error occured."), ReasonPhrase = ex.Message }); } } throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("The time slot specifed is already booked."), ReasonPhrase = "Please select other time slot or service." }); }
public void SearchAvailableRides_ShouldWork() { User SampleUser = UserTestingData.GetSampleUser(); RideDetails SampleRideDetails = BookingTestingData.GetSampleRideDetails(); List <OfferRide> SampleListOfOffers = RideOfferTestingData.GetSampleRideOffersList(); List <Place> SampleListOfPlaces = PlacesTestingData.GetSamplePlacesList(); RequestBooking SampleBookingRequest = BookingTestingData.GetSampleBookingRequest(); using (var mock = AutoMock.GetStrict()) { var TestService = mock.Create <BookingService>(); mock.Mock <IRepositoryManager <Place> >().Setup(x => x.GetAll()).Returns(SampleListOfPlaces); mock.Mock <IMapper>().Setup(x => x.Map <OfferRide, RideDetails>(SampleListOfOffers[0])).Returns(SampleRideDetails).Verifiable(); mock.Mock <IRepositoryManager <User> >().Setup(x => x.Get(22)).Returns(SampleUser).Verifiable(); mock.Mock <IRepositoryManager <OfferRide> >().Setup(x => x.GetAll()).Returns(SampleListOfOffers).Verifiable(); TestService.SearchAvailableRides(SampleBookingRequest, 44); mock.Mock <IRepositoryManager <Place> >().Verify(x => x.GetAll(), Times.Exactly(2)); mock.Mock <IRepositoryManager <User> >().Verify(x => x.Get(22), Times.Exactly(1)); } }
public List <RideDetails> SearchAvailableRides(RequestBooking rideBooking, long userId) { List <RideDetails> Rides = new List <RideDetails>(); List <OfferRide> TotalRides = _rideOffersRepository.GetAll().ToList(); TotalRides.ForEach(e => e.Route = _placeRepository.GetAll().Where(r => r.RideOfferId == e.RideOfferId).ToList()); List <OfferRide> AvailableRides = TotalRides .Where(r => r.Route.Exists(e => e.AreaName == rideBooking.StartPoint) && r.Route.Exists(e => e.AreaName == rideBooking.Destination) && r.HostId != userId && ( r.Route.FindIndex(e => e.AreaName == rideBooking.StartPoint) < r.Route.FindIndex(e => e.AreaName == rideBooking.Destination)) && r.Time == rideBooking.Time && r.AvailableSeats >= rideBooking.Seats && (DateTime.Compare(r.RideOfferedDate, rideBooking.RideBookingDate) == 0)) .ToList(); foreach (OfferRide ride in AvailableRides) { string[] Startpoint = ride.Route[0].AreaName.Split(','); string[] Destination = ride.Route[ride.Route.Count - 1].AreaName.Split(','); RideDetails rideDetails = _mapper.Map <OfferRide, RideDetails>(ride); rideDetails.Name = _userRepository.Get(ride.HostId).Name; rideDetails.StartPoint = Startpoint[0]; rideDetails.Destination = Destination[0]; rideDetails.RideBookingDate = ride.RideOfferedDate.ToString("dd/MM/yyyy"); rideDetails.RideFair = GetPrice(rideBooking.StartPoint, rideBooking.Destination); rideDetails.Seats = ride.AvailableSeats; Rides.Add(rideDetails); } return(Rides); }
public RequestBookingDTO MapToRequestBookingDTO(RequestBooking requestBooking) { return(new RequestBookingDTO { Date = requestBooking.Date, id = requestBooking.id, Id_Status = requestBooking.Id_Status, is_Personal_Car_Available = requestBooking.is_Personal_Car_Available, Reason = requestBooking.Reason, CreateBy = (int)requestBooking.CreateBy }); }
public RequestBooking GetSampleBookingRequest() { RequestBooking booking = new RequestBooking() { StartPoint = "Ashoknagar", Destination = "Venkampet", RideBookingDate = DateTime.Now.Date, Seats = 2, Time = "3am-6am" }; return(booking); }
public List <RideDetails> SearchAvailableRides([FromRoute] long userId, [FromQuery] string startPoint, [FromQuery] string destination, [FromQuery] int seats, [FromQuery] DateTime rideBookingDate, [FromQuery] string time) { RequestBooking booking = new RequestBooking() { StartPoint = startPoint, Destination = destination, Seats = seats, RideBookingDate = rideBookingDate, Time = time }; return(_bookingService.SearchAvailableRides(booking, userId)); }
public async Task <IActionResult> Add(RequestBooking booking) { var isExistsRequest = await _unitOfWork.RequestBooking.FindRequestBookingByPhone(booking.Phone); if (isExistsRequest != null) { return(BadRequest("Your request is pendingn or limit end")); } booking.IsRead = false; booking.IsRead = false; await _unitOfWork.RequestBooking.Add(booking); var result = await _unitOfWork.CompleteAsync(); if (result == 0) { return(BadRequest()); } return(Ok()); }
public async Task <IActionResult> PostAsync([FromBody] RequestBooking bookingRequest) { await _mediator.Send(bookingRequest); return(Ok()); }
public async Task Add(RequestBooking requestBooking) { await _context.RequestBookings.AddAsync(requestBooking); }