Example #1
0
        public object ObterChamados([FromBody] FiltrosChamado filtros)
        {
            try
            {
                var chamados = _db.Chamado
                               .Include(x => x.Protocolo)
                               .Include(x => x.Beneficiario)
                               .Include(x => x.Sub_categoria)
                               .ThenInclude(x => x.Categoria_setor)
                               .ThenInclude(x => x.Setor)
                               .Select(x => new Chamado
                {
                    Id                = x.Id,
                    ProtocoloId       = x.ProtocoloId,
                    BeneficiarioId    = x.BeneficiarioId,
                    Sub_CategoriaId   = x.Sub_CategoriaId,
                    Tp_chamado        = x.Tp_chamado,
                    Ds_assunto        = x.Ds_assunto,
                    St_registro_ativo = x.St_registro_ativo,
                    Dt_criacao        = x.Dt_criacao,
                    Protocolo         = x.Protocolo,
                    Beneficiario      = x.Beneficiario,
                    Sub_categoria     = x.Sub_categoria,
                    Sla               = ObterPrazoDoChamado(x.Dt_criacao, x.Tp_chamado, x.Sub_categoria).SLA,
                    EstaNoSla         = ObterPrazoDoChamado(x.Dt_criacao, x.Tp_chamado, x.Sub_categoria).EstaNoSLA,
                })
                               .SomenteDoFiltros(_db, filtros)
                               .ToList();

                return(Ok(new { chamados }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Example #2
0
 private static IQueryable <int> ChamadosId(DbWorkFlow db, FiltrosChamado filtros)
 {
     return(db.Historico_chamado.Where(x => x.St_chamado == filtros.St_chamado).Select(x => x.ChamadoId));
 }
Example #3
0
        public static IQueryable <Chamado> SomenteDoFiltros(this IQueryable <Chamado> queryble, DbWorkFlow db, FiltrosChamado filtros)
        {
            if (filtros == null)
            {
                return(queryble);
            }

            if (!string.IsNullOrEmpty(filtros.Nu_protocolo))
            {
                queryble = queryble.Where(x => x.Protocolo.Nu_protocolo == filtros.Nu_protocolo);
            }

            if (!string.IsNullOrEmpty(filtros.St_chamado))
            {
                var chamadosId = ChamadosId(db, filtros);
                queryble = queryble.Where(x => chamadosId.Contains(x.Id));
            }

            if (!string.IsNullOrEmpty(filtros.CpfOuCnpj))
            {
                queryble = queryble.Where(x => x.Beneficiario.Co_cpf_cnpj == filtros.CpfOuCnpj);
            }

            if (filtros.EstaNoSla != null)
            {
                queryble = queryble.Where(x => x.EstaNoSla == filtros.EstaNoSla.GetValueOrDefault());
            }

            if (filtros.Dt_inicio != DateTime.MinValue && filtros.Dt_inicio != DateTime.MinValue)
            {
                queryble = queryble.Where(x => x.Dt_criacao >= filtros.Dt_inicio && x.Dt_criacao <= filtros.Dt_fim);
            }

            if (!string.IsNullOrEmpty(filtros.No_categoria))
            {
                queryble = queryble.Where(x => x.Sub_categoria.Categoria_setor.No_categoria_setor == filtros.No_categoria);
            }

            if (!string.IsNullOrEmpty(filtros.Tp_chamado))
            {
                queryble = queryble.Where(x => x.Tp_chamado == filtros.Tp_chamado);
            }

            if (!string.IsNullOrEmpty(filtros.Autor))
            {
                queryble = queryble.Where(x => x.Beneficiario.No_beneficiario.Equals(filtros.Autor, StringComparison.InvariantCultureIgnoreCase));
            }

            if (filtros.SetorOrigemId != 0)
            {
                var chamadosId = db.Historico_chamado.Where(x => x.SetorOrigemId == filtros.SetorOrigemId && x.St_chamado == Historico_chamado.TP_ABERTO).Select(x => x.ChamadoId);
                queryble = queryble.Where(x => chamadosId.Contains(x.Id));
            }

            return(queryble);
        }