예제 #1
0
        public async Task <CourtResponse> GetAsync(int id)
        {
            var existingItem = await _courtRepository.FindByIdAsync(id);

            if (existingItem == null)
            {
                return(new CourtResponse(404, "Item id not found", "Id", "Court id not found."));
            }

            var responseResource = _mapper.Map <Court, CourtResource>(existingItem);

            return(new CourtResponse(responseResource));
        }
예제 #2
0
        private async Task <BookingResponse> CommonValidations(BookingSaveResource bookingSaveResource)
        {
            var court = await _courtRepository.FindByIdAsync(bookingSaveResource.CourtId);

            if (court == null)
            {
                return(new BookingResponse(404, "Item id not found", "CourtId", "Court id not found."));
            }

            var member = await _memberRepository.FindByIdAsync(bookingSaveResource.MemberId);

            if (member == null)
            {
                return(new BookingResponse(404, "Item id not found", "MemberId", "Member id not found."));
            }

            if (bookingSaveResource.Reservation.Hour < 8 || bookingSaveResource.Reservation.Hour > 22)
            {
                return(new BookingResponse(400, "Bad booking time", "DateTime", "Bookings hour must be between 08:00 and 22:00"));
            }

            if (bookingSaveResource.Reservation.Minute != 0 || bookingSaveResource.Reservation.Second != 0 || bookingSaveResource.Reservation.Millisecond != 0)
            {
                return(new BookingResponse(400, "Bad booking time", "DateTime", "Bookings only accept full hours"));
            }

            if (bookingSaveResource.Reservation < DateTime.Today)
            {
                return(new BookingResponse(400, "Bad booking time", "DateTime", "DateTime is older than today"));
            }

            var bookingsOfCourt = await _bookingRepository.GetBookingsOfHour(bookingSaveResource.Reservation, 0, bookingSaveResource.CourtId);

            if (bookingsOfCourt.Count > 0)
            {
                return(new BookingResponse(400, "Court already booked", "CourtId", "Court is already booked for " + bookingSaveResource.Reservation.ToString("yyyy-MM-dd HH:mm")));
            }

            var bookingsOfMember = await _bookingRepository.GetBookingsOfDate(bookingSaveResource.Reservation, bookingSaveResource.MemberId);

            if (bookingsOfMember.Count == 3)
            {
                return(new BookingResponse(400, "Too many bookings", "MemberId", "A member only is allowed to book 3 courts per day"));
            }

            var bookingsOfMemberHour = await _bookingRepository.GetBookingsOfHour(bookingSaveResource.Reservation, bookingSaveResource.MemberId);

            if (bookingsOfMemberHour.Count == 2)
            {
                return(new BookingResponse(400, "Too many bookings today", "MemberId", "A member only is allowed to book 2 courts at the same hour"));
            }

            return(null);
        }