示例#1
0
        public ActionResult SimpleSearchCliente(SimpleListViewModel parameters)
        {
            var transfer      = new ClientTransfer();
            var anyoQueriable = _clientesService.Buscar();

            anyoQueriable = anyoQueriable.Where(a => a.Activo);

            if (!string.IsNullOrEmpty(parameters.Descripcion))
            {
                anyoQueriable = anyoQueriable.Where(a => a.Nombres.Contains(parameters.Descripcion));
            }

            if (parameters.IdEmpresa.HasValue)
            {
                anyoQueriable = anyoQueriable.Where(a => a.EmpresaId == parameters.IdEmpresa);
            }

            var selectQuery = anyoQueriable.Select(a => new
            {
                a.Id,
                Descripcion = (a.Nombres + " " + a.Apellidos).Trim()
            }).OrderBy(o => o.Descripcion);

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

            var totalElements = selectQuery.Count();
            var totalpages    = totalElements / parameters.ItemsPerPage;

            transfer.Data = listado;
            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));
        }
示例#2
0
        public ActionResult Buscar(SearchParameters parameters)
        {
            var queriable = _clientesService.Buscar();

            queriable = queriable.Where(a => a.EmpresaId == parameters.IdEmpresa);

            if (!string.IsNullOrEmpty(parameters.Nombre))
            {
                queriable = queriable.Where(a => (a.Nombres + " " + a.Apellidos).Contains(parameters.Nombre));
            }
            if (!string.IsNullOrEmpty(parameters.Carnet))
            {
                queriable = queriable.Where(a => a.Carnet.Contains(parameters.Carnet));
            }

            var querySelect = queriable.Select(a => new
            {
                Cliente = new
                {
                    a.Id,
                    a.Carnet,
                    a.Nombres,
                    a.Apellidos,
                    NombreCompleto = (a.Nombres + " " + a.Apellidos).Trim(),
                    a.Telefono,
                    a.Email,
                    a.Activo
                }
            });

            var order = parameters.GetEnum(SearchParameters.ClienteOrderColumn.Nombre);

            switch (order)
            {
            case SearchParameters.ClienteOrderColumn.Id:
                querySelect = parameters.Ascendente
                        ? querySelect.OrderBy(a => a.Cliente.Id)
                        : querySelect.OrderByDescending(a => a.Cliente.Id);
                break;

            case SearchParameters.ClienteOrderColumn.Nombre:
                querySelect = parameters.Ascendente
                        ? querySelect.OrderBy(a => a.Cliente.Nombres).ThenBy(a => a.Cliente.Apellidos)
                        : querySelect.OrderByDescending(a => a.Cliente.Nombres).ThenByDescending(a => a.Cliente.Apellidos);
                break;
            }

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

            //var returnList = listado.Select(a =>
            //{
            //    var returnData = new
            //    {
            //        a.Cliente,
            //        FechaPedido = a.Pedido.Fecha.ToString("dd/MM/yyyy")
            //    };
            //    return returnData;
            //});
            var transfer      = new ClientTransfer();
            var totalElements = querySelect.Count();
            var totalPages    = totalElements / parameters.ItemsPerPage;

            transfer.Data = listado;
            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));
        }