//Convert breakdown of stationery by items to breakdown of stationery by dept public List <DisbursementByDeptViewModel> GenerateDisbursement(List <RequestByItemViewModel> model) { LogicDB context = new LogicDB(); List <DisbursementByDeptViewModel> disbList = new List <DisbursementByDeptViewModel>(); for (int i = 0; i < model.Count; i++) { for (int j = 0; j < model[i].requestList.Count; j++) { var disb = disbList.Find(x => x.DepartmentId == model[i].requestList[j].DepartmentId); if (disb != null) { var item = disb.requestList.Find(x => x.ItemId == model[i].ItemId); if (item != null) { item.Quantity += model[i].requestList[j].Quantity; } else { if (model[i].requestList[j].RetrievedQty > 0) { BreakdownByItemViewModel breakdown = new BreakdownByItemViewModel(); breakdown.ItemId = model[i].ItemId; breakdown.Description = model[i].Description; breakdown.RetrievedQty = model[i].requestList[j].RetrievedQty; disb.requestList.Add(breakdown); } } } else { if (model[i].requestList[j].RetrievedQty > 0) { DisbursementByDeptViewModel disbModel = new DisbursementByDeptViewModel(); disbModel.DepartmentId = model[i].requestList[j].DepartmentId; disbModel.DepartmentName = model[i].requestList[j].DepartmentName; BreakdownByItemViewModel breakdown = new BreakdownByItemViewModel(); breakdown.RetrievedQty = model[i].requestList[j].RetrievedQty; breakdown.ItemId = model[i].ItemId; breakdown.Description = model[i].Description; disbModel.requestList = new List <BreakdownByItemViewModel>(); disbModel.requestList.Add(breakdown); disbList.Add(disbModel); } } } } return(disbList); }
public List <DisbursementByDeptViewModel> GetListDisb() { LogicDB context = new LogicDB(); var query = (from x in context.Disbursement join y in context.TransactionDetail on x.DisbursementId equals y.TransactionRef join z in context.Department on x.DepartmentId equals z.DepartmentId join c in context.CollectionPoint on z.CollectionPointId equals c.CollectionPointId join i in context.Stationery on y.ItemId equals i.ItemId where x.Status == "In Transit" select new { x.DepartmentId, z.DepartmentName, c.CollectionPointId, c.CollectionDescription, y.ItemId, i.Description, y.Quantity }).ToList(); List <DisbursementByDeptViewModel> model = new List <DisbursementByDeptViewModel>(); foreach (var item in query) { var deptExists = model.FirstOrDefault(x => x.DepartmentId == item.DepartmentId); if (deptExists != null) { var itemExists = deptExists.requestList.FirstOrDefault(x => x.ItemId == item.ItemId); if (itemExists != null) { itemExists.Quantity += item.Quantity; } else { BreakdownByItemViewModel newItemModel = new BreakdownByItemViewModel(); newItemModel.ItemId = item.ItemId; newItemModel.Description = item.Description; newItemModel.Quantity = item.Quantity; deptExists.requestList.Add(newItemModel); } } else { DisbursementByDeptViewModel newDeptModel = new DisbursementByDeptViewModel(); newDeptModel.DepartmentId = item.DepartmentId; newDeptModel.DepartmentName = item.DepartmentName; List <BreakdownByItemViewModel> newItemList = new List <BreakdownByItemViewModel>(); BreakdownByItemViewModel newItemModel = new BreakdownByItemViewModel(); newItemModel.ItemId = item.ItemId; newItemModel.Description = item.Description; newItemModel.Quantity = item.Quantity; newItemList.Add(newItemModel); newDeptModel.requestList = newItemList; model.Add(newDeptModel); } } return(model); }