public async Task <PitchBookingResult> MakeBookingAsync(DateTime startDateTime,
                                                                DateTime endDateTime,
                                                                int pitchId,
                                                                Member member)
        {
            var pitchBooking = new PitchBooking
            {
                PitchId       = pitchId,
                Member        = member,
                StartDateTime = startDateTime,
                EndDateTime   = endDateTime
            };

            var(passedRules, errors) = await _bookingRuleProcessor.PassesAllRulesAsync(pitchBooking);

            if (!passedRules)
            {
                return(PitchBookingResult.Failure(errors));
            }

            await _bookingService.CreatePitchBooking(pitchBooking);

            await _messagingService.SendAsync("Thank you. Your booking is confirmed", member.User.Id);

            return(PitchBookingResult.Success(pitchBooking));
        }
Exemplo n.º 2
0
        public async Task <CourtBookingResult> MakeBookingAsync(DateTime startDateTime, DateTime endDateTime, int courtId, Member member)
        {
            var courtBooking = new CourtBooking
            {
                CourtId       = courtId,
                Member        = member,
                StartDateTime = startDateTime,
                EndDateTime   = endDateTime
            };

            var(passedRules, errors) = await _bookingRuleProcessor.PassesAllRulesAsync(courtBooking);

            if (!passedRules)
            {
                return(CourtBookingResult.Failure(errors));
            }

            await _bookingService.CreateCourtBooking(courtBooking);

            await _notificationService.SendAsync("Thank you. Your booking is confirmed", member.User.Id);

            return(CourtBookingResult.Success(courtBooking));
        }