/** Create Stationery Disbursement **/
        public void createStationeryDisbursement(int retrievalID, String deptCode)
        {
            /** get departmet rep and collectiion point **/

            var q = from d in context.Departments
                    where d.DeptCode.Equals(deptCode)
                    select d;
            Department department = (Department)q.FirstOrDefault();

            try
            {
                StationeryDisbursement addStationeryDisbursement = new StationeryDisbursement();
                addStationeryDisbursement.RetrievalID        = retrievalID;
                addStationeryDisbursement.DeptCode           = deptCode;
                addStationeryDisbursement.DeptRep            = department.DeptRep;
                addStationeryDisbursement.CollectionPoint    = department.CollectionPoint;
                addStationeryDisbursement.DisbursementStatus = "Request Accepted";
                addStationeryDisbursement.DateUpdated        = DateTime.Now;
                addStationeryDisbursement.DeletedFlag        = false;
                context.AddToStationeryDisbursements(addStationeryDisbursement);
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                errorMsg = "Failed to generate Disbursement List for department";
                throw new CreateFailedException(errorMsg);
            }
        }
        /** get Sationery Disbursement details **/

        public StationeryDisbursement getStationeryDisbursement(int retrievalID, String departmentName)
        {
            var q = from sd in context.StationeryDisbursements
                    where (sd.RetrievalID == retrievalID) && (sd.Department.DeptName.Equals(departmentName)) &&
                    (sd.DisbursementStatus.Equals("Request Accepted"))
                    select sd;
            StationeryDisbursement stationeryDisbursement = (StationeryDisbursement)q.FirstOrDefault();

            return(stationeryDisbursement);
        }
        /** update disbursement status **/
        public void updateDisbursementStatus(int disbursementID, String disbursementStatus)
        {
            /** validate collection pin **/

            var q = from sd in context.StationeryDisbursements
                    where (sd.DisbursementID == disbursementID)
                    select sd;
            StationeryDisbursement updateStationeryDisbursement = (StationeryDisbursement)q.FirstOrDefault();

            updateStationeryDisbursement.DisbursementStatus = disbursementStatus;
            context.SaveChanges();
        }
        /** display disbursement list **/
        public void displayDisbursementList(String departmentName)
        {
            lblStatus.Text            = "";
            disbursementTable.Visible = true;
            FormButtons.Visible       = true;
            int retrievalID           = Convert.ToInt32(lblDBRetrievalID.Text);
            StationeryDisbursement sd = gdControl.getStationeryDisbursement(retrievalID, departmentName);

            lblDBDisbursementID.Text          = sd.DisbursementID.ToString();
            lblDBRepName.Text                 = gdControl.getDepartmentRepName(sd.DeptRep);
            lblDBCollectionPoint.Text         = sd.CollectionPoint1.CollectionPointName;
            lblDBDisbursementStatus.Text      = sd.DisbursementStatus;
            DisbursementDetailGrid.DataSource = gdControl.getStaioneryDisbursementDetails(sd.DisbursementID);
            DisbursementDetailGrid.DataBind();
        }
        /** update disbursement status **/
        public void updateDisbursementStatus(int disbursementID)
        {
            var q = from d in context.StationeryDisbursements
                    where d.DisbursementID == disbursementID
                    select d;
            StationeryDisbursement updateDisbursementStatus = (StationeryDisbursement)q.FirstOrDefault();

            updateDisbursementStatus.DisbursementStatus = "Ready for Disbursement";
            try
            {
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                errorState = true;
                errorMsg   = "Update to Disbursement List failed";
                throw new UpdateFailedException(errorMsg);
            }
        }