示例#1
0
        public ActionResult GetSeguimientos(SearchParameters parameters)
        {
            var queriable = _pedidosService.BuscarSeguimientos();

            queriable = queriable.Where(a => a.PedidoId == parameters.IdPedido && a.TipoId != (int)TipoSeguimientoEnum.Precios);

            var querySelect = queriable.Select(a => new
            {
                FechaSeguimiento = a.Fecha,
                a.Descripcion,
                TipoSeguimiento    = a.Tipo.Nombre,
                UsuarioSeguimiento = new { a.Usuario.Trabajador.Nombres, a.Usuario.Trabajador.Apellidos }
            });

            var order = parameters.GetEnum(SearchParameters.SeguimientosOrderColumn.Fecha);

            switch (order)
            {
            case SearchParameters.SeguimientosOrderColumn.Fecha:
                querySelect = parameters.Ascendente
                        ? querySelect.OrderBy(a => a.FechaSeguimiento)
                        : querySelect.OrderByDescending(a => a.FechaSeguimiento);
                break;
            }

            var listado = querySelect.Skip((parameters.PageIndex - 1) * parameters.ItemsPerPage)
                          .Take(parameters.ItemsPerPage).ToList();

            var returnList = listado.Select(a =>
            {
                var returnData = new
                {
                    Fecha = a.FechaSeguimiento.ToString("dd/MM/yyyy"),
                    a.Descripcion,
                    a.TipoSeguimiento,
                    Usuario = (a.UsuarioSeguimiento.Nombres + " " + a.UsuarioSeguimiento.Apellidos).Trim()
                };
                return(returnData);
            });
            var transfer      = new ClientTransfer();
            var totalElements = querySelect.Count();
            var totalPages    = totalElements / parameters.ItemsPerPage;

            transfer.Data = returnList;
            transfer.Pagination.TotalPages          = totalPages + ((totalElements % parameters.ItemsPerPage) > 0 ? 1 : 0);
            transfer.Pagination.TotalRecords        = totalElements; //Total de elementos segun filtro
            transfer.Pagination.TotalDisplayRecords = listado.Count; //Total de elementos segun pagina
            return(Json(transfer));
        }