/// <summary> /// Update booking /// </summary> /// <param name="bookingContract"></param> /// <param name="cancellationToken"></param> public async Task <bool> UpdateBooking( BookingUpdateContract bookingContract, CancellationToken cancellationToken) { var checkNull = await _dbContext.Bookings.FirstOrDefaultAsync(x => x.Id == bookingContract.Id, cancellationToken); if (checkNull == null) { _logger.LogInformation($"Booking with id {bookingContract.Id} are not found"); return(false); } var booking = BookingMapping.BookingMapFromUpdateContractToModel(bookingContract, checkNull); try { _dbContext.Update(booking); await _dbContext.SaveChangesAsync(cancellationToken); } catch (Exception e) { _logger.LogInformation($"Booking with id {booking.Id} is not found"); return(false); } return(true); }
/// <summary> /// Take all bookings /// </summary> public async Task <IEnumerable <BookingReturnContract> > TakeAllBooking(CancellationToken token) { var bookings = _dbContext.Bookings .Select(x => BookingMapping.BookingMapFromModelTToContract(x.Slot, x)) .AsEnumerable() .OrderBy(x => x.Slot?.CoachId).ThenBy(x => x.Slot?.DateStart).ThenBy(x => x.Slot?.TimeStart); return(bookings); }
/// <summary> /// Take booking for client /// </summary> /// <param name="clientId"></param> /// <param name="token"></param> public async Task <IEnumerable <BookingReturnContract> > TakeBookingOnClient(int clientId, CancellationToken token) { var bookings = _dbContext.Bookings .Where(x => x.ClientId == clientId) .Select(x => BookingMapping.BookingMapFromModelTToContract(x.Slot, x)) .AsEnumerable() .OrderBy(x => x.Slot?.DateStart).ThenBy(x => x.Slot?.TimeStart); return(bookings); }
/// <inheritdoc/> public async Task <bool> AddBooking(BookingDto bookingDto, int clientId, CancellationToken token) { var slots = await _context.Slots.Where(x => x.Expired == false).ToArrayAsync(token); var bookings = await _context.Bookings.ToArrayAsync(token); var services = await _context.Services.ToArrayAsync(token); //Check if slots with our date and start time exists. //Than check if slots are available and not booked. //Find find slot with our coach var yourSlot = slots .Where(x => x.Date == DateTime.ParseExact(bookingDto.Date, Settings.DateFormat, null) && x.StartTime == TimeSpan.Parse(bookingDto.Time)) .Where(x => bookings.All(y => y.SlotId != x.Id)) .FirstOrDefault(x => x.CoachId == bookingDto.CoachId); if (yourSlot == null) { _logger.LogInformation($"Slot which client {clientId} want to book are not found or already booked"); return(false); } //Find price for our service var price = services.FirstOrDefault(x => x.Id == bookingDto.ServiceId); if (price == null) { _logger.LogInformation($"Service with id {bookingDto.ServiceId} are not found"); return(false); } //Convert bookingDto to Booking for db var booking = BookingMapping.BookingMapFromContractToModel(bookingDto, yourSlot.Id, clientId, price.Price); //Save new booking await _context.Bookings.AddAsync(booking, token); await _context.SaveChangesAsync(token); return(true); }
public static async Task <Models.BookingStatus> BookingRooms(BookingReq value, string SessionID, string BN) { BookingRes hotels = new BookingRes(); BookingStatus booking = new BookingStatus(); try { //yyyy-mm-dd BookingMapping.MapRequestToDB(value, SessionID, BN); hotels = await BookingService.BookingRoomsService(value, SessionID); if (hotels == null) { booking.status = 2; return(booking); } BookingMapping.MapResponseToDB(hotels, SessionID, BN); booking.status = 0; booking.booking = hotels.booking; return(booking); } catch (Exception ex) { var requestData = JsonConvert.SerializeObject(ex); LoggingHelper.WriteToFile("HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData); if (hotels != null) { booking.status = 1; booking.booking = hotels.booking; return(booking); } booking.status = 2; booking.booking = null; return(booking); } }
public static async Task <Models.Booking> BookingRooms(BookingReq value, string SessionID) { try { //yyyy-mm-dd BookingMapping.MapRequestToDB(value, SessionID); var hotels = await BookingService.BookingRoomsService(value, SessionID); if (hotels == null) { return(new Models.Booking()); } BookingMapping.MapResponseToDB(hotels, SessionID); return(hotels.booking); } catch (Exception ex) { var requestData = JsonConvert.SerializeObject(ex); LogData.WriteToFile("c:/HotelsB2C/Logs/HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData); return(new Models.Booking()); } }