public async Task <ActionResult> Create([FromBody] CardPostDto cardDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userId = ApplicationUserConfiguration.StudentIdTmp; var card = _mapper.Map <Card>(cardDto); card.Status = CardStatus.Todo; await _unitOfWork.Cards.Add(card); await _unitOfWork.Complete(); var cardGetDto = _mapper.Map <CardGetDto>(card); cardGetDto.SupervisorCreated = card.SupervisorId.HasValue; cardGetDto.Expired = cardGetDto.StartTime == null ? (DateTime.Today - cardGetDto.DueDate.Date).Days >= 1 : (cardGetDto.StartTime + cardGetDto.Duration) < DateTime.Now; cardGetDto.Editable = !cardGetDto.Expired && card.Status != CardStatus.Done; return(Created(string.Empty, cardGetDto)); }
public ActionResult <CardGetDto> Post([FromBody] CardPostDto value) { // Validate var validateResult = _dtoValidationService.ValidateOpenCardDto(value); if (validateResult.HasErrors()) { ModelState.AddErrors(validateResult); } if (!ModelState.IsValid) { _logger.LogStateWarning("This model is invalid.", ModelState); return(BadRequest(ModelState)); } // Select var user = _userRepository.GetUser(User.Identity.Name, false); if (user == null) { return(Forbid()); } var(card, openResult) = _bankService.TryOpenNewCard( user, value.Name, (Currency)value.Currency, (CardType)value.Type); if (openResult.HasErrors()) { ModelState.AddErrors(openResult); _logger.LogStateError("Opening card was unsuccessfully.", ModelState); return(BadRequest(ModelState)); } // Mapping var dto = _dtoFactory.Map(card, TryValidateModel); switch (dto) { // Validate case null: _logger.LogError("Opening card was unsuccessfully."); return(BadRequest("Не удалось выпустить карту")); default: return(Created($"/api/cards/{dto.Number}", dto)); } }
public Card GenerateFakeCard(CardPostDto cardDto) { var card = new Card { Transactions = new List <Transaction>(), CardNumber = _cardNumberGenerator.GenerateNewCardNumber(CardType.MAESTRO), CardName = cardDto.Name, Currency = (Currency)cardDto.Currency, CardType = (CardType)cardDto.Type, DtOpenCard = DateTime.Parse("01-01-2019") }; _cardService.TryAddBonusOnOpen(card); return(card); }
private void PostCard_Field_ReturnBadRequest( CardPostDto cardDto, IEnumerable <CustomModelError> validationResultFake) { // Arrange _dtoValidationServiceMock.Setup(s => s.ValidateOpenCardDto(cardDto)).Returns(validationResultFake); // Act var result = (BadRequestObjectResult)_controller.Post(cardDto).Result; // Assert _dtoValidationServiceMock.Verify(v => v.ValidateOpenCardDto(cardDto), Times.Once); _bankServiceMock.Verify( v => v.TryOpenNewCard(_user, cardDto.Name, (Currency)cardDto.Currency, (CardType)cardDto.Type), Times.Never); Assert.Equal(400, result.StatusCode); }
/// <inheritdoc /> public IEnumerable <CustomModelError> ValidateOpenCardDto(CardPostDto card) { var result = new List <CustomModelError>(); result .AddError(() => card.Type <= 0 || card.Type > 4, "type", "Card type is invalid", "Тип карты неверный", TypeCriticalException.CARD) .AddError(() => card.Currency < 0 || card.Currency > 2, "currency", "Currency is invalid", "Валюта карты неверная", TypeCriticalException.CARD); return(result); }
public void PostCard_WrongType_ReturnBadRequest(int type) { // Arrange var cardDto = new CardPostDto { Name = "name", Currency = 0, Type = type }; var validationResultFake = new List <CustomModelError> { new CustomModelError { FieldName = "currency", Message = string.Empty } }; _isUserCall = false; PostCard_Field_ReturnBadRequest(cardDto, validationResultFake); }
public void PostCard_InternalError_ReturnBadRequest() { // Arrange var cardDto = new CardPostDto { Name = "my card", Currency = 0, Type = 1 }; _dtoValidationServiceMock .Setup(m => m.ValidateOpenCardDto(cardDto)).Returns(Enumerable.Empty <CustomModelError>()); _bankServiceMock .Setup(r => r.TryOpenNewCard(_user, cardDto.Name, (Currency)cardDto.Currency, (CardType)cardDto.Type)) .Returns( (null, new List <CustomModelError> { new CustomModelError { FieldName = "internal", Message = "Add bonus to card failed", LocalizedMessage = "Ошибка при открытии карты" } })); // Act var result = (BadRequestObjectResult)_controller.Post(cardDto).Result; // Assert _dtoValidationServiceMock.Verify(v => v.ValidateOpenCardDto(cardDto), Times.Once); _bankServiceMock.Verify( v => v.TryOpenNewCard(_user, cardDto.Name, (Currency)cardDto.Currency, (CardType)cardDto.Type), Times.Once); Assert.Equal(400, result.StatusCode); }
private CardPostDto PostCard_ValidDto() { var cardDto = new CardPostDto { Name = "my card", Currency = 0, Type = 1 }; var fakeCard = _testDataGenerator.GenerateFakeCard(cardDto); var fakeCardGetDto = TestDataGenerator.GenerateFakeCardGetDto(fakeCard); _dtoValidationServiceMock .Setup(m => m.ValidateOpenCardDto(cardDto)).Returns(Enumerable.Empty <CustomModelError>()); _bankServiceMock .Setup(r => r.TryOpenNewCard(_user, cardDto.Name, (Currency)cardDto.Currency, (CardType)cardDto.Type)) .Returns((fakeCard, Enumerable.Empty <CustomModelError>())); _dtoFactoryMock.Setup(d => d.Map(fakeCard, It.IsAny <Func <CardGetDto, bool> >())) .Returns(fakeCardGetDto); return(cardDto); }