Beispiel #1
0
        // intentionally not using Automapper.
        public static BookingModel Map(this BookingRequestWebModel bookingR)
        {
            var bookingM = new BookingModel();

            if (bookingR != null)
            {
                var utcnow = DateTime.UtcNow;
                bookingM.StartDateUtc    = bookingR.StartDateUtc ?? utcnow;
                bookingM.EndDateUtc      = bookingR.EndDateUtc ?? utcnow.AddHours(1); // add defaults
                bookingM.GarageName      = bookingR.GarageName;
                bookingM.CarLicencePlate = bookingR.LicencePlate;
            }

            return(bookingM);
        }
Beispiel #2
0
 // it should be FluentValidation or similiar library
 private bool ValidateRequest(BookingRequestWebModel bookingRequest, out string message)
 {
     if (bookingRequest == null)
     {
         message = "Value cannot be null";
         return(false);
     }
     if (string.IsNullOrEmpty(bookingRequest.LicencePlate))
     {
         message = "Licence plate cannot be null or empty";
         return(false);
     }
     if (string.IsNullOrEmpty(bookingRequest.GarageName))
     {
         message = "Garage name cannot be null or empty";
         return(false);
     }
     message = string.Empty;
     return(true);
 }
Beispiel #3
0
        [ProducesResponseType(StatusCodes.Status418ImATeapot)] // ;) should be 500
        public async Task <IActionResult> PostAsync(BookingRequestWebModel bookingRequest)
        {
            if (ValidateRequest(bookingRequest, out string mess))
            {
                return(BadRequest($"{nameof(bookingRequest)} {mess}"));
            }
            try
            {
                await _bookingProducer.SendRequest(bookingRequest.Map());

                return(Accepted());
            }
            catch (ArgumentNullException aex)
            {
                return(StatusCode(500)); // allways - 500
            }
            catch (ArgumentException ae)
            {
                return(BadRequest(ae.Message));
            }
        }
Beispiel #4
0
        [ProducesResponseType(StatusCodes.Status418ImATeapot)] // ;) should be 500
        public async Task <IActionResult> Post(BookingRequestWebModel bookingRequest)
        {
            if (ValidateRequest(bookingRequest, out string mess))
            {
                return(BadRequest($"{nameof(bookingRequest)} {mess}"));
            }
            try
            {
                var serviceResponse = await _bookingService.PostNewBooking(bookingRequest.Map());

                return(Ok(serviceResponse));
            }
            catch (ArgumentNullException aex)
            {
                // better error handle!
                return(StatusCode(418)); // allways - 500
            }
            catch (ArgumentException ae)
            {
                return(BadRequest(ae.Message));
            }
        }