public void UpdatedUser(Guid id, string name, string email, string login, string password, bool active, Role role, User loggedUser) { var userRepository = new UserRepository(_context); var user = userRepository.GetById(id); var userByAccount = userRepository.GetByLogin(login); if (userByAccount != null && userByAccount.Id != id) { throw new ApplicationException(Resource.AnotherUserToThisLoginException); } User updatedUser = null; switch (role) { case Role.Admin: updatedUser = new Admin(); break; case Role.Teacher: updatedUser = new Teacher(); break; case Role.Student: updatedUser = new Student(); break; default: throw new ArgumentOutOfRangeException(nameof(role), role, null); } updatedUser.Id = id; updatedUser.Name = name; updatedUser.Active = active; updatedUser.Password = password != user.Password ? _crypt.Encrypt(password) : password; updatedUser.Login = login; updatedUser.Email = email; updatedUser.CreatedAt = user.CreatedAt; var analyzer = new DiffAnalyzer(); var differences = analyzer.Compare(_context.UnProxy(user), updatedUser); var diffText = new StringBuilder($"{Resource.PersonalInfoUpdatedTitle}:{Environment.NewLine}<br />"); //foreach (var item in differences) // diffText.AppendLine(item.PropertyName == "Password" // ? $"- {Resource.PasswordUpdatedNoticeMessage} <br />" // : $"- {item.PropertyName} {Resource.PersonalInfoUpdatedFrom} {item.OldValue} {Resource.PersonalInfoUpdatedTo} {item.NewValue}<br />"); var updatingNotice = new Notice { Text = diffText.ToString(), DateTime = DateTime.Now, User = user }; _context.GetList <Notice>().Add(updatingNotice); _context.Update(user, updatedUser); _context.Save(loggedUser); }
public void TestMethod1() { var before = new Usuario { Id = 1, Nome = "Michael", Apelidos = new List <string> { "Mike", "MK" }, Enderecos = new List <Endereco> { new Endereco() { Logradouro = "1st street", UF = new UF() { Nome = "SP", Cidades = new[] { new Cidade { Nome = "Sao Paulo" }, new Cidade { Nome = "Santos" } }, }, }, }, Telefones = new List <Telefone> { new Telefone() { DDD = "11", Numero = "91234-5678", Tipo = TipoTelefone.Celular } } }; var after = new Usuario { Id = 1, Nome = "Michael", Apelidos = new List <string> { "None", }, Telefones = new List <Telefone> { new Telefone() { DDD = "11", Numero = "1234-5678", Tipo = TipoTelefone.Comercial } } }; var analyzer = new DiffAnalyzer(); var results = analyzer.Compare(before, after); }