public List <ItemInfobyReqiIdModel_M> getAggregatedItems(DeptLevelReqController_M deptLevelReq) { Dictionary <string, ItemInfobyReqiIdModel_M> temp_Dic_AggregatedItems = new Dictionary <string, ItemInfobyReqiIdModel_M>(); Dictionary <string, List <ItemInfobyReqiIdModel_M> > temp_DeptReqi = deptLevelReq.DeptReqi; foreach (var key in temp_DeptReqi.Keys) { ItemInfobyReqiIdModel_M reqItemInfo = new ItemInfobyReqiIdModel_M(); foreach (ItemInfobyReqiIdModel_M itemInfoReq in temp_DeptReqi[key]) { if (temp_Dic_AggregatedItems.ContainsKey(itemInfoReq.ItemCode1)) { temp_Dic_AggregatedItems[itemInfoReq.ItemCode1].ItemQty = temp_Dic_AggregatedItems[itemInfoReq.ItemCode1].ItemQty + itemInfoReq.ItemQty; } else { temp_Dic_AggregatedItems.Add(itemInfoReq.ItemCode1, itemInfoReq); } } } // make list of items values List <ItemInfobyReqiIdModel_M> temp_Dic_AggregatedItems_List = new List <ItemInfobyReqiIdModel_M>(); foreach (var key in temp_Dic_AggregatedItems.Keys) { temp_Dic_AggregatedItems_List.Add(temp_Dic_AggregatedItems[key]); } return(temp_Dic_AggregatedItems_List); }
//createDisbursementList public void createDisbursementList(List <string> selectedReqidList, Dictionary <string, int> neededqty, Dictionary <string, int> UnderNeeded_qty) // public List<DeptLevelReq> createDisbursementList(List<string> selectedReqidList, Dictionary<string, int> neededqty, Dictionary<string, int> UnderNeeded_qty) { Dictionary <string, DeptLevelReqController_M> mstrDic_Dept = new Dictionary <string, DeptLevelReqController_M>(); // Dictionary<string, int> underNeededItem_Dic = new Dictionary<string, int>(); Dictionary <string, int> underNeededItem_Dic = UnderNeeded_qty; // Dictionary<string, int> NeededItem_Dic = new Dictionary<string, int>(); Dictionary <string, int> NeededItem_Dic = neededqty; Dictionary <string, List <ItemInfobyReqiIdModel_M> > deptReqDictionary = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); //pojo2 dictionary List <DeptLevelReqController_M> deptLevelReqList = new List <DeptLevelReqController_M>(); //Pojo 2 list Dictionary <string, Dictionary <string, int> > depConsolidatedDic = new Dictionary <string, Dictionary <string, int> >(); Dictionary <string, List <ItemInfobyReqiIdModel_M> > depToItem = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); Dictionary <string, List <ItemInfobyReqiIdModel_M> > specialReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); Dictionary <string, List <ItemInfobyReqiIdModel_M> > urgentReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); Dictionary <string, List <ItemInfobyReqiIdModel_M> > normalReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); //Populating specialReqDic ,urgentReqDic ,normalReqDic foreach (string reqiId in selectedReqidList) //1 { List <RequisitionItem> reqiItemByReqId = GetreqItemListByReqId(reqiId); List <ItemInfobyReqiIdModel_M> ItemInfobyReqiIdList = new List <ItemInfobyReqiIdModel_M>(); foreach (RequisitionItem reqItem in reqiItemByReqId) { ItemInfobyReqiIdModel_M iteminfoByReq = new ItemInfobyReqiIdModel_M(); iteminfoByReq.RequisitionId1 = reqiId; iteminfoByReq.ItemCode1 = reqItem.Item_ID; iteminfoByReq.ItemQty = reqItem.Required_Qty; ItemInfobyReqiIdList.Add(iteminfoByReq); } if (GetRequisitionTypeByReqId(reqiId) == "Special") { specialReqDic[reqiId] = ItemInfobyReqiIdList; } if (GetRequisitionTypeByReqId(reqiId) == "Urgent") { urgentReqDic[reqiId] = ItemInfobyReqiIdList; } if (GetRequisitionTypeByReqId(reqiId) == "Normal") { normalReqDic.Add(reqiId, ItemInfobyReqiIdList); } deptReqDictionary.Add(reqiId, ItemInfobyReqiIdList); //duplicacy Dictionary <string, List <ItemInfobyReqiIdModel_M> > deptReqDictionary_tmp2PopulateMstrListPojo2 = new Dictionary <string, List <ItemInfobyReqiIdModel_M> >(); //pojo2 dictionary deptReqDictionary_tmp2PopulateMstrListPojo2.Add(reqiId, ItemInfobyReqiIdList); string dept_Name = GetDepName(reqiId); DeptLevelReqController_M deptLevelReq = new DeptLevelReqController_M(); deptLevelReq.DeptName = dept_Name; deptLevelReq.DeptReqi = deptReqDictionary_tmp2PopulateMstrListPojo2; // populate Pojo2 ??? deptLevelReqList.Add(deptLevelReq); //pojo 2 lis } for (int index = 0; index < specialReqDic.Count; index++) { int y = specialReqDic.Count; var item = specialReqDic.ElementAt(index); string reqId = item.Key; List <ItemInfobyReqiIdModel_M> reqIdItemList = item.Value; string deptName = GetDepName(reqId); foreach (DeptLevelReqController_M depLevelReq in deptLevelReqList) //deplevel final map { //deptReqDictionary=Session["deptReqDictionary"]; if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel_M> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel_M itemInfoByreq in reqIdItemInfo) { string itemCode = itemInfoByreq.ItemCode1; int assign = itemInfoByreq.ItemQty; //start allocating quantity if (underNeededItem_Dic.ContainsKey(itemCode)) { if (itemInfoByreq.ItemQty < underNeededItem_Dic[itemCode]) { itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; underNeededItem_Dic[itemCode] = underNeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } else { itemInfoByreq.Item_assigned1 = underNeededItem_Dic[itemCode]; } } else { itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; NeededItem_Dic[itemCode] = NeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } ///finish allocation } } } } for (int index = 0; index < urgentReqDic.Count; index++) { int y = urgentReqDic.Count; var item = urgentReqDic.ElementAt(index); string reqId = item.Key; List <ItemInfobyReqiIdModel_M> reqIdItemList = item.Value; string deptName = GetDepName(reqId); foreach (DeptLevelReqController_M depLevelReq in deptLevelReqList) { if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel_M> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel_M itemInfoByreq in reqIdItemInfo) { string itemCode = itemInfoByreq.ItemCode1; int assign = itemInfoByreq.ItemQty; //start allocating quantity if (underNeededItem_Dic.ContainsKey(itemCode)) { if (itemInfoByreq.ItemQty < underNeededItem_Dic[itemCode]) { itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; underNeededItem_Dic[itemCode] = underNeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } else { itemInfoByreq.Item_assigned1 = underNeededItem_Dic[itemCode]; } } else { itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; NeededItem_Dic[itemCode] = NeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } ///finish allocation } } } } // selection from screen --- mstr map : req-item for (int index = 0; index < normalReqDic.Count; index++) { int y = normalReqDic.Count; var item = normalReqDic.ElementAt(index); string reqId = item.Key; List <ItemInfobyReqiIdModel_M> reqIdItemList = item.Value; string deptName = GetDepName(reqId); foreach (DeptLevelReqController_M depLevelReq in deptLevelReqList) { if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel_M> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel_M itemInfoByreq in reqIdItemInfo) { string itemCode = itemInfoByreq.ItemCode1; int assign = itemInfoByreq.ItemQty; //start allocating quantity if (underNeededItem_Dic.ContainsKey(itemCode)) { if (itemInfoByreq.ItemQty < underNeededItem_Dic[itemCode]) { itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; underNeededItem_Dic[itemCode] = underNeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } else { itemInfoByreq.Item_assigned1 = underNeededItem_Dic[itemCode]; } } else { /////////new itemInfoByreq.Item_assigned1 = itemInfoByreq.ItemQty; NeededItem_Dic[itemCode] = NeededItem_Dic[itemCode] - itemInfoByreq.Item_assigned1; } ///finish allocation } } } } ////for showing on screen populating dictionary depToItem[deptnmae(key),listOfItem(value)] // List<Dictionary<string, List<ItemInfobyReqiId>>> deptLevelDisbursementList = new List<Dictionary<string, List<ItemInfobyReqiId>>>(); // List<DeptLevelReq> deptLevelDisbursementList = new List<DeptLevelReq>(); foreach (DeptLevelReqController_M deptLevelReq in deptLevelReqList) { if (depToItem.ContainsKey(deptLevelReq.DeptName)) { List <ItemInfobyReqiIdModel_M> finalAggregatedItemsLis = addNewItemListIntoExistingItemList(depToItem[deptLevelReq.DeptName], getAggregatedItems(deptLevelReq)); depToItem.Remove(deptLevelReq.DeptName); depToItem.Add(deptLevelReq.DeptName, finalAggregatedItemsLis); } else { depToItem.Add(deptLevelReq.DeptName, getAggregatedItems(deptLevelReq)); } //DeptLevelReq deptLevel = new DeptLevelReq(); //deptLevel.DeptName = deptLevelReq.DeptName; //deptLevel.DeptReqi = depToItem; //deptLevelDisbursementList.Add(deptLevel); } string s = ""; for (int index = 0; index < depToItem.Count; index++) { Dictionary <string, int> itemCodeDic = new Dictionary <string, int>(); var item = depToItem.ElementAt(index); string deptName = item.Key; List <ItemInfobyReqiIdModel_M> consolidateItemList = item.Value; string disbursementId = "D0" + getDisbursementId(); if (disbursementId == s) { disbursementId = "D0" + (Convert.ToInt64(disbursementId.Substring(2)) + 1).ToString(); } foreach (ItemInfobyReqiIdModel_M itemList in consolidateItemList) { string itemcode = itemList.ItemCode1; int quantity = itemList.Item_assigned1; itemCodeDic.Add(itemcode, quantity); } List <string> reqIdByDept = new List <string>(); //selectedReqidList = (List<string>)Session["selectedReqIdsList"]; foreach (string reqId in selectedReqidList) { string depname = GetDepName(reqId); if (depname == deptName) { reqIdByDept.Add(reqId); } } Disbursement disbursement = new Disbursement(); disbursement.Disbursement_ID = disbursementId; disbursement.Create_Date = DateTime.Now; disbursement.Receive_Date = null; disbursement.Dept_ID = getDeptIdByDeptName(deptName); disbursement.RepStaff_ID = getRepStaffId(disbursement.Dept_ID); disbursement.Status = "Submitted"; saveDisburseList(reqIdByDept, itemCodeDic, disbursement); s = disbursementId; //DeptLevelReq deptlevelReq = new DeptLevelReq(); //dept } // return deptLevelDisbursementList; }