示例#1
0
        public JsonResult ViewDisbursement(int staffId)
        {
            StationeryDisbursementEF stationeryDisbursement = rndService.FindDisbursementByStatusAndStaffId(staffId, "Disbursed");
            List <StationeryDisbursementDetailsEF>        stationeryDisbursementDetails = rndService.FindDisbursementDetailsByDisbursementId(stationeryDisbursement.DisbursementId);
            List <MobileStationeryDisbursementDetailsDTO> detailsDTO = new List <MobileStationeryDisbursementDetailsDTO>();

            foreach (var item in stationeryDisbursementDetails)
            {
                detailsDTO.Add(new MobileStationeryDisbursementDetailsDTO
                {
                    DisbursementDetailsId = item.DisbursementDetailsId,
                    DisbursementId        = item.DisbursementId,
                    ItemCode          = item.ItemCode,
                    Stock             = item.Stock,
                    RequestQuantity   = item.RequestQuantity,
                    RetrievedQuantity = item.RetrievedQuantity,
                    DisbursedQuantity = item.DisbursedQuantity
                }
                               );
            }

            MobileDisbursementItemDTO disbursementInfo = new MobileDisbursementItemDTO
            {
                DisbursementDetails = detailsDTO,
                DisbursementId      = stationeryDisbursement.DisbursementId,
                ClerkId             = stationeryDisbursement.StoreClerk.StaffId
            };


            return(Json(disbursementInfo, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public void SaveDisbursement(StationeryDisbursementEF disbursement)
        {
            var existingDisbursement = context.StationeryDisbursements.Find(disbursement.DisbursementId);

            if (existingDisbursement != null)
            {
                context.Entry(existingDisbursement).CurrentValues.SetValues(disbursement);
                context.SaveChanges();
            }
        }
示例#3
0
 public void UpdateDisbursementStatus(StationeryDisbursementEF disbursement)
 {
     disbursement.Status = "Acknowledged";
     if (disbursement.StoreClerk.Email != null)
     {
         string subject = "Acknowledgement for Disbursement#" + disbursement.DisbursementId;
         string body    = disbursement.Staff.Name + " has acknowledged disbursement#" + disbursement.DisbursementId + ".";
         Email.SendEmail(disbursement.StoreClerk.Email, subject, body);
     }
     rndEFF.SaveDisbursement(disbursement);
 }
示例#4
0
        public JsonResult AcknowledgeDisbursement(int disbursementId)
        {
            StaffEF staff = staffService.GetStaff();

            ViewBag.staff = staff;
            StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId);

            rndService.UpdateDisbursementStatus(disbursement);

            return(Json(new { status = "Delivery Acknowledged" }));
        }
示例#5
0
        public ActionResult ViewDisbursement(int disbursementId)
        {
            StaffEF staff = staffService.GetStaff();

            ViewBag.staff = staff;
            StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId);
            List <StationeryDisbursementDetailsEF> disbursementDetails = rndService.FindDisbursementDetailsByDisbursementId(disbursementId);

            ViewBag.disbursement        = disbursement;
            ViewBag.disbursementDetails = disbursementDetails;
            return(View());
        }
示例#6
0
        public ActionResult ViewDisbursement(int disbursementId, string decision)
        {
            if (decision == "Back")
            {
                return(RedirectToAction("Index"));
            }
            StaffEF staff = staffService.GetStaff();

            ViewBag.staff = staff;
            StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId);

            rndService.UpdateDisbursementStatus(disbursement);

            return(RedirectToAction("ViewDisbursement", new { disbursementId }));
        }
        public ActionResult ViewDisbursement(int disbursementId)
        {
            StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId);

            ViewData["disbursement"] = disbursement;
            List <StationeryDisbursementDetailsEF> details = rndService.FindDisbursementDetailsByDisbursementId(disbursementId);
            // list of staff in that department
            List <StaffEF> deptStaff = staffService.FindAllEmployeeByDepartmentCode(disbursement.DepartmentCode);

            ViewData["deptStaff"] = deptStaff;
            StaffEF storeClerk = staffService.GetStaff();

            ViewData["storeClerk"] = storeClerk;
            return(View(details));
        }
示例#8
0
        public void GenerateDisbursementList(List <StationeryRequestDetailsEF> outstandingRequests, int retrievalId)
        {
            // Create Disbursement
            // Get list of distinct depts with outstanding requests
            DepartmentService   deptService = new DepartmentService();
            List <DepartmentEF> depts       = deptService.FindDistinctDepartments(outstandingRequests);

            // Create disbursement for each department
            foreach (DepartmentEF dept in depts)
            {
                // get the department's outstanding request details
                List <StationeryRequestDetailsEF> reqByDept = outstandingRequests
                                                              .Where(x => x.Request.Staff.Department == dept)
                                                              .ToList <StationeryRequestDetailsEF>();

                StationeryDisbursementEF disbursement = new StationeryDisbursementEF()
                {
                    RetrievalId     = retrievalId,
                    DepartmentCode  = dept.DepartmentCode,
                    Status          = "Processing",
                    CollectionRepId = dept.DepartmentRepresentativeId
                };
                CreateDisbursement(disbursement);

                //foreach item in the dept disbursement
                //create disbursement details
                var disbursementDetails = from d in reqByDept
                                          group d by d.ItemCode
                                          into grp
                                          select new
                {
                    grp.Key,
                    RequestQuantity = grp.Sum(d => d.RequestQuantity - d.FulfilledQuantity)
                };

                List <StationeryDisbursementDetailsEF> detailsList = new List <StationeryDisbursementDetailsEF>();
                foreach (var dis in disbursementDetails)
                {
                    StationeryDisbursementDetailsEF det = new StationeryDisbursementDetailsEF()
                    {
                        DisbursementId  = disbursement.DisbursementId,
                        ItemCode        = dis.Key,
                        RequestQuantity = dis.RequestQuantity
                    };
                    CreateDisbursementDetails(det);
                }
            }
        }
示例#9
0
        public void UpdateDisbursedQuantities(List <StationeryDisbursementDetailsEF> details, int disbursementId,
                                              int collectionRepId, int storeClerkId)
        {
            // update disbursement details' Disbursed Quantity
            foreach (StationeryDisbursementDetailsEF d in details)
            {
                rndEFF.SaveDisbursementDetails(d);
            }
            // set disbursement status to disbursed
            StationeryDisbursementEF disbursement = rndEFF.FindDisbursementById(disbursementId);

            disbursement.Status          = "Disbursed";
            disbursement.CollectionRepId = collectionRepId;
            disbursement.StoreClerkId    = storeClerkId;
            rndEFF.SaveDisbursement(disbursement);
        }
示例#10
0
 //DISBURSE
 public void CreateDisbursement(StationeryDisbursementEF disbursement)
 {
     rndEFF.AddToDisbursement(disbursement);
 }
示例#11
0
        public void UpdateRequestAfterDisbursement(List <StationeryDisbursementDetailsEF> details, int disbursementId)
        {
            StationeryDisbursementEF disbursement = rndEFF.FindDisbursementById(disbursementId);

            foreach (StationeryDisbursementDetailsEF d in details)
            {
                // list of request in a specific disbursement by departmentCode & request details status & itemCode
                List <StationeryRequestDetailsEF> requests = rndEFF.FindAllRequestDetailsByStatusAndDepartmentCode("Processed", d.ItemCode, disbursement.DepartmentCode);
                if (d.DisbursedQuantity == 0)
                {
                    foreach (StationeryRequestDetailsEF r in requests)
                    {
                        r.RetrievedQuantity = null;
                        r.FulfilmentStatus  = "Outstanding";
                        rndEFF.SaveRequestDetails(r);
                    }
                }
                // d.disbursedQuantity != 0
                else
                {
                    if (d.RequestQuantity == d.DisbursedQuantity)
                    {
                        foreach (StationeryRequestDetailsEF r in requests)
                        {
                            if (r.RetrievedQuantity + r.FulfilledQuantity == r.RequestQuantity)
                            {
                                r.FulfilledQuantity = r.RequestQuantity;
                                r.RetrievedQuantity = null;
                                r.FulfilmentStatus  = "Completed";
                                rndEFF.SaveRequestDetails(r);
                            }
                            else if (r.RetrievedQuantity + r.FulfilledQuantity < r.RequestQuantity)
                            {
                                r.FulfilledQuantity = (int)r.RetrievedQuantity + r.FulfilledQuantity;
                                r.RetrievedQuantity = null;
                                r.FulfilmentStatus  = "Outstanding";
                                rndEFF.SaveRequestDetails(r);
                            }
                        }
                    }
                    //insufficient stock
                    else if (d.RequestQuantity > d.DisbursedQuantity)
                    {
                        List <StationeryRequestDetailsEF> sortedRequests = requests.OrderBy(x => x.Request.RequestDate).ToList <StationeryRequestDetailsEF>();
                        int itemCount = d.DisbursedQuantity;
                        foreach (StationeryRequestDetailsEF r in sortedRequests)
                        {
                            if (r.RetrievedQuantity <= itemCount && r.RetrievedQuantity != 0)
                            {
                                itemCount = itemCount - (int)r.RetrievedQuantity;
                                if (r.RetrievedQuantity + r.FulfilledQuantity == r.RequestQuantity)
                                {
                                    r.FulfilledQuantity = r.RequestQuantity;
                                    r.RetrievedQuantity = null;
                                    r.FulfilmentStatus  = "Completed";
                                    rndEFF.SaveRequestDetails(r);
                                }
                                else if (r.RetrievedQuantity + r.FulfilledQuantity < r.RequestQuantity)
                                {
                                    r.FulfilledQuantity = r.FulfilledQuantity + (int)r.RetrievedQuantity;
                                    r.RetrievedQuantity = null;
                                    r.FulfilmentStatus  = "Outstanding";
                                    rndEFF.SaveRequestDetails(r);
                                }
                            }
                            // insufficient stock for that request (outstandingQty > itemCount)
                            else if (r.RetrievedQuantity > itemCount & itemCount != 0)
                            {
                                r.FulfilledQuantity = r.FulfilledQuantity + itemCount;
                                r.RetrievedQuantity = null;
                                r.FulfilmentStatus  = "Outstanding";
                                rndEFF.SaveRequestDetails(r);
                                itemCount = 0;
                            }
                            else if (itemCount == 0 || r.RetrievedQuantity == 0)
                            {
                                r.RetrievedQuantity = null;
                                r.FulfilmentStatus  = "Outstanding";
                                rndEFF.SaveRequestDetails(r);
                            }
                        }
                    }
                }
            }
        }
示例#12
0
 //DISBURSEMENT
 public void AddToDisbursement(StationeryDisbursementEF disbursement)
 {
     context.StationeryDisbursements.Add(disbursement);
     context.SaveChanges();
 }
示例#13
0
        // Send disbursement details to android
        public JsonResult GetDepartmentDisbursement(int disbursementId)
        {
            //Get Departments with active disbursements
            List <StationeryDisbursementEF>  activeDisbursements = rndService.FindDisbursementsByStatus("Retrieved");
            List <MobileActiveDepartmentDTO> activeDepartments   = new List <MobileActiveDepartmentDTO>();

            foreach (var item in activeDisbursements)
            {
                activeDepartments.Add(
                    new MobileActiveDepartmentDTO
                {
                    DisbursementId = item.DisbursementId,
                    DepartmentCode = item.DepartmentCode,
                    DepartmentName = item.Department.DepartmentName
                }
                    );
            }

            //Get items in the disbursement for the department
            //StationeryDisbursementDetailsEF stationeryDisbursement = rndService.FindDisbursementByDepartmentCode(departmentId);
            List <StationeryDisbursementDetailsEF>        details    = rndService.FindDisbursementDetailsByDisbursementId(disbursementId);
            List <MobileStationeryDisbursementDetailsDTO> detailsDTO = new List <MobileStationeryDisbursementDetailsDTO>();

            foreach (var item in details)
            {
                detailsDTO.Add(new MobileStationeryDisbursementDetailsDTO
                {
                    DisbursementDetailsId = item.DisbursementDetailsId,
                    DisbursementId        = item.DisbursementId,
                    ItemCode          = item.ItemCode,
                    Stock             = item.Stock,
                    RequestQuantity   = item.RequestQuantity,
                    RetrievedQuantity = item.RetrievedQuantity,
                    DisbursedQuantity = item.DisbursedQuantity
                }
                               );
            }

            // list of staff in that department
            StationeryDisbursementEF disbursement = rndService.FindDisbursementById(disbursementId);
            List <StaffEF>           deptStaff    = staffService.FindAllEmployeeByDepartmentCode(disbursement.DepartmentCode);
            List <MobileStaffDTO>    deptStaffDTO = new List <MobileStaffDTO>();

            foreach (var staff in deptStaff)
            {
                deptStaffDTO.Add(new MobileStaffDTO
                {
                    Name    = staff.Name,
                    StaffId = staff.StaffId
                }
                                 );
            }

            // Create a DTO for disbursement which includes storeClerkId/Name and EmployeeId/Name
            MobileDisbursementItemDTO mobileDisbursementItem = new MobileDisbursementItemDTO
            {
                ActiveDepartments   = activeDepartments,
                DisbursementDetails = detailsDTO,
                DisbursementId      = disbursementId,
                DepartmentStaff     = deptStaffDTO,
                CollectionRepId     = (int)disbursement.CollectionRepId
            };

            // send a list of disbursements
            return(Json(mobileDisbursementItem, JsonRequestBehavior.AllowGet));
        }