public Admin CreateAdmin(AddAdminData data) { var validationResult = new AddAdminValidator(_repository).Validate(data); if (!validationResult.IsValid) { throw new RegoException(validationResult.Errors.First().ErrorMessage); } //todo: KB: not sure how input role id can be null. And if it is validation should trigger var role = _repository.Roles.SingleOrDefault(r => r.Id == (data.RoleId ?? new Guid("00000000-0000-0000-0000-000000000002"))); var admin = Mapper.DynamicMap <Admin>(data); using (var scope = CustomTransactionScope.GetTransactionScope()) { admin.Id = Guid.NewGuid(); admin.Role = role; admin.SetLicensees(data.AssignedLicensees); admin.SetAllowedBrands(data.AllowedBrands); admin.SetCurrencies(data.Currencies); if (data.AllowedBrands != null) { foreach (var allowedBrand in data.AllowedBrands) { admin.BrandFilterSelections.Add(new BrandFilterSelection { AdminId = admin.Id, BrandId = allowedBrand, Admin = admin }); } } _authCommands.CreateActor(new CreateActor { ActorId = admin.Id, Username = admin.Username, Password = data.Password }); _authCommands.AssignRoleToActor(new AssignRole { ActorId = admin.Id, RoleId = role.Id }); _repository.Admins.Add(admin); _repository.SaveChanges(); _eventBus.Publish(new AdminCreated(admin)); scope.Complete(); } return(admin); }
public ValidationResult GetValidationResult(AddAdminData data) { var validator = new AddAdminValidator(_repository); return(validator.Validate(data)); }