示例#1
0
        public void Validate__Description_is_null_or_empty__Should_be_invalid([Values(null, "")] string description)
        {
            var invalidTicketTariffDto = new TicketTariffDto {
                Description = description
            };

            _validator.ShouldHaveValidationErrorFor(x => x.Description, invalidTicketTariffDto);
        }
示例#2
0
        public void Validate__Description_has_less_than_256_characters__Should_be_valid()
        {
            var validTicketTariffDto = new TicketTariffDto {
                Description = "123456789"
            };

            _validator.ShouldNotHaveValidationErrorFor(x => x.Description, validTicketTariffDto);
        }
示例#3
0
        public void Validate__DefaultPrice_is_greater_than_0_and_less_than_1000__Should_be_valid()
        {
            var validTicketTariffDto = new TicketTariffDto {
                DefaultPrice = 100.0f
            };

            _validator.ShouldNotHaveValidationErrorFor(x => x.DefaultPrice, validTicketTariffDto);
        }
示例#4
0
        public void Validate__DefaultPrice_is_exactly_1000__Should_be_valid()
        {
            var validTicketTariffDto = new TicketTariffDto {
                DefaultPrice = 1000.0f
            };

            _validator.ShouldNotHaveValidationErrorFor(x => x.DefaultPrice, validTicketTariffDto);
        }
示例#5
0
        public void Validate__DefaultPrice_is_greater_than_1000__Should_be_invalid()
        {
            var invalidTicketTariffDto = new TicketTariffDto {
                DefaultPrice = 3400.0f
            };

            _validator.ShouldHaveValidationErrorFor(x => x.DefaultPrice, invalidTicketTariffDto);
        }
示例#6
0
        public void Validate__DefaultPrice_is_less_than_0_or_equals_to_0__Should_be_invalid([Values(-1.0f, 0.0f)] float price)
        {
            var invalidTicketTariffDto = new TicketTariffDto {
                DefaultPrice = price
            };

            _validator.ShouldHaveValidationErrorFor(x => x.DefaultPrice, invalidTicketTariffDto);
        }
示例#7
0
        public void Validate__Description_has_exactly_256_characters__Should_be_valid()
        {
            var validTicketTariffDto = new TicketTariffDto
            {
                Description = "1234567890123456789012345678901123456789012345678901234567890112345678901234567890123456789011234567890123456789012345678901" +
                              "123456789012345678901234567890112345678901234567890123456789011234567890123456789012345678901123456789012345678901234567890123456789"
            };

            validTicketTariffDto.Description.Length.Should().Be(256);
            _validator.ShouldNotHaveValidationErrorFor(x => x.Description, validTicketTariffDto);
        }
示例#8
0
        public void Validate__Description_has_more_than_256_characters__Should_be_invalid()
        {
            var invalidTicketTariffDto = new TicketTariffDto
            {
                Description = "1234567890123456789012345678901123456789012345678901234567890112345678901234567890123456789011234567890123456789012345678901" +
                              "1234567890123456789012345678901123456789012345678901234567890112345678901234567890123456789011234567890123456789012345678901" +
                              "1234567890123456789012345678901123456789012345678901234567890112345678901234567890123456789011234567890123456789012345678901"
            };

            invalidTicketTariffDto.Description.Length.Should().BeGreaterThan(256);
            _validator.ShouldHaveValidationErrorFor(x => x.Description, invalidTicketTariffDto);
        }
        public async Task <IActionResult> AddVisitsTicketTariffAsync(string visitTariffId, [FromBody] TicketTariffDto ticketTariff)
        {
            _logger.LogInformation($"Starting method '{nameof(AddVisitsTicketTariffAsync)}'.");

            if (string.IsNullOrEmpty(visitTariffId))
            {
                return(OnInvalidParameterError($"Parameter '{nameof(visitTariffId)}' cannot be null or empty."));
            }

            TicketTariff ticketTariffToBeAdded = null;
            VisitTariff  visitTariff           = null;

            try
            {
                visitTariff = await _visitTariffDbService.GetAsync(visitTariffId);

                // Ignore Id if the client set it. Id of entity is set internally by the server.
                ticketTariff.Id = null;

                ticketTariffToBeAdded = MapToDomainModel(ticketTariff);

                var addedTicketTariff = await _ticketTariffDbService.RestrictedAddAsync(ticketTariffToBeAdded);

                // Add new ticket tariff to parent visit tariff.
                visitTariff.TicketTariffs.Add(addedTicketTariff);
                await _visitTariffDbService.RestrictedUpdateAsync(visitTariff);

                // Reverse map only for response to the client.
                var    addedTariffDto       = MapToDto(addedTicketTariff);
                var    response             = new ResponseWrapper(addedTariffDto);
                string addedTicketTariffUrl = $"{ControllerPrefix}/{addedTicketTariff.Id}";
                _logger.LogInformation($"Finished method '{nameof(AddVisitsTicketTariffAsync)}'.");

                return(Created(addedTicketTariffUrl, response));
            }
            catch (InvalidOperationException ex) when(visitTariff is null)
            {
                return(OnNotFoundError($"Cannot found '{typeof(VisitTariff).Name}' with specified id: '{visitTariffId}'.", ex));
            }
            catch (InvalidOperationException ex)
            {
                return(OnInvalidParameterError($"Element '{typeof(TicketTariff).Name}' already exists.", ex));
            }
            catch (InternalDbServiceException ex)
            {
                LogInternalDbServiceException(ex, _ticketTariffDbService.GetType());
                throw;
            }
            catch (Exception ex)
            {
                LogUnexpectedException(ex);
                throw;
            }
        }
 private TicketTariff MapToDomainModel(TicketTariffDto tariffDto) => _mapper.Map <TicketTariff>(tariffDto);
        public async Task <IActionResult> UpdateVisitsTicketTariffAsync(string visitTariffId, string ticketTariffId, [FromBody] TicketTariffDto ticketTariff)
        {
            _logger.LogInformation($"Starting method '{nameof(UpdateVisitsTicketTariffAsync)}'.");

            if (string.IsNullOrEmpty(visitTariffId) || string.IsNullOrEmpty(ticketTariffId))
            {
                return(OnInvalidParameterError($"Arguments '{nameof(visitTariffId)}' and '{nameof(ticketTariffId)}' cannot be null or empty."));
            }

            if (!ticketTariffId.Equals(ticketTariff.Id))
            {
                return(OnMismatchParameterError($"An '{nameof(ticketTariffId)}' in URL end field '{nameof(ticketTariff.Id)}' in request body mismatches. Value in URL: '{ticketTariffId}'. " +
                                                $"Value in body: '{ticketTariff.Id}'."));
            }

            VisitTariff parentVisitTariff = null;

            try
            {
                parentVisitTariff = await _visitTariffDbService.GetAsync(visitTariffId);

                var ticketTariffToBeUpdated = MapToDomainModel(ticketTariff);
                var updatedTicketTariff     = await _ticketTariffDbService.RestrictedUpdateAsync(ticketTariffToBeUpdated);

                // Update parent VisitTariff by adding
                parentVisitTariff.TicketTariffs.Add(updatedTicketTariff);
                await _visitTariffDbService.RestrictedUpdateAsync(parentVisitTariff);

                // Revers map for client response.
                var updatedTicketTariffDto = MapToDto(updatedTicketTariff);
                var response = new ResponseWrapper(updatedTicketTariffDto);
                _logger.LogInformation($"Finished method '{nameof(UpdateVisitsTicketTariffAsync)}'");
                return(Ok(response));
            }
            catch (InvalidOperationException ex) when(parentVisitTariff is null)
            {
                return(OnNotFoundError($"Cannot found '{typeof(VisitTariff).Name}' with specified id: '{visitTariffId}'.", ex));
            }
            catch (InvalidOperationException ex)
            {
                return(OnNotFoundError($"Cannot found '{typeof(TicketTariff).Name}' with specified id: '{ticketTariffId}'.", ex));
            }
            catch (InternalDbServiceException ex)
            {
                LogInternalDbServiceException(ex, _ticketTariffDbService.GetType());
                throw;
            }
            catch (Exception ex)
            {
                LogUnexpectedException(ex);
                throw;
            }
        }