public List <ItemInfobyReqiIdModel> getAggregatedItems(DeptLevelReqController deptLevelReq) { // Hm [itemcode, POJO3 aggregated] Dictionary <string, ItemInfobyReqiIdModel> temp_Dic_AggregatedItems = new Dictionary <string, ItemInfobyReqiIdModel>(); Dictionary <string, List <ItemInfobyReqiIdModel> > temp_DeptReqi = deptLevelReq.DeptReqi; foreach (var key in temp_DeptReqi.Keys) { ItemInfobyReqiIdModel reqItemInfo = new ItemInfobyReqiIdModel(); foreach (ItemInfobyReqiIdModel 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> temp_Dic_AggregatedItems_List = new List <ItemInfobyReqiIdModel>(); foreach (var key in temp_Dic_AggregatedItems.Keys) { temp_Dic_AggregatedItems_List.Add(temp_Dic_AggregatedItems[key]); } return(temp_Dic_AggregatedItems_List); }
protected void showDisbursementBtn_Clicks(object sender, EventArgs e) { List <string> reqIDList = (List <string>)Session["selectedReqIdsList"]; control.UpdateReqIdStatus(selectedReqIdsList); for (int i = 0; i < itemGridView.Rows.Count; i++) { TextBox txtTotal = (TextBox)itemGridView.Rows[i].FindControl("ProvidingTxtBox"); int qtyInStore = Convert.ToInt32(txtTotal.Text); string itemcode = itemGridView.Rows[i].Cells[1].Text; int neededQty = Convert.ToInt32(itemGridView.Rows[i].Cells[3].Text); if (Convert.ToInt32(txtTotal.Text) > neededQty) { Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script>alert('Assigned quanity can not be more than needed quantity!!!')</script>"); txtTotal.Text = neededQty.ToString(); } } Dictionary <string, DeptLevelReqController> mstrDic_Dept = new Dictionary <string, DeptLevelReqController>(); Dictionary <string, int> underNeededItem_Dic = new Dictionary <string, int>(); Dictionary <string, int> NeededItem_Dic = new Dictionary <string, int>(); Dictionary <string, List <ItemInfobyReqiIdModel> > deptReqDictionary = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); //pojo2 dictionary List <DeptLevelReqController> deptLevelReqList = new List <DeptLevelReqController>(); //Pojo 2 list Dictionary <string, Dictionary <string, int> > depConsolidatedDic = new Dictionary <string, Dictionary <string, int> >(); Dictionary <string, List <ItemInfobyReqiIdModel> > depToItem = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); Dictionary <string, List <ItemInfobyReqiIdModel> > specialReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); Dictionary <string, List <ItemInfobyReqiIdModel> > urgentReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); Dictionary <string, List <ItemInfobyReqiIdModel> > normalReqDic = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); selectedReqIdsList = (List <string>)Session["selectedReqIdsList"]; // List<string> deptList = control.GetDeptList(selectedReqIdsList); //populate Pojo 3 foreach (string reqiId in selectedReqIdsList) //1 { List <RequisitionItem> reqiItemByReqId = control.GetreqItemListByReqId(reqiId); List <ItemInfobyReqiIdModel> ItemInfobyReqiIdList = new List <ItemInfobyReqiIdModel>(); foreach (RequisitionItem reqItem in reqiItemByReqId) { ItemInfobyReqiIdModel iteminfoByReq = new ItemInfobyReqiIdModel(); iteminfoByReq.ReuisitionId1 = reqiId; iteminfoByReq.ItemCode1 = reqItem.Item_ID; iteminfoByReq.ItemQty = reqItem.Required_Qty; ItemInfobyReqiIdList.Add(iteminfoByReq); } if (control.GetRequisitionTypeByReqId(reqiId) == "Special") { specialReqDic.Add(reqiId, ItemInfobyReqiIdList); } if (control.GetRequisitionTypeByReqId(reqiId) == "Urgent") { urgentReqDic.Add(reqiId, ItemInfobyReqiIdList); } if (control.GetRequisitionTypeByReqId(reqiId) == "Normal") { normalReqDic.Add(reqiId, ItemInfobyReqiIdList); } deptReqDictionary.Add(reqiId, ItemInfobyReqiIdList); //duplicacy Dictionary <string, List <ItemInfobyReqiIdModel> > deptReqDictionary_tmp2PopulateMstrListPojo2 = new Dictionary <string, List <ItemInfobyReqiIdModel> >(); //pojo2 dictionary deptReqDictionary_tmp2PopulateMstrListPojo2.Add(reqiId, ItemInfobyReqiIdList); string dept_Name = control.GetDepName(reqiId); DeptLevelReqController deptLevelReq = new DeptLevelReqController(); deptLevelReq.DeptName = dept_Name; deptLevelReq.DeptReqi = deptReqDictionary_tmp2PopulateMstrListPojo2; // populate Pojo2 ??? deptLevelReqList.Add(deptLevelReq); //pojo 2 lis } //start populating undrneeded and needed map for (int i = 0; i < itemGridView.Rows.Count; i++) { TextBox txtTotal = (TextBox)itemGridView.Rows[i].Cells[4].FindControl("ProvidingTxtBox"); int qtyInStore = Convert.ToInt32(txtTotal.Text); string itemcode = itemGridView.Rows[i].Cells[1].Text; int neededQty = Convert.ToInt32(itemGridView.Rows[i].Cells[3].Text); if (Convert.ToInt32(txtTotal.Text) > neededQty) { Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script>alert('Assigned quanity can not be more than needed quantity!!!')</script>"); txtTotal.Text = neededQty.ToString(); } NeededItem_Dic[itemcode] = neededQty; if (qtyInStore < neededQty) { underNeededItem_Dic[itemcode] = qtyInStore; } } //end for (int index = 0; index < specialReqDic.Count; index++) { int y = specialReqDic.Count; var item = specialReqDic.ElementAt(index); string reqId = item.Key; List <ItemInfobyReqiIdModel> reqIdItemList = item.Value; string deptName = control.GetDepName(reqId); foreach (DeptLevelReqController depLevelReq in deptLevelReqList) //deplevel final map { //deptReqDictionary=Session["deptReqDictionary"]; if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel 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> reqIdItemList = item.Value; string deptName = control.GetDepName(reqId); foreach (DeptLevelReqController depLevelReq in deptLevelReqList) { if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel 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> reqIdItemList = item.Value; string deptName = control.GetDepName(reqId); foreach (DeptLevelReqController depLevelReq in deptLevelReqList) { if (depLevelReq.DeptName == deptName) { List <ItemInfobyReqiIdModel> reqIdItemInfo = deptReqDictionary[reqId]; foreach (ItemInfobyReqiIdModel 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)] foreach (DeptLevelReqController deptLevelReq in deptLevelReqList) { if (depToItem.ContainsKey(deptLevelReq.DeptName)) { List <ItemInfobyReqiIdModel> finalAggregatedItemsLis = addNewItemListIntoExistingItemList(depToItem[deptLevelReq.DeptName], getAggregatedItems(deptLevelReq)); depToItem.Remove(deptLevelReq.DeptName); depToItem.Add(deptLevelReq.DeptName, finalAggregatedItemsLis); } else { depToItem.Add(deptLevelReq.DeptName, getAggregatedItems(deptLevelReq)); } } 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> consolidateItemList = item.Value; DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Item Code", typeof(string))); dt.Columns.Add(new DataColumn("item Category", typeof(string))); dt.Columns.Add(new DataColumn("Decription", typeof(string))); dt.Columns.Add(new DataColumn("UOM", typeof(string))); dt.Columns.Add(new DataColumn("Quantity", typeof(Int32))); foreach (ItemInfobyReqiIdModel itemList in consolidateItemList) { string itemCode = itemList.ItemCode1; string itemCategory = control.GetItemCategoryByitemId(itemCode); string Desc = control.GetItemDescByitemId(itemCode); string UOM = control.GetItemUomByitemId(itemCode); int quantity = itemList.Item_assigned1; DataRow dr = dt.NewRow(); dr["Item Code"] = itemCode; dr["item Category"] = control.GetItemCategoryByitemId(itemCode); dr["Decription"] = control.GetItemDescByitemId(itemCode); dr["UOM"] = control.GetItemUomByitemId(itemCode); dr["Quantity"] = quantity; itemCodeDic.Add(itemCode, quantity); dt.Rows.Add(dr); } string disbursementId = "D0" + getDisbursementId(); Label lbl2 = new Label(); lbl2.ForeColor = System.Drawing.Color.Black; lbl2.Font.Bold = true; lbl2.Font.Size = 12; lbl2.Text = "Disbursment ID: " + disbursementId; PlaceHolder1.Controls.Add(lbl2); PlaceHolder1.Controls.Add(new LiteralControl("<br />")); Label lbl1 = new Label(); lbl1.ForeColor = System.Drawing.Color.Black; lbl1.Font.Bold = true; lbl1.Font.Size = 12; lbl1.Text = "Department Name: " + deptName; PlaceHolder1.Controls.Add(lbl1); GridView gv = new GridView(); gv.AutoGenerateColumns = true; gv.DataSource = dt; gv.DataBind(); gv.Attributes.Add("Class", "table table-striped table-bordered table-hover dataTable no-footer"); gv.Width = 800; PlaceHolder1.Controls.Add(gv); Panel1.Visible = true; if (disbursementId == s) { disbursementId = "D0" + (Convert.ToInt64(disbursementId.Substring(2)) + 1).ToString(); } List <string> reqIdByDept = new List <string>(); selectedReqIdsList = (List <string>)Session["selectedReqIdsList"]; foreach (string reqId in selectedReqIdsList) { string depname = control.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 = control.getDeptIdByDeptName(deptName); disbursement.RepStaff_ID = control.getRepStaffId(disbursement.Dept_ID); disbursement.Status = "Submitted"; control.CreateDisburseList(reqIdByDept, itemCodeDic, disbursement); //for each dept disbursement s = disbursementId; } showDisbursementBtn.Enabled = false; // requisitionSummaryView. // showDisbursementBtn.ForeColor // setInitialData(); }