Exemplo n.º 1
0
        public async Task <E_LISTA_PAGINADA <E_RPT_GANANCIAS> > ConsultaReporteGanancias(E_FILTROS_REPORTE_GANANCIAS pFiltros)
        {
            try
            {
                ReportesOperaciones pDatos = new ReportesOperaciones();
                var pResultado             = await pDatos.ConsultaReporteGanancias(pFiltros);

                return(pResultado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Método para consultar reporte de ganancias
        /// <param name="pFiltros">Filtros para la consulta</param>
        /// <returns> Objeto tipo E_RPT_GANANCIAS<E_LOCAL> con los datos solicitados </returns>
        /// </summary>
        public async Task <E_LISTA_PAGINADA <E_RPT_GANANCIAS> > ConsultaReporteGanancias(E_FILTROS_REPORTE_GANANCIAS pFiltros)
        {
            try
            {
                using (context = new ViajesEntities())
                {
                    if (pFiltros.pageIndex < 0)
                    {
                        pFiltros.pageIndex = 0;
                    }

                    if (pFiltros.pageSize < 0)
                    {
                        pFiltros.pageSize = 0;
                    }

                    //Inicializa el Resultado.
                    var result = new E_LISTA_PAGINADA <E_RPT_GANANCIAS>()
                    {
                        PageIndex = pFiltros.pageIndex,
                        PageSize  = pFiltros.pageSize,
                        TotalRows = 0
                    };

                    IQueryable <V_RPT_GANANCIAS> solicitudRequisicionIQ = from s in context.V_RPT_GANANCIAS select s;

                    /*Genera los Filtros*/
                    if (!string.IsNullOrEmpty(pFiltros.palabraClave))
                    {
                        solicitudRequisicionIQ.Where(p =>
                                                     p.nombre_local.ToUpper().Contains(pFiltros.palabraClave.ToUpper()) ||
                                                     p.nombre_repartidor.ToUpper().Contains(pFiltros.palabraClave.ToUpper()) ||
                                                     p.tipo_pedido.ToUpper().Contains(pFiltros.palabraClave.ToUpper())
                                                     );
                    }


                    if (pFiltros.fechaInicial != DateTime.MinValue && pFiltros.fechaFinal != DateTime.MinValue)
                    {
                        solicitudRequisicionIQ.Where(p => p.fecha_pedido >= pFiltros.fechaInicial && p.fecha_pedido <= pFiltros.fechaFinal);
                    }



                    // //Se deja comentado hasta agregar en la tabla el campo de fecha de creación (hasta agregar los campos de las plazas):
                    // if(!string.IsNullOrEmpty(pParams.FechaCreacionInicio) && !string.IsNullOrEmpty(pParams.FechaCreacionFin)){
                    //     var formatDate = "dd/MM/yyyy";
                    //     CultureInfo provider = new CultureInfo("es-MX");

                    //     predicado = predicado.And(p => p.MSRFechaCreacion >= DateTime.ParseExact(pParams.FechaCreacionInicio, formatDate, provider) && p.MSRFechaCreacion <= DateTime.ParseExact(pParams.FechaCreacionFin, formatDate, provider));
                    //     // hasParams = true;
                    // }


                    /* Aplica los Filtros */
                    //solicitudRequisicionIQ = solicitudRequisicionIQ.Where(predicado);

                    /*Recupera el Total de Registros filtrados*/
                    result.TotalRows = solicitudRequisicionIQ.Count();

                    /* Aplica el Ordenamiento */
                    switch (pFiltros.sortColumn)
                    {
                    case "folio":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.folio);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.folio);
                            break;
                        }
                        break;

                    case "fechaPedido":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.fecha_pedido);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.fecha_pedido);
                            break;
                        }
                        break;

                    case "nombreLocal":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.nombre_local);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.nombre_local);
                            break;
                        }
                        break;

                    case "costoTotal":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.costo_total);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.costo_total);
                            break;
                        }
                        break;

                    case "totalLocal":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.total_local);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.total_local);
                            break;
                        }
                        break;

                    case "costoViaje":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.costo_envio);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.costo_envio);
                            break;
                        }
                        break;

                    case "totalRepartidor":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.total_repartidor);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.total_repartidor);
                            break;
                        }
                        break;

                    case "totalEmpresa":
                        switch (pFiltros.sortDirection)
                        {
                        case "asc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderBy(s => s.total_empresa);
                            break;

                        case "desc":
                            solicitudRequisicionIQ = solicitudRequisicionIQ.OrderByDescending(s => s.total_empresa);
                            break;
                        }
                        break;
                    }

                    /* Aplica la Paginación */
                    if (pFiltros.pageSize > 0)
                    {
                        solicitudRequisicionIQ = solicitudRequisicionIQ
                                                 .Skip(pFiltros.pageIndex * pFiltros.pageSize)
                                                 .Take(pFiltros.pageSize);
                    }

                    /* Recupera los registros filtrados y ordenados */
                    result.Rows = await solicitudRequisicionIQ.AsNoTracking().Select(e => new E_RPT_GANANCIAS {
                        IdPedido         = e.id_pedido,
                        Folio            = e.folio,
                        CostoTotal       = e.costo_total ?? 0,
                        CostoViaje       = e.costo_envio,
                        FechaPedido      = e.fecha_pedido,
                        NombreLocal      = e.nombre_local,
                        NombreRepartidor = e.nombre_repartidor,
                        TotalEmpresa     = e.total_empresa,
                        TotalLocal       = e.total_local,
                        TotalRepartidor  = e.total_repartidor,
                        TipoPedido       = e.tipo_pedido
                    }).ToListAsync();

                    return(result);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }