public DisbursementViewModel GenerateSingleDisbursementViewModel(string disburseID, HttpSessionStateBase session)
        {
            Dictionary <string, string> empList = (Dictionary <string, string>)session["EmployeeList"];
            Requisition           req           = db.Requisitions.Where(x => x.disbursementId == disburseID).First();
            DisbursementViewModel dvm           = new DisbursementViewModel();

            dvm.dvmdList = new List <DisbursementViewModelDetail>();
            //Initialise dvm
            dvm.disbursementID  = req.disbursementId;
            dvm.requestorDeptID = req.departmentId;
            dvm.deptID          = req.departmentId;
            dvm.repName         = session["EmployeeID"].ToString();
            dvm.requestorName   = req.employee;
            dvm.status          = db.Disbursements.Where(x => x.disbursementId == req.disbursementId).First().status;
            dvm.collectionPoint = db.DeptCollectionDetails.Where(x => x.departmentId == req.departmentId).First().collectionPoint;
            dvm.collectionTime  = db.CollectionPoints.Where(x => x.locationName == dvm.collectionPoint).First().collectTime;
            dvm.disburseDate    = db.Disbursements.Where(x => x.disbursementId == req.disbursementId).First().disburseDate;

            //pack reqdet into dvmd
            foreach (RequisitionDetail reqdet in req.RequisitionDetails)
            {
                DisbursementViewModelDetail dvmd = new DisbursementViewModelDetail();
                dvmd.requestorID     = req.employee;
                dvmd.requestorName   = empList[req.employee].ToString();
                dvmd.requisitionID   = req.requisitionId;
                dvmd.itemID          = reqdet.itemId;
                dvmd.itemDescription = db.Catalogues.Find(reqdet.itemId).description;
                dvmd.retrievalID     = req.retrievalId;
                dvmd.requestQty      = reqdet.requestQty;
                dvmd.retrieveQty     = reqdet.retrieveQty;
                dvm.dvmdList.Add(dvmd);
            }
            return(dvm);
        }
        public List <DisbursementViewModel> GenerateDisbursementViewModels(string retrievalID, HttpSessionStateBase session)
        {
            List <DisbursementViewModel> disburseVMList = new List <DisbursementViewModel>();
            List <Requisition>           requisitions   = db.Requisitions.Where(x => x.retrievalId == retrievalID).ToList();
            Dictionary <string, string>  empList        = (Dictionary <string, string>)session["EmployeeList"];

            foreach (Requisition req in requisitions)
            {
                DisbursementViewModel dvm = new DisbursementViewModel();
                dvm.dvmdList = new List <DisbursementViewModelDetail>();
                //Initialise dvm if not created
                if (!disburseVMList.Where(x => x.disbursementID == req.disbursementId).Any())
                {
                    dvm.disbursementID  = req.disbursementId;
                    dvm.requestorDeptID = req.departmentId;
                    dvm.status          = db.Disbursements.Where(x => x.disbursementId == req.disbursementId).First().status;
                    dvm.repName         = db.DeptCollectionDetails.Where(x => x.departmentId == req.departmentId).First().representative;
                    dvm.collectionPoint = db.DeptCollectionDetails.Where(x => x.departmentId == req.departmentId).First().collectionPoint;
                    dvm.collectionTime  = db.CollectionPoints.Where(x => x.locationName == dvm.collectionPoint).First().collectTime;
                    dvm.disburseDate    = db.Disbursements.Where(x => x.disbursementId == req.disbursementId).First().disburseDate;
                    dvm.adjustmentID    = db.Disbursements.Where(x => x.disbursementId == req.disbursementId).First().adjustmentID;
                    disburseVMList.Add(dvm);
                }
                else
                {
                    dvm = disburseVMList.Find(x => x.disbursementID == req.disbursementId);
                }
                //pack reqdet into dvmd
                foreach (RequisitionDetail reqdet in req.RequisitionDetails)
                {
                    DisbursementViewModelDetail dvmd = new DisbursementViewModelDetail();
                    dvmd.requestorID     = req.employee;
                    dvmd.requestorName   = empList[req.employee].ToString();
                    dvmd.requisitionID   = req.requisitionId;
                    dvmd.itemID          = reqdet.itemId;
                    dvmd.itemDescription = db.Catalogues.Find(reqdet.itemId).description;
                    dvmd.retrievalID     = req.retrievalId;
                    dvmd.requestQty      = reqdet.requestQty;
                    dvmd.retrieveQty     = reqdet.retrieveQty;

                    AdjustmentDetail adjustmentDetail = db.AdjustmentDetails.Where(w => w.voucherId == dvm.adjustmentID && w.itemId == dvmd.itemID).FirstOrDefault();
                    if (adjustmentDetail != null)
                    {
                        dvmd.adjQty = adjustmentDetail.quantity;
                    }

                    dvm.dvmdList.Add(dvmd);
                }
            }
            return(disburseVMList);
        }