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)); }
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); }