Beispiel #1
0
        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);
        }