public AdicionarUmaPessoaResposta AdicionarUmaPessoa(AdicionarUmaPessoaRequisicao requisicao, int codPrograma) { var resposta = new AdicionarUmaPessoaResposta(); try { var departamento = _departamentoRepositorio.ObterPor(requisicao.CodigoDoDepartamento); var perfil = _perfilRepositorio.ObterPor(requisicao.CodigoDoPerfil); var senha = GeradorDeSenhas.Gerar(GeradorDeSenhas.RandomType.Alphanumeric, 8); var novoUsuario = new Usuario(requisicao.NomeDeUsuario, senha, perfil); var existeEmailCadastrado = _pessoaRepositorio.ObterPeloNomeDeUsuario(requisicao.NomeDeUsuario); if (existeEmailCadastrado != null) { novoUsuario.RegraQuebrada(RegrasDeNegocioPessoa.EmailJaExiste); } novoUsuario.AlterarSenha(Crypto.HashPassword(senha)); var programas = requisicao.CodigosDosProgramas.Select(codigoDoPrograma => _programaRepositorio.ObterPor(codigoDoPrograma)).ToList(); //perfil.Grupo.Codigo if (perfil.Grupo.Codigo == 1) { departamento = _departamentoRepositorio.ObterPor(1); var cargo = _cargoRepositorio.ObterPor(1); _funcionarioServico.AdicionarUmNovoFuncionario(requisicao.Nome, requisicao.Telefone, novoUsuario, departamento, cargo, programas, requisicao.Descricao); } else { var cliente = _clienteServico.AdicionarUmNovoCliente(requisicao.Nome, requisicao.Telefone, requisicao.Inativo, novoUsuario, programas); var tipoDoCrm = _tipoDeCrmRepositorio.ObterPor(requisicao.CodigoDoTipoDeCrm); if (tipoDoCrm != null) { var crm = new CRM(requisicao.NumeroDoCrm, tipoDoCrm, requisicao.NomeDoCrm); cliente.InformarCrm(crm); } } foreach (var programa in programas) { EnviarEmailParaNovoUsarioDoPrograma(programa.Codigo, novoUsuario, senha); break; } _unitOfWork.Commit(); resposta.Sucesso = true; } catch (RegraException regraDeNegocio) { resposta.Erros = regraDeNegocio.Erros.ToList(); } return(resposta); }
public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); var httpContext = filterContext.HttpContext; if (!httpContext.User.Identity.IsAuthenticated) { return; } var pessoa = _pessoaRepositorio.ObterPeloNomeDeUsuario(httpContext.User.Identity.Name); var modulo = _moduloRepositorio.ObterPor(Modulo); if (modulo == null) { if (pessoa != null && Modulo.ToUpper().Equals("TODOS") && httpContext.Session.ProgramaAtivo() == null) { httpContext.Session.SetProgramaAtivo(pessoa.ProgramasPermitidos[0]); } return; } if (modulo.TemPermissao(pessoa.Usuario)) { httpContext.Session.SetProgramaAtivo(httpContext.Session.ProgramaAtivo() ?? pessoa.ProgramasPermitidos[0]); return; } SemAutorizacaoParaAcessarEssaArea(filterContext); }