public IActionResult Post([FromBody] RegisterHolidayRequestModel holidayRequest) { var userId = Helpers.GetUserIdFromClaimsPrincipal(User); var inputDto = new RegisterHolidayRequestInputDto( holidayRequest.From, holidayRequest.To, holidayRequest.Remarks, holidayRequest.HolidayType, userId); var outputDto = RegisterHolidayRequestService.Register(inputDto); if (outputDto.IsSuccessful) { return(Ok(outputDto.Result)); } else { return(BadRequest(outputDto.ValidationResult)); } }
public RegisterHolidayRequestOutputDto Register(RegisterHolidayRequestInputDto request) { // validate dto var dtoValidationResult = RegisterHolidayRequestInputDtoValidator.Validate(request).ToTRValidationResult(); if (!dtoValidationResult.IsValid) { return(new RegisterHolidayRequestOutputDto(dtoValidationResult)); } // get referential data var holidayType = HolidayTypeRepository.GetByKey(request.HolidayType); var user = UserRepository.GetByKey(request.UserId); // create entity var holidayRequestEntity = new HolidayRequestEntity() { From = request.From, To = request.To, Remarks = request.Remarks, HolidayType = holidayType, User = user }; //validate entity var entityValidationResult = HolidayRequestEntityValidator.Validate(holidayRequestEntity).ToTRValidationResult(); if (!entityValidationResult.IsValid) { return(new RegisterHolidayRequestOutputDto(entityValidationResult)); } //save entity if (entityValidationResult.IsValid) { HolidayRequestRepository.Register(holidayRequestEntity); } return(new RegisterHolidayRequestOutputDto(holidayRequestEntity.ToDto())); }
public void Given_HolidayRequest_When_Validate_Then_ExpectedOutcome( RegisterHolidayRequestInputDto input, bool holidayRequestRepoResult, bool isValid, List <string> errors) { errors = errors ?? new List <string>(); // Arrange var holidayTypeRepoMock = new Mock <IHolidayTypeRepository>(); holidayTypeRepoMock .Setup(x => x.ExistsByKey(It.IsAny <string>())) .Returns(false); holidayTypeRepoMock .Setup(x => x.ExistsByKey(It.Is <string>(s => s == "N"))) .Returns(true); var holidayRequestRepoMock = new Mock <IHolidayRequestRepository>(); holidayRequestRepoMock .Setup(x => x.ExistsByToAndFrom(It.IsAny <DateTime>(), It.IsAny <DateTime>(), It.IsAny <long>())) .Returns(holidayRequestRepoResult); var sut = new RegisterHolidayRequestInputDtoValidator( holidayTypeRepoMock.Object, holidayRequestRepoMock.Object); // Act var actual = sut.Validate(input); // Assert Assert.Equal(isValid, actual.IsValid); Assert.Equal(errors.Count, actual.Errors.Count); for (var i = 0; i < errors.Count; i++) { Assert.Equal(errors[i], actual.Errors[i].ErrorMessage); } }