public List <ShirtInfo> getItemCount(string type) { DataAccessLayer.AssemblyDB.Assembly assembly = new DataAccessLayer.AssemblyDB.Assembly(); List <int> ids = (from cat in dbBCS.Categories where cat.Name == type join fab in dbBCS.OTISIdsToFabIds on cat.ID equals fab.CatID select fab.FabID).ToList(); var q1 = from inv in assembly.InvoiceDetails where ids.Contains(inv.GarmentID) join auto in assembly.AutoSorts on inv.ArticleCode equals auto.ArticleCode where DbFunctions.TruncateTime(auto.DueDate) == DateTime.Today select new ShirtInfo { articleID = inv.ArticleCode, invoiceID = inv.InvoiceID, dueDate = auto.DueDate }; return(q1.ToList()); }
public List <GarmentIds> getTypes() { DataAccessLayer.AssemblyDB.Assembly assembly = new DataAccessLayer.AssemblyDB.Assembly(); assembly.Database.Log = Console.Write; List <DataAccessLayer.AssemblyDB.InvoiceDetail> distinctPeople = assembly.InvoiceDetails .GroupBy(p => p.GarmentID) .Select(g => g.FirstOrDefault()) .ToList(); List <GarmentIds> gids = new List <GarmentIds>(); foreach (DataAccessLayer.AssemblyDB.InvoiceDetail inv in distinctPeople) { GarmentIds g1 = new GarmentIds() { garmentID = inv.GarmentID, desc = inv.DetailDesc }; gids.Add(g1); } return(gids); }
public List <missingPieceInfo> FindMissingOrders(string storeName) { DataAccessLayer.AssemblyDB.Assembly assembly = new DataAccessLayer.AssemblyDB.Assembly(); ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings; string StoreConnectionString = connections["StoreContext"].ConnectionString; db1OTS = new StoreContext(StoreConnectionString); // List<Invoice> invs = assembly.Invoices.Take(10).ToList(); StoreConnectionString = connections["Store2Context"].ConnectionString; db2OTS = new StoreContext(StoreConnectionString); StoreConnectionString = connections["Store3Context"].ConnectionString; db3OTS = new StoreContext(StoreConnectionString); StoreConnectionString = connections["Store4Context"].ConnectionString; db4OTS = new StoreContext(StoreConnectionString); List <missingPieceInfo> miss = new List <missingPieceInfo>(); DateTime prev = DateTime.Today.AddDays(-1); List <DataAccessLayer.AssemblyDB.Invoice> allInvoices = (from inv in assembly.Invoices where DbFunctions.TruncateTime(inv.InvoiceDate) >= prev select inv).ToList(); var invsGroupedByOrderID = from inv2 in allInvoices group inv2 by inv2.OrderID into groupedinvs select groupedinvs; foreach (var AssemblyInvGroup in invsGroupedByOrderID) { int storeid = AssemblyInvGroup.First().StoreID; dbOTS = db1OTS; switch (storeid) { case 2: dbOTS = db2OTS; break; case 3: dbOTS = db3OTS; break; case 4: dbOTS = db4OTS; break; } var ordersGroup = from order in dbOTS.OrderDetails where AssemblyInvGroup.Key == order.OrderID group order by order.OrderID into groupedby select groupedby; if (ordersGroup.Count() > 0) { foreach (var group in ordersGroup) { int piecesInOrders = (int)group.Sum(o => o.Pieces); DataAccessLayer.AssemblyDB.Invoice inv = AssemblyInvGroup.First(); if (group.Sum(o => o.Pieces) != AssemblyInvGroup.Sum(i => i.Pieces)) { missingPieceInfo info = new missingPieceInfo() { orderid = AssemblyInvGroup.Key, numInvoiced = (int)AssemblyInvGroup.Sum(i => i.Pieces), numOrders = piecesInOrders, storeid = inv.StoreID, date = inv.InvoiceDate.ToString() }; //before we mark this as an error, the clerk might have generated another invoice for this order to make up for //an error on their part so check if there are multiple invoices for this customer List <AssemblyDB.Invoice> inerror = (from inv1 in allInvoices where inv1.CustomerID == inv.CustomerID select inv1).ToList(); if (inerror.Count > 1) //must be more than one to bother checking { int TotalCount = (int)inerror.Sum(o => o.Pieces); if (TotalCount != piecesInOrders) { miss.Add(info); } } else { miss.Add(info); } } } } } return(miss.OrderBy(o => o.storeid).ToList());; }