public CommandResult Update(ProductUpdateCommand command)
        {
            var product = _repository.GetById(command.Id);

            if (product == null)
            {
                return(new CommandResult(false, "Produto não encontrado na base de dados. ", null));
            }

            var exist = _repository.ExistsUpdate(command.Name, command.Id);

            if (exist)
            {
                return(new CommandResult(false, "Já existe outro Produto cadatrado com esse Nome. ", null));
            }

            product.Update(command.Name, command.Price);

            AddNotifications(product);
            if (Invalid)
            {
                return(new CommandResult(false, GroupNotifications.Group(Notifications), null));
            }

            _repository.Update(product);

            return(new CommandResult(true, "Produto atualizado com sucesso!. ", product));
        }
        public CommandResultToken Login(UserLoginCommand command)
        {
            var user = _repository.GetSalt(command.Username);

            if (user == null)
            {
                return(new CommandResultToken(false, "Login inválido. ", null));
            }

            var salt_tabela = user.Salt;

            byte[] salt         = Convert.FromBase64String(salt_tabela);
            var    hashPassword = Hash.Create(command.Password, salt); // <-- monta hash para comparação / login

            user = _repository.Login(command.Username, hashPassword);
            if (user == null)
            {
                return(new CommandResultToken(false, "Login inválido. ", null));
            }

            if (user.Active == false && user.Role == null)
            {
                AddNotification("Aguardando liberação de acesso.. Contacte o Gestor da aplicação se deseja agilizar a liberação. ");
            }
            else if (user.Active == false)
            {
                AddNotification("Usuário inativo. Contacte o Administrado. ");
            }

            if (Invalid)
            {
                return(new CommandResultToken(false, GroupNotifications.Group(Notifications), null));
            }

            var log = new AccessLog(
                "Login",
                DateTime.Now,
                command.Username,
                null,
                null);

            _log.Register(log);

            user.HidePassword();

            return(new CommandResultToken(true, "Login efetuado com sucesso! ", user));
        }
        public CommandResult UpdatePassword(UpdatePasswordUserCommand command, string userIdentity)
        {
            // verificação da validade do usuario e senha
            var user = _repository.GetSalt(command.Username);

            if (user == null)
            {
                return(new CommandResult(false, "Login inválido. ", command));
            }

            var salt_tabela = user.Salt;

            byte[] salt         = Convert.FromBase64String(salt_tabela);
            var    hashPassword = Hash.Create(command.Password, salt);

            user = _repository.Login(command.Username, hashPassword);
            if (user == null)
            {
                return(new CommandResult(false, "Senha antiga não confere. ", command));
            }

            // criacao de novo hash para a nova senha
            hashPassword = Hash.Create(command.NewPassword, salt);

            user.UpdatePassword(hashPassword);

            AddNotifications(user);
            if (Invalid)
            {
                return(new CommandResult(false, GroupNotifications.Group(Notifications), command));
            }

            _repository.UpdatePassword(user.Id, hashPassword);

            var log = new AccessLog(
                "UpdatePassword",
                DateTime.Now,
                userIdentity,
                "UserAuth",
                $"Usuário alterado: {command.Username}");

            _log.Register(log);

            user.HidePassword();

            return(new CommandResultToken(true, "Senha alterada com sucesso! ", user));
        }
        public CommandResult RegisterAdmin(UserRegisterAdminCommand command, string userIdentity)
        {
            var exist = _repository.Exists(command.Username);

            if (exist)
            {
                AddNotification("Já existe um usuario cadastrado com esse nome. ");
            }

            var user = new UserAuth(command.Username, command.Password, command.Role, command.Active);

            AddNotifications(user);

            if (Invalid)
            {
                return(new CommandResult(false, GroupNotifications.Group(Notifications), command));
            }

            // Add Hash e Salt
            var salt = Salt.Create();
            var hash = Hash.Create(user.Password, salt);

            if (!Hash.Validate(user.Password, salt, hash))
            {
                AddNotification("Erro na geração do Hash. ");
            }

            user.AddHash(hash, Convert.ToBase64String(salt));

            _repository.Register(user);

            var log = new AccessLog(
                "Register",
                DateTime.Now,
                userIdentity,
                "UserAuth",
                $"Nome usuario registrado: {command.Username}");

            _log.Register(log);

            user.HidePassword();

            return(new CommandResult(true, "Cadastro realizado. ", user));
        }
        public CommandResult AddPromotion(ProductPromotionCommand command)
        {
            var product = _repository.GetById(command.Id);

            if (product == null)
            {
                return(new CommandResult(false, "Produto não encontrado na base de dados. ", null));
            }

            product.AddPromotion(command.Price);

            AddNotifications(product);
            if (Invalid)
            {
                return(new CommandResult(false, GroupNotifications.Group(Notifications), null));
            }

            _repository.Update(product);

            return(new CommandResult(true, "Preço do Produto atualizado com sucesso! ", product));
        }
        public CommandResult Create(ProductCreateCommand command)
        {
            var exist = _repository.Exists(command.Name);

            if (exist)
            {
                return(new CommandResult(false, "Já existe um Produto cadastrado com esse Nome. ", command));
            }

            var product = new Product(command.Name, command.Price);

            AddNotifications(product);
            if (Invalid)
            {
                return(new CommandResult(false, GroupNotifications.Group(Notifications), command));
            }

            _repository.Create(product);

            return(new CommandResult(true, "Produto cadastrado com sucesso! ", product));
        }
Esempio n. 7
0
        /// <summary>
        ///     calling by Item_SizeChanged
        /// </summary>
        /// <param name="obj"></param>
        private void OnItemClosed(object obj)
        {
            var item = obj.CastAs <NotificationItem>();

            if (item != null)
            {
                item.SizeChanged -= Item_SizeChanged;
                Notifications.Remove(item.NotificationInfo);
            }
            else
            {
                var group = obj.CastAs <GroupNotificationItem>();
                if (group == null)
                {
                    return;
                }

                group.SizeChanged -= Item_SizeChanged;
                GroupNotifications.Remove(group.DataContext as GroupNotificationInfo);
            }
        }