public async Task RegistrationCarService(RegistrationCarServiceDto dto, string directory) { ValidationResult validationResult; try { validationResult = _validationManager.ValidateRegistrationCarServiceDto(dto); } catch (ArgumentNullException ex) { DeleteDirectoryWithFiles(directory); throw new BusinessFaultException(ex.ParamName); } if (validationResult.HasErrors) { DeleteDirectoryWithFiles(directory); throw new BusinessFaultException(validationResult.GetErrors()); } var user = Mapper.Map <ApplicationUser>(dto); user.CarService = CreateCarService(dto); user.Id = Guid.NewGuid().ToString(); user.EmailConfirmed = true; await CreateUser(user, dto.Password, CommonRoles.CarService); }
private CarService CreateCarService(RegistrationCarServiceDto dto) { var carService = Mapper.Map <CarService>(dto); carService.City = _unitOfWork.Repository <ICityRepository>().Get(dto.CityId); carService.Phones = Mapper.Map <List <CarServicePhone> >(dto.Phones); if (dto.WorkTypes != null && dto.WorkTypes.Any()) { var repository = _unitOfWork.Repository <IWorkTypeRepository>(); carService.WorkTypes = new List <WorkType>(); foreach (var workTypeId in dto.WorkTypes) { carService.WorkTypes.Add(repository.Get(workTypeId)); } } if (dto.CarTags != null && dto.CarTags.Any()) { var repository = _unitOfWork.Repository <ICarMarksRepository>(); carService.CarTags = new List <CarMark>(); foreach (var carTagId in dto.CarTags) { carService.CarTags.Add(repository.Get(carTagId)); } } carService.Files = new List <CarServiceFile>(); if (dto.Logo != null) { var logo = Mapper.Map <CarServiceFile>(dto.Logo); logo.Type = FileType.Logo; carService.Files.Add(logo); } if (dto.Photos != null && dto.Photos.Any()) { ((List <CarServiceFile>)carService.Files).AddRange(Mapper.Map <List <CarServiceFile> >(dto.Photos)); } return(carService); }
public void ValidateRegistrationCarServiceDto_Must_Validate_Registration_CarService_Dto_With_All_Possible_Errors(bool withPhones) { //Arrange var phone1 = "+79785166623125532"; var phone2 = "79784124216546"; var dto = new RegistrationCarServiceDto { Login = "******", Password = "******", PasswordСonfirmation = "qwerty1", Name = null, CityId = 1, Address = "", Email = "test@@test.com", Phones = withPhones ? new List <string> { phone1, phone2 } : new List <string>(), ManagerName = "", Site = "http12s://test.com", CarTags = new List <long> { 1 }, WorkTypes = new List <long> { 1 }, Logo = new FileDto { Name = "Test.exe", Path = "Test" }, Photos = new List <FileDto> { new FileDto { Name = "test.txt", Path = "test" }, new FileDto { Name = "test.raw", Path = "test" } } }; var marksRepository = new Mock <ICarMarksRepository>(); marksRepository.Setup(act => act.Get(It.IsAny <long>())).Returns((CarMark)null); _unitOfWorkMock.Setup(act => act.Repository <ICarMarksRepository>()).Returns(marksRepository.Object); var cityRepository = new Mock <ICityRepository>(); cityRepository.Setup(act => act.Get(dto.CityId)).Returns((City)null); _unitOfWorkMock.Setup(act => act.Repository <ICityRepository>()).Returns(cityRepository.Object); //Act ValidationResult result = null; Assert.DoesNotThrow(() => result = _manager.ValidateRegistrationCarServiceDto(dto)); //Assert Assert.True(result.HasErrors); Assert.AreEqual(ValidationErrorResources.LoginIsNotValid, result.Errors[0]); Assert.AreEqual(ValidationErrorResources.PasswordsNotMatch, result.Errors[1]); Assert.AreEqual(ValidationErrorResources.CarServiceNameIsEmpty, result.Errors[2]); Assert.AreEqual(ValidationErrorResources.CityNotFound, result.Errors[3]); Assert.AreEqual(ValidationErrorResources.CarServiceAddressIsEmpty, result.Errors[4]); Assert.AreEqual(ValidationErrorResources.CarServiceContactEmailIsInvalid, result.Errors[5]); if (withPhones) { Assert.AreEqual(string.Format(ValidationErrorResources.CarServicePhoneIsIncorrect, phone1), result.Errors[6]); Assert.AreEqual(string.Format(ValidationErrorResources.CarServicePhoneIsIncorrect, phone2), result.Errors[7]); Assert.AreEqual(ValidationErrorResources.CarServiceManagerNameIsEmpty, result.Errors[8]); Assert.AreEqual(ValidationErrorResources.CarServiceSiteIsIncorrect, result.Errors[9]); Assert.AreEqual(string.Format(ValidationErrorResources.CarMarkNotFound, "1"), result.Errors[10]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Logo.Name), result.Errors[12]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Photos[0].Name), result.Errors[13]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Photos[1].Name), result.Errors[14]); } else { Assert.AreEqual(ValidationErrorResources.CarServicePhonesIsEmpty, result.Errors[6]); Assert.AreEqual(ValidationErrorResources.CarServiceManagerNameIsEmpty, result.Errors[7]); Assert.AreEqual(ValidationErrorResources.CarServiceSiteIsIncorrect, result.Errors[8]); Assert.AreEqual(string.Format(ValidationErrorResources.CarMarkNotFound, "1"), result.Errors[9]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Logo.Name), result.Errors[11]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Photos[0].Name), result.Errors[12]); Assert.AreEqual(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Photos[1].Name), result.Errors[13]); } }
public void ValidateRegistrationCarServiceDto_Must_Validate_Registration_CarService_Dto_Without_Errors() { //Arrange var dto = new RegistrationCarServiceDto { Login = "******", CityId = 1, Password = "******", PasswordСonfirmation = "qwerty", Name = "Test", Address = "Test", Email = "*****@*****.**", Phones = new List <string> { "+79785125532", "+79784216546" }, ManagerName = "Test", Site = "https://test.com", TimetableWorks = "Test", WorkTypes = new List <long> { 1, 2 }, CarTags = new List <long> { 1, 2 }, Logo = new FileDto { Name = "Test.png", Path = "Test" }, Photos = new List <FileDto> { new FileDto { Name = "test.png", Path = "test" }, new FileDto { Name = "test.png", Path = "test" } }, About = "test" }; var marksRepository = new Mock <ICarMarksRepository>(); marksRepository.Setup(act => act.Get(It.IsAny <long>())).Returns(new CarMark()); _unitOfWorkMock.Setup(act => act.Repository <ICarMarksRepository>()).Returns(marksRepository.Object); var cityRepository = new Mock <ICityRepository>(); cityRepository.Setup(act => act.Get(dto.CityId)).Returns(new City()); _unitOfWorkMock.Setup(act => act.Repository <ICityRepository>()).Returns(cityRepository.Object); //Act ValidationResult result = null; Assert.DoesNotThrow(() => result = _manager.ValidateRegistrationCarServiceDto(dto)); //Assert Assert.False(result.HasErrors); }
public ValidationResult ValidateRegistrationCarServiceDto(RegistrationCarServiceDto dto) { if (dto == null) { throw new ArgumentNullException(ArgumentExceptionResources.RegistrationDtoNotFound); } var validationResult = new ValidationResult("Регистрация автосервиса"); ValidateRegistartionBaseDto(dto, validationResult); if (string.IsNullOrEmpty(dto.Name)) { validationResult.AddError(ValidationErrorResources.CarServiceNameIsEmpty); } var city = _unitOfWork.Repository <ICityRepository>().Get(dto.CityId); if (city == null) { validationResult.AddError(ValidationErrorResources.CityNotFound); } if (string.IsNullOrEmpty(dto.Address)) { validationResult.AddError(ValidationErrorResources.CarServiceAddressIsEmpty); } if (IsInvalidEmail(dto.Email)) { validationResult.AddError(ValidationErrorResources.CarServiceContactEmailIsInvalid); } if (dto.Phones == null || !dto.Phones.Any()) { validationResult.AddError(ValidationErrorResources.CarServicePhonesIsEmpty); } if (dto.Phones != null) { foreach (var phone in dto.Phones) { if (IsInvalidPhoneNumber(phone)) { validationResult.AddError(string.Format(ValidationErrorResources.CarServicePhoneIsIncorrect, phone)); } } } if (string.IsNullOrEmpty(dto.ManagerName)) { validationResult.AddError(ValidationErrorResources.CarServiceManagerNameIsEmpty); } var regex = new Regex("^(http|https)://"); if (string.IsNullOrEmpty(dto.Site) || !regex.IsMatch(dto.Site)) { validationResult.AddError(ValidationErrorResources.CarServiceSiteIsIncorrect); } if (dto.WorkTypes != null && dto.WorkTypes.Any()) { var repository = _unitOfWork.Repository <IWorkTypeRepository>(); foreach (var workType in dto.WorkTypes) { var type = repository.Get(workType); if (type == null) { validationResult.AddError(string.Format(ValidationErrorResources.WorkTypeNotFound, workType)); } } } else { validationResult.AddError(ValidationErrorResources.WorkTypeRequired); } if (dto.CarTags != null && dto.CarTags.Any()) { var repository = _unitOfWork.Repository <ICarMarksRepository>(); foreach (var carTagId in dto.CarTags) { var mark = repository.Get(carTagId); if (mark == null) { validationResult.AddError(string.Format(ValidationErrorResources.CarMarkNotFound, carTagId)); } } } if (dto.Logo != null && !IsImage(dto.Logo.Name)) { validationResult.AddError(string.Format(ValidationErrorResources.InvalidFileExtension, dto.Logo.Name)); } if (dto.Photos != null && dto.Photos.Any()) { if (dto.Photos.Count > 5) { validationResult.AddError(ValidationErrorResources.PhotosToMuch); } foreach (var photo in dto.Photos) { if (!IsImage(photo.Name)) { validationResult.AddError(string.Format(ValidationErrorResources.InvalidFileExtension, photo.Name)); } } } return(validationResult); }