Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #6
0
        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());
            }
        }