示例#1
0
        public IActionResult Get(int id)
        {
            try
            {
                Cliente cli = new Cliente();

                using (var db = new ZupContext())
                {
                    cli = db.Cliente.Include(i => i.Telefones).Where(w => w.Id.Equals(id)).FirstOrDefault();
                }

                if (cli != null)
                {
                    return(Ok(cli));
                }
                else
                {
                    ErroModel erro = new ErroModel()
                    {
                        Mensagem = $"Não foi possível encontrar o cliente com o ID {id}"
                    };
                    return(NotFound(erro));
                }
            }
            catch (Exception er)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
                {
                    Mensagem = er.Message,
                    StackTrace = er.StackTrace
                }));
            }
        }
示例#2
0
        private void ServiceTimer_Tick(object sender, ElapsedEventArgs e)
        {
            ErroModel registroErro = new ErroModel();
            var       itens        = DataSharepoint.obtemLista(contextoSharepoint, out registroErro, "Teste");
            string    retornoLista = "<h1>Itens Recuperados</h1>";

            foreach (var item in itens)
            {
                retornoLista += $"<p>Item : {item.Title} - ID da pessoa cadastrada: {item.ID_Pessoa} - Nome Da pessoa: {item.Nome_Pessoa}</p>";
            }
            retornoLista += registroErro.Mensagem;
            string exeption          = "";
            bool   retornoEnvioEmail = Email.EnviaEmail("*****@*****.**",
                                                        "Teste de envio de e-mail",
                                                        $"<h1>E-mail diário automatico.</h1><p>E-mail disparado por serviço windows services.</p><p>Este e-mail foi disparado a partir da dll de serviço de disparo de e-mail (deu certo)</p><br/><br/>{retornoLista}",
                                                        exeption);

            if (!retornoEnvioEmail)
            {
                retornoEnvioEmail = ServicoEmail.EnviaEmail("*****@*****.**",
                                                            "Email diário",
                                                            $"<h1>E-mail diário automatico.</h1><p>E-mail disparado por serviço windows services.</p><p>Este e-mail foi disparado a partir do método de disparo de e-mail implementado dentro do serviço, a dll não funcionou.</p><p>{exeption}</p><br/><br/>{retornoLista}",
                                                            out exeption);
            }
            if (getCallType == 1)
            {
                timer1.Stop();
                System.Threading.Thread.Sleep(1000000);
                SetTimer();
            }
        }
 public IActionResult Delete(int id)
 {
     try
     {
         Telefone telefone = new Telefone();
         using (var db = new ZupContext())
         {
             telefone = db.Telefone.Where(w => w.Id.Equals(id)).FirstOrDefault();
             if (telefone != null)
             {
                 db.Attach(telefone);
                 db.Remove(telefone);
                 db.SaveChanges();
             }
             else
             {
                 ErroModel erro = new ErroModel()
                 {
                     Mensagem = $"Não foi possível encontrar o telefone com o ID {id}"
                 };
                 return(NotFound(erro));
             }
         }
         return(Ok());
     }
     catch (Exception er)
     {
         return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
         {
             Mensagem = er.Message,
             StackTrace = er.StackTrace
         }));
     }
 }
示例#4
0
        public WindowServiceEnviaEmail()
        {
            InitializeComponent();
            ErroModel registroErro = new ErroModel();

            string site    = "https://classsolutions.sharepoint.com/sites/leandro.silva";
            string usuario = "*****@*****.**";
            string senha   = "Class685947";

            contextoSharepoint = DataSharepoint.AutenticaAcessoSPOnline(site, usuario, senha, out registroErro);
            parametro          = DataSharepoint.obtemLista(contextoSharepoint, out registroErro, "Parametro");

            int strTime = Convert.ToInt32(ConfigurationManager.AppSettings["callDuration"]);

            getCallType = Convert.ToInt32(ConfigurationManager.AppSettings["CallType"]);
            if (getCallType == 1)
            {
                double inter = (double)GetNextInterval(parametro);
                timer1.Interval = inter;
                timer1.Elapsed += new ElapsedEventHandler(ServiceTimer_Tick);
            }
            else
            {
                timer1          = new Timer();
                timer1.Interval = strTime * 1000;
                timer1.Elapsed += new ElapsedEventHandler(ServiceTimer_Tick);
            }
        }
        public IActionResult Post([FromRoute] int idCliente, Telefone telefone)
        {
            try
            {
                using (var db = new ZupContext())
                {
                    Cliente cliente = db.Cliente.Include(i => i.Telefones).Where(w => w.Id.Equals(idCliente)).FirstOrDefault();
                    if (cliente != null)
                    {
                        cliente.Telefones.Add(telefone);
                        db.SaveChanges();
                    }
                    else
                    {
                        ErroModel erro = new ErroModel()
                        {
                            Mensagem = $"Não foi possível encontrar o cliente com o ID {idCliente}"
                        };
                        return(NotFound(erro));
                    }
                }

                return(Ok());
            }
            catch (Exception er)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
                {
                    Mensagem = er.Message,
                    StackTrace = er.StackTrace
                }));
            }
        }
示例#6
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
            {
                return;
            }


            Usuario u = filterContext.HttpContext.Session["usuario"] as Usuario;

            if (filterContext.HttpContext.Session != null && u == null)
            {
                filterContext.HttpContext.Session["controller"] = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                filterContext.HttpContext.Session["action"]     = filterContext.ActionDescriptor.ActionName;
                filterContext.HttpContext.Session["param"]      = filterContext.RouteData;

                filterContext.Result = new RedirectToRouteResult(acaoLogin);
                return;
            }

            ErroModel acessoNegado = new ErroModel {
                Titulo = "ACESSO NEGADO", Mensagem = "Você não possui permissão para executar esta ação."
            };
            String controlador = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            String acao        = filterContext.ActionDescriptor.ActionName;
            Object o           = 0;
            bool   inclusao    = !filterContext.RouteData.Values.ContainsKey("id") ||
                                 filterContext.RouteData.Values["id"] == o;
            bool semPermissao = u.Permissoes.Any(a => a.Controller == controlador && !a.Inclusao);

            if (acao == "Manutencao" && inclusao && semPermissao)
            {
                filterContext.Controller.TempData[ErroModel.ErroTag] = acessoNegado;
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = controlador, Action = "Index" }));
                return;
            }

            semPermissao = u.Permissoes.Any(a => a.Controller == controlador && !a.Alteracao);
            if (acao == "Manutencao" && !inclusao && semPermissao)
            {
                filterContext.Controller.TempData[ErroModel.ErroTag] = acessoNegado;
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = controlador, Action = "Index" }));
                return;
            }

            semPermissao = u.Permissoes.Any(a => a.Controller == controlador && !a.Exclusao);
            if (acao == "Excluir" && semPermissao)
            {
                ContentResult r = new ContentResult {
                    Content = acessoNegado.Mensagem
                };
                filterContext.Result = r;
            }
        }
示例#7
0
        public IActionResult RequestToken([FromBody] AutenticacaoModel autenticacao)
        {
            try
            {
                Cliente   cli  = null;
                ErroModel erro = null;

                using (var db = new ZupContext())
                {
                    string senha = UtilsHelper.CriptografaSenha(autenticacao.Senha);
                    cli = db.Cliente.Where(w => w.Email.Equals(autenticacao.Email) && w.Senha.Equals(senha)).FirstOrDefault();
                }

                if (cli != null)
                {
                    var claims = new[]
                    {
                        new Claim(ClaimTypes.Email, autenticacao.Email),
                        new Claim(ClaimTypes.Role, "Admin"),
                    };

                    var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SecurityKey"]));

                    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                    var token = new JwtSecurityToken(
                        issuer: "teste",
                        audience: "teste",
                        claims: claims,
                        expires: DateTime.Now.AddMinutes(30),
                        signingCredentials: creds);

                    return(Ok(new
                    {
                        token = new JwtSecurityTokenHandler().WriteToken(token)
                    }));
                }
                erro = new ErroModel()
                {
                    Mensagem = "Usuário ou senha inválidos."
                };
                return(NotFound(erro));
            } catch (Exception er)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
                {
                    Mensagem = er.Message,
                    StackTrace = er.StackTrace
                }));
            }
        }
示例#8
0
        public static List <ItensListaModel> obtemLista(ClientContext context, out ErroModel registroErro, string lista)
        {
            List <ItensListaModel> itens = new List <ItensListaModel>();

            registroErro = null;
            try
            {
                List      spList    = context.Web.Lists.GetByTitle(lista);
                CamlQuery camlQuery = new CamlQuery();
                //camlQuery.ViewXml = query;
                var listItemcollection = spList.GetItems(camlQuery);
                if (lista == "Teste")
                {
                    context.Load(
                        listItemcollection,
                        items => items.Include(
                            item => item["Title"],
                            item => item["Pessoa"]
                            ));
                    context.ExecuteQuery();
                    if (registroErro == null)
                    {
                        itens = TratamentoRetornoItens(listItemcollection, out registroErro);
                    }
                }
                else
                {
                    context.Load(
                        listItemcollection,
                        items => items.Include(
                            item => item["Title"]
                            ));
                    context.ExecuteQuery();
                    if (registroErro == null)
                    {
                        itens = TratamentoRetornoItens(listItemcollection, out registroErro);
                    }
                }
            }
            catch (Exception ex)
            {
                registroErro.Mensagem    = $"Ocorreu um erro durante a consulta da lista {lista}. Mensagem: {ex.Message}";
                registroErro.Detalhes    = ex.StackTrace;
                registroErro.AppOrObjeto = ex.Source;
            }
            return(itens);
        }
        public IActionResult Put([FromRoute] int idCliente, [FromRoute] int idTelefone, Telefone telefone)
        {
            try
            {
                bool      valido = ModelState.IsValid;
                Cliente   cli    = new Cliente();
                ErroModel erro   = null;

                using (var db = new ZupContext())
                {
                    if (!db.Cliente.Where(w => w.Id.Equals(idCliente)).Any())
                    {
                        erro = new ErroModel()
                        {
                            Mensagem = $"Não foi possível encontrar o cliente com o ID {idCliente}"
                        };
                        return(NotFound(erro));
                    }

                    if (!db.Telefone.Where(w => w.Id.Equals(idTelefone)).Any())
                    {
                        erro = new ErroModel()
                        {
                            Mensagem = $"Não foi possível encontrar o telefone com o ID {idCliente}"
                        };
                        return(NotFound(erro));
                    }


                    telefone.Id              = idTelefone;
                    telefone.ClienteId       = idCliente;
                    db.Entry(telefone).State = EntityState.Modified;
                    db.SaveChanges();
                }

                return(Ok());
            }
            catch (Exception er)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
                {
                    Mensagem = er.Message,
                    StackTrace = er.StackTrace
                }));
            }
        }
示例#10
0
        public IActionResult Put([FromRoute] int id, Cliente cliente)
        {
            try
            {
                Cliente cli = null;

                using (var db = new ZupContext())
                {
                    cli = db.Cliente.Include(i => i.Telefones).Where(w => w.Id.Equals(id)).AsNoTracking().FirstOrDefault();
                    if (cli != null)
                    {
                        cliente.Id              = id;
                        cliente.Senha           = cli.Senha;
                        db.Entry(cliente).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    else
                    {
                        ErroModel erro = new ErroModel()
                        {
                            Mensagem = $"Não foi possível encontrar o cliente com o ID {id}"
                        };
                        return(NotFound(erro));
                    }
                }

                return(Ok());
            }
            catch (Exception er)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErroModel()
                {
                    Mensagem = er.Message,
                    StackTrace = er.StackTrace
                }));
            }
        }
示例#11
0
        private static List <ItensListaModel> TratamentoRetornoItens(ListItemCollection listItemcollection, out ErroModel registroErro)
        {
            List <ItensListaModel> itens = new List <ItensListaModel>();

            registroErro = null;
            try
            {
                foreach (var item in listItemcollection)
                {
                    // Obtem o ID do documento e verifica se o mesmo é um documento válido
                    ItensListaModel process = new ItensListaModel();
                    //verifica o tipo do campo obtido em cada item, verifica a propriedade e adiciona o valor correto.
                    foreach (var field in item.FieldValues)
                    {
                        if (field.Value is ClientValueObject)
                        {
                            try
                            {
                                string           lookupValue = "";
                                int              lookupId    = 0;
                                FieldLookupValue lookupField = field.Value as FieldLookupValue;
                                if (lookupField != null)
                                {
                                    lookupValue = lookupField.LookupValue;
                                    lookupId    = lookupField.LookupId;
                                }
                                else
                                {
                                    FieldUserValue lookupUser = field.Value as FieldUserValue;
                                    lookupValue = lookupUser.LookupValue;
                                    lookupId    = lookupUser.LookupId;
                                }
                                PropertyInfo propId = process.GetType().GetProperty("ID_" + field.Key);
                                if (propId != null && propId.CanWrite)
                                {
                                    propId.SetValue(process, lookupId, null);
                                }
                                PropertyInfo propDesc = process.GetType().GetProperty("Nome_" + field.Key);
                                if (propDesc != null && propDesc.CanWrite)
                                {
                                    propDesc.SetValue(process, lookupValue, null);
                                }
                            }
                            catch (Exception ex)
                            {
                                registroErro.Mensagem    = $"Ocorreu um erro durante o tratamento das propriedades para campos do tipo ClientValueObject. Mensagem: {ex.Message}";
                                registroErro.Detalhes    = ex.StackTrace;
                                registroErro.AppOrObjeto = ex.Source;
                                continue;
                            }
                        }
                        else
                        {
                            try
                            {
                                PropertyInfo prop = process.GetType().GetProperty(field.Key);
                                if (prop != null && prop.CanWrite)
                                {
                                    var val = field.Value;
                                    if (prop.PropertyType.Name == "Boolean" || prop.PropertyType.Name == "Int32" || prop.PropertyType.Name == "Single")
                                    {
                                        val = Convert.ToInt32(val);
                                    }
                                    if (prop.PropertyType.Name == "DateTime")
                                    {
                                        val = Convert.ToDateTime(val);
                                    }
                                    if (prop.PropertyType.Name == "String" && val != null)
                                    {
                                        val = val.ToString();
                                    }
                                    prop.SetValue(process, val, null);
                                }
                            }
                            catch (Exception ex)
                            {
                                registroErro.Mensagem    = $"Ocorreu um erro durante o tratamento dos campos genéricos. Mensagem: {ex.Message}";
                                registroErro.Detalhes    = ex.StackTrace;
                                registroErro.AppOrObjeto = ex.Source;
                                continue;
                            }
                        }
                    }
                    itens.Add(process);
                }
            }
            catch (Exception ex)
            {
                registroErro.Mensagem    = $"Ocorreu um erro durante o o tratamento de retorno dos itens. Mensagem: {ex.Message}";
                registroErro.Detalhes    = ex.StackTrace;
                registroErro.AppOrObjeto = ex.Source;
            }
            return(itens);
        }
示例#12
0
        public static ClientContext AutenticaAcessoSPOnline(string url, string user, string password, out ErroModel registroErro)
        {
            ClientContext clientContex = new ClientContext(url);

            registroErro = null;
            try
            {
                var passWord = new SecureString();
                foreach (char c in password.ToCharArray())
                {
                    passWord.AppendChar(c);
                }
                clientContex.Credentials = new SharePointOnlineCredentials(user, passWord);
                clientContex.ExecuteQuery();
                return(clientContex);
            }
            catch (Exception ex)
            {
                registroErro.Mensagem    = $"O correu um erro durante a autenticação no sharepoint online no site {url}. {ex.Message}";
                registroErro.Detalhes    = ex.StackTrace;
                registroErro.AppOrObjeto = ex.Source;
                return(clientContex);
            }
        }
示例#13
0
        public ErroModel TrataMensagemErro(string msg)
        {
            var erro = new ErroModel();

            if (msg == "O servidor retornou uma Falha SOAP inválida. Consulte a InnerException para obter mais detalhes.")
            {
                erro.Msg     = "Ops, isso não era para ter acontecido.";
                erro.Acao    = "Por favor contate o desenvolvedor";
                erro.CodErro = "1001";
            }
            else if (msg == "Server returned an invalid SOAP Fault.  Please see InnerException for more details.")
            {
                erro.Msg     = "Ops, isso não era para ter acontecido.";
                erro.Acao    = "Por favor contate o desenvolvedor";
                erro.CodErro = "1001";
            }
            else if (msg == "O servidor remoto retornou uma resposta inesperada: (502) Bad Gateway.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor";
                erro.Acao    = "Tente novamente dentro de alguns minutos, caso persistir, contate o suporte.";
                erro.CodErro = "502";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial.vertech-it.com.br/vch-esocial/envialote capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - envialote";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial2.vertech-it.com.br/vch-esocial/envialote capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - envialote 2";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial.vertech-it.com.br/vch-esocial/consultalote capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial2.vertech-it.com.br/vch-esocial/consultalote capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - consultalote 2";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial.vertech-it.com.br/vch-esocial/consultaintegra capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - consultaintegra";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial2.vertech-it.com.br/vch-esocial/consultaintegra capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - consultaintegra 2";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial.vertech-it.com.br/vch-esocial/enviaintegra capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - enviaintegra";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Não havia um ponto de extremidade em escuta em https://apiesocial2.vertech-it.com.br/vch-esocial/enviaintegra capaz de aceitar a mensagem. Em geral, isso é causado por um endereço ou ação de SOAP incorreta. Consulte InnerException, se presente, para obter mais detalhes.")
            {
                erro.Msg     = "Não foi possivel conectar com o servidor - enviaintegra 2";
                erro.Acao    = "Verifique sua conexão com a internet ou se há proxy";
                erro.CodErro = "1000";
            }
            else if (msg == "Erro de rede ou específico à instância ao estabelecer conexão com o SQL Server. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. (provider: TCP Provider, error: 0 - O computador remoto recusou a conexão de rede.)")
            {
            }
            else if (msg == "O formatador gerou uma exceção ao tentar desserializar a mensagem: Erro ao tentar desserializar o parâmetro http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0:ConsultarLoteEventosResponse. A mensagem da InnerException foi 'Houve um erro ao desserializar o objeto do tipo IntegradorCore.apiConsultaXML.ConsultarLoteEventosResponseBody. O prefixo 'xsi' não está definido. Linha 1, posição 818.'. Consulte a InnerException para obter mais detalhes.")
            {
            }

            return(erro);
        }