private void Update(Entities.User entity, User user, string password = null) { entity.FirstName = user.FirstName; entity.LastName = user.LastName; entity.CompanyId = user.CompanyId.Value; entity.Email = user.Email; entity.CompanyRole = user.CompanyRole; entity.Roles.RemoveAll(ur => user.Roles.All(r => r.BuildingId.Value != ur.BuildingId && r.UserBuildingRole != ur.UserBuildingRole && user.CompanyId.Value != ur.CompanyId)); entity.Roles.AddRange(user.Roles .Where(r => entity.Roles.All(ur => r.BuildingId.Value != ur.BuildingId && r.UserBuildingRole != ur.UserBuildingRole && user.CompanyId.Value != ur.CompanyId)) .Select(r => new UserRole { BuildingId = r.BuildingId.Value, CompanyId = user.CompanyId.Value, UserBuildingRole = r.UserBuildingRole, UserId = entity.Id })); if (password != null) { entity.Password = _bubelSoftUserPassword.Hash(new UserLogInInfo { Email = entity.Email, Password = password }); } }
private static User Create(Entities.User entity) { var user = new User(new UserId(entity.Id), entity.FirstName, entity.LastName, entity.CompanyRole, entity.Email); if (entity.CompanyId != null) { user.From(new CompanyId(entity.CompanyId.Value)); } entity.Roles.ForEach(r => user.AddRole(new BuildingId(r.BuildingId), r.UserBuildingRole)); return(user); }