public AlterarUmaPessoaResposta AlterarUmaPessoa(AlterarUmaPessoaRequisicao requisicao)
        {
            var resposta = new AlterarUmaPessoaResposta();
            try
            {
                var departamento = _departamentoRepositorio.ObterPor(requisicao.CodigoDoDepartamento);

                var perfil = _perfilRepositorio.ObterPor(requisicao.CodigoDoPerfil);

                var programas = requisicao.CodigosDosProgramas.Select(_programaRepositorio.ObterPor).ToList();

                if (perfil.Grupo.Codigo == 1)
                {
                    var cargo = _cargoRepositorio.ObterPor(requisicao.CodigoDoCargo);
                    var funcionario = _funcionarioRepositorio.ObterPor(requisicao.Codigo);
                    funcionario.Usuario.NomeDeUsuario = requisicao.NomeDeUsuario;
                    funcionario.Cargo = cargo ?? _cargoRepositorio.ObterPor(1);
                    funcionario.Usuario.Perfil = perfil;
                    funcionario.Departamento = departamento ?? _departamentoRepositorio.ObterPor(1);
                    funcionario.ProgramasPermitidos.Clear();
                    funcionario.ProgramasPermitidos = programas;
                    funcionario.Nome = requisicao.Nome;
                    funcionario.Telefone = requisicao.Telefone;
                    funcionario.Descricao = requisicao.Descricao;
                    funcionario.Inativo = requisicao.Inativo;
                }
                else
                {
                    var cliente = _clienteRepositorio.ObterPor(requisicao.Codigo);
                    cliente.Usuario.NomeDeUsuario = requisicao.NomeDeUsuario;
                    cliente.Nome = requisicao.Nome;
                    cliente.Telefone = requisicao.Telefone;
                    cliente.ProgramasPermitidos.Clear();
                    cliente.ProgramasPermitidos = programas;
                    cliente.Usuario.Perfil = perfil;
                    cliente.Inativo = requisicao.Inativo;
                    if (cliente.Crm != null)
                    {
                        if (cliente.Crm.Tipo.Codigo != requisicao.CodigoDoTipoDeCrm)
                        {
                            var tipoDoCrm = _tipoDeCrmRepositorio.ObterPor(requisicao.CodigoDoTipoDeCrm);
                            var crm = new CRM(requisicao.NumeroDoCrm, tipoDoCrm, requisicao.NomeDoCrm);
                            cliente.InformarCrm(crm);
                        }
                        else
                        {
                            cliente.Crm.NumeroDoCRM = requisicao.NumeroDoCrm;
                            cliente.Crm.NomeDoCRM = requisicao.NomeDoCrm;
                        }
                    }
                    else
                    {
                        var tipoDoCrm = _tipoDeCrmRepositorio.ObterPor(requisicao.CodigoDoTipoDeCrm);
                        var crm = new CRM(requisicao.NumeroDoCrm, tipoDoCrm, requisicao.NomeDoCrm);
                        cliente.InformarCrm(crm);
                    }
                }
                _unitOfWork.Commit();
                resposta.Sucesso = true;
            }
            catch (RegraException regraDeNegocio)
            {
                resposta.Erros = regraDeNegocio.Erros.ToList();
            }

            return resposta;
        }
 private object EditarPessoa(AdicionarUsuarioViewModel viewModel)
 {
     var novoUsuarioRequisicao = new AlterarUmaPessoaRequisicao
     {
         Codigo = viewModel.Codigo,
         CodigoDoPerfil = viewModel.PerfilSelecionado,
         CodigoDoTipoDeCrm = viewModel.TipoDeCrmSelecionado,
         NumeroDoCrm = viewModel.NumeroDoCrm,
         CodigoDoDepartamento = viewModel.CodigoDoDepartamento,
         CodigoDoCargo = viewModel.CodigoDoCargo,
         Nome = viewModel.Nome,
         Telefone = viewModel.Telefone,
         Inativo = viewModel.Status,
         NomeDeUsuario = viewModel.NomeDeUsuario,
         Descricao = viewModel.DescricaoDoCargo,
         CodigosDosProgramas = viewModel.CodigosDosProgramas,
         NomeDoCrm = viewModel.NomeDoCrm
     };
     var resposta = _pessoaServicoDeAplicacao.AlterarUmaPessoa(novoUsuarioRequisicao);
     return resposta;
 }