コード例 #1
0
        public async Task <HttpResponseMessage> CreateBooking(CreateBookingNoteDto booking, int customerID, int outletID)
        {
            var messege = CreateMessageData($"booking/{customerID}/{outletID}",
                                            new KeyValuePair <string, string>[] {
                new KeyValuePair <string, string>("customerID", customerID.ToString()),
                new KeyValuePair <string, string>("outletID", outletID.ToString())
            });

            if (!ModelState.IsValid || customerID <= 0 || outletID <= 0)
            {
                return(CreateValidationErrorResponse(messege, new ValidationResult(Validation.InvalidParameters)));
            }

            var customer = await _customerService.GetCustomerById(customerID);

            if (!customer.IsSuccess)
            {
                return(CreateValidationErrorResponse(messege, new ValidationResult(customer.message)));
            }

            var outlet = await _outletService.GetOutletById(outletID);

            if (!outlet.IsSuccess)
            {
                return(CreateValidationErrorResponse(messege, new ValidationResult(outlet.message)));
            }

            var bookingResult = await _appointmentService.CreateBooking(booking.createBookingDtos, customerID, outletID, booking.note);

            if (!bookingResult.IsSuccess)
            {
                return(CreateValidationErrorResponse(messege, new ValidationResult(bookingResult.message)));
            }
            if (bookingResult.Result.Count() != booking.createBookingDtos.Count())
            {
                return(CreateResponse(HttpStatusCode.OK, new ErrorResponseModel()
                {
                    Message = Validation.SomeBookingSoldOut,
                    StatusCode = (int)HttpStatusCode.OK,
                    StatusDescription = HttpStatusCode.OK.ToString()
                }, messege, bookingResult.Result));
            }
            return(CreateOkResponse(messege, bookingResult.Result));
        }