示例#1
0
        public async Task <IComandoResultado> ManipuladorAsync(EditarBaseFuncionarioComando comando)
        {
            //Validar Cpf Unico
            if (comando.Cpf != comando.CpfAtual && await _repositorio.CheckCpfAsync(comando.Cpf))
            {
                AddNotification("Cpf", "Cpf informado já está em uso no sistema");
            }
            //Validar Email Unico
            if (comando.Email != comando.EmailAtual && await _repositorio.CheckEmailAsync(comando.Email))
            {
                AddNotification("Email", "Email informado já está em uso no sistema");
            }
            //Se o perfil for  =  professor, deve validar se possui turmas ativa. Se sim não prosseguir com atualização
            if (comando.DescPerfilAtual != comando.DescPerfil && await _repositorio.CheckPerfilProfessorTurmaAtivaAsync(comando.Id))
            {
                AddNotification("Perfil", "Funcionario não pode ser atualizado. Exclua as turmas para este professor e tente novamente");
            }
            // Validar Comando
            comando.Valido();

            AddNotifications(comando.Notifications);
            // Validara Vo
            var email = new Email(comando.Email);
            var nome  = new Nome(comando.Nome);
            var cpf   = new Cpf(comando.Cpf);

            AddNotifications(email.Notifications);
            AddNotifications(nome.Notifications);
            AddNotifications(cpf.Notifications);

            //Criar a entidade
            var funcionario = new Funcionario(comando.Id, nome, email, cpf, comando.DataNascimento, comando.IdPerfil, null);

            AddNotifications(funcionario.Notifications);
            if (Invalid)
            {
                return(new ComandoResultado(
                           false,
                           "Por favor, corrija os campos abaixo",
                           Notifications));
            }
            //Persistir os dados

            await _repositorio.EditarAsync(funcionario);

            // Retornar o resultado para tela
            return(new ComandoResultado(true, "Funcionario cadastrado com sucesso", new
            {
                Id = 0,
                Nome = "",
                Status = true
            }));
        }