public JsonResult getGridStockControl(string sEcho, int iDisplayStart, int iDisplayLength) { var msgTotalTransactions = new Dominio.Mensagens.Filtro.Stock(); msgTotalTransactions.iDisplayStart = iDisplayStart; msgTotalTransactions.iDisplayLength = iDisplayLength; //msgTotalTransactions.Report_Type = Convert.ToInt32(Request["cmbReport_Type"]); //msgTotalTransactions.dtInicio = Convert.ToString(Request["txtDtInicio"]); //msgTotalTransactions.dtFim = Convert.ToString(Request["txtDtFim"]); //msgTotalTransactions.txtNome = Convert.ToString(Request["txtNome"]); var displayedCompanies = Fachada.Repositorio.STOCK.GetAllStockControlByFilter(msgTotalTransactions); var result = (from c in displayedCompanies.Instances select new[] { UtilsLibrary.GetListEnum(typeof(TabProduct_Type)).Where(w => w.StringValue == c.Description.ToString()).Select(s => s.StringDescription).FirstOrDefault(), c.Amount.ToString() }).Take(iDisplayLength); return(Json(new { sEcho = sEcho, // Variável Padraão do plugin iTotalRecords = 50, // Deve realizar outra pesquisa no Banco de Daods sem Filtro de pesquisa e mostar a quantidade de registros no Banco nessa variável "iTotalRecords" no exemplo esta 1000 fixo mas deve ser a qtde total de registro que existe na tabela iTotalDisplayRecords = displayedCompanies.Code, //Total de Registro com filtro Aplicado aaData = result // Lista que será exibida do grid }, JsonRequestBehavior.AllowGet)); }
public JsonResult getGridStock(string sEcho, int iDisplayStart, int iDisplayLength, string sSortDir_0, int iSortCol_0) { var msgTotalTransactions = new Dominio.Mensagens.Filtro.Stock(); msgTotalTransactions.iDisplayStart = iDisplayStart; msgTotalTransactions.iDisplayLength = iDisplayLength; msgTotalTransactions.sSortDir_0 = "desc";// sSortDir_0; msgTotalTransactions.iSortCol_0 = iSortCol_0; //msgTotalTransactions.Report_Type = Convert.ToInt32(Request["cmbReport_Type"]); //msgTotalTransactions.dtInicio = Convert.ToString(Request["txtDtInicio"]); //msgTotalTransactions.dtFim = Convert.ToString(Request["txtDtFim"]); //msgTotalTransactions.txtNome = Convert.ToString(Request["txtNome"]); var displayedCompanies = Fachada.Repositorio.STOCK.GetAllStockByFilter(msgTotalTransactions); var result = (from c in displayedCompanies.Instances select new[] { c.ID.ToString(), c.DT_Reg.ToString("dd/MM/yyyy HH:MM"), c.LogLogin, c.Action_Type, c.Description, c.Amount.ToString() }).Take(iDisplayLength); return(Json(new { sEcho = sEcho, // Variável Padraão do plugin iTotalRecords = 50, // Deve realizar outra pesquisa no Banco de Daods sem Filtro de pesquisa e mostar a quantidade de registros no Banco nessa variável "iTotalRecords" no exemplo esta 1000 fixo mas deve ser a qtde total de registro que existe na tabela iTotalDisplayRecords = displayedCompanies.Code, //Total de Registro com filtro Aplicado aaData = result // Lista que será exibida do grid }, JsonRequestBehavior.AllowGet)); }
MessageCollection <GridStock> ISTOCK.GetAllStockControlByFilter(Dominio.Mensagens.Filtro.Stock filtroPesquisa) { var msg = new MessageCollection <Dominio.Mensagens.GridStock>(); try { using (var context = new HostelEntities()) { var insert = (from s in context.Stocks join at in context.Action_Type on s.ID_ACTION_TYPE equals at.ID join pt in context.Product_Type on s.ID_PRODUCT_TYPE equals pt.ID where s.ID_ACTION_TYPE == 1 orderby s.ID_PRODUCT_TYPE group s by new { s.ID, s.ID_PRODUCT_TYPE, s.AMOUNT } into g select new { ID_STOCK = g.Key.ID, ID_PRODUCT_TYPE = g.Key.ID_PRODUCT_TYPE, Amount = g.Sum(s => s.AMOUNT) }).ToList(); var sold = (from s in context.Stocks join at in context.Action_Type on s.ID_ACTION_TYPE equals at.ID join pt in context.Product_Type on s.ID_PRODUCT_TYPE equals pt.ID where s.ID_ACTION_TYPE == 2 orderby s.ID_PRODUCT_TYPE group s by new { s.ID, s.ID_PRODUCT_TYPE, s.AMOUNT } into g select new { ID_STOCK = g.Key.ID, ID_PRODUCT_TYPE = g.Key.ID_PRODUCT_TYPE, Amount = g.Sum(s => s.AMOUNT) }).ToList(); var query = new List <Dominio.Mensagens.GridStock>(); foreach (var item in insert) { var msgGridStock = new Dominio.Mensagens.GridStock(); msgGridStock.Description = item.ID_PRODUCT_TYPE.ToString(); msgGridStock.Amount = item.Amount - sold.Where(w => w.ID_PRODUCT_TYPE == item.ID_PRODUCT_TYPE).Sum(s => s.Amount); query.Add(msgGridStock); } //Filtros de Pesquisa //if (!string.IsNullOrEmpty(filtroPesquisa.user)) // query = query.Where(q => q.LogLogin.Trim().ToUpper().Contains(filtroPesquisa.user.Trim().ToUpper())); msg.Instances = query.Skip(filtroPesquisa.iDisplayStart).Take(filtroPesquisa.iDisplayLength).ToList(); msg.Code = query.Count(); } } catch (Exception ex) { msg.Exception = ex; } return(msg); }
MessageCollection <GridStock> ISTOCK.GetAllStockByFilter(Dominio.Mensagens.Filtro.Stock filtroPesquisa) { var msg = new MessageCollection <Dominio.Mensagens.GridStock>(); try { using (var context = new HostelEntities()) { ////Não pode ser feito o .ToList nesse momento, a query SQL esta esta sendo montada de acordo com os filtros var query = (from s in context.Stocks join at in context.Action_Type on s.ID_ACTION_TYPE equals at.ID join pt in context.Product_Type on s.ID_PRODUCT_TYPE equals pt.ID select new Dominio.Mensagens.GridStock() { ID = s.ID, DT_Reg = s.DT_Entrada, Action_Type = at.DESCRIPTION, Description = pt.Description, LogLogin = s.LOGLOGIN, Amount = s.AMOUNT }); //Filtros de Pesquisa //if (!string.IsNullOrEmpty(filtroPesquisa.user)) // query = query.Where(q => q.LogLogin.Trim().ToUpper().Contains(filtroPesquisa.user.Trim().ToUpper())); //if (filtroPesquisa.ID_Calc_Type > 0) // query = query.Where(q => q.ID_Calc_Type == filtroPesquisa.ID_Calc_Type); if (!string.IsNullOrEmpty(filtroPesquisa.dtInicio)) { DateTime dtFim = DateTime.UtcNow; if (!string.IsNullOrEmpty(filtroPesquisa.dtFim)) { dtFim = Convert.ToDateTime(filtroPesquisa.dtFim); } DateTime dtInicio = Convert.ToDateTime(filtroPesquisa.dtInicio); query = query.Where(q => q.DT_Reg >= dtInicio && q.DT_Reg <= dtFim); } //ordenação if (filtroPesquisa.sSortDir_0 == "asc") { if (filtroPesquisa.iSortCol_0 == 1) { query = query.OrderBy(q => q.DT_Reg); } else if (filtroPesquisa.iSortCol_0 == 2) { query = query.OrderBy(q => q.LogLogin); } else if (filtroPesquisa.iSortCol_0 == 3) { query = query.OrderBy(q => q.Action_Type); } else if (filtroPesquisa.iSortCol_0 == 4) { query = query.OrderBy(q => q.Description); } else if (filtroPesquisa.iSortCol_0 == 5) { query = query.OrderBy(q => q.Amount); } else { query = query.OrderBy(q => q.DT_Reg); } } else if (filtroPesquisa.sSortDir_0 == "desc") { if (filtroPesquisa.iSortCol_0 == 1) { query = query.OrderByDescending(q => q.DT_Reg); } else if (filtroPesquisa.iSortCol_0 == 2) { query = query.OrderByDescending(q => q.LogLogin); } else if (filtroPesquisa.iSortCol_0 == 3) { query = query.OrderByDescending(q => q.Action_Type); } else if (filtroPesquisa.iSortCol_0 == 4) { query = query.OrderByDescending(q => q.Description); } else if (filtroPesquisa.iSortCol_0 == 5) { query = query.OrderByDescending(q => q.Amount); } else { query = query.OrderByDescending(q => q.DT_Reg); } } else { query = query.OrderByDescending(q => q.DT_Reg); } query = query.Take(100); ////Extract only current page msg.Instances = query.Skip(filtroPesquisa.iDisplayStart).Take(filtroPesquisa.iDisplayLength).ToList(); ////Campo improvisado para gerar o total de paginacao msg.Code = query.Count();//Total de registro com filtros aplicados //Total de registro no banco sem filtro aplicado Deve ser feito uma pesquisa direto na Tabela outra Query Deverrá ser informado em outro campo no grid CONtroller eu coloquei fixo 110 pra teste } } catch (Exception ex) { msg.Exception = ex; } return(msg); }