// PENDING MODIFICATION TO METHOD
        public RetrievalDTO constructAdHocRetrievalDTO(LoginDTO loginDTO, int requisitionId)
        {
            List <RetrievalPrepItemDTO> retrievalPrepList = new List <RetrievalPrepItemDTO>();
            List <RetrievalItemDTO>     retrievalList     = new List <RetrievalItemDTO>();

            List <RequisitionDetail> preparingRequisitionDetailsFromSelectedRequisition = (List <RequisitionDetail>)requisitionDetailRepo.FindBy(x => x.RequisitionId == requisitionId && x.Status == "PREPARING").ToList();
            List <int> stationeriesInPreparingRequisitionDetails = RetrieveStationeryDetailsByRequisitionDetailsList(preparingRequisitionDetailsFromSelectedRequisition).ToList();

            foreach (int s in stationeriesInPreparingRequisitionDetails)
            {
                RetrievalItemDTO rID = new RetrievalItemDTO();
                rID.StationeryId = s;
                rID.Description  = stationeryRepo.FindOneBy(x => x.Id == s).Description;
                rID.Location     = stationeryRepo.FindOneBy(x => x.Id == s).Bin;

                List <RetrievalPrepItemDTO> tempRPIDTO    = new List <RetrievalPrepItemDTO>();
                List <RequisitionDetail>    reqDetailList = (List <RequisitionDetail>)preparingRequisitionDetailsFromSelectedRequisition.FindAll(x => x.StationeryId == rID.StationeryId).ToList();
                foreach (RequisitionDetail reDList in reqDetailList)
                {
                    RetrievalPrepItemDTO rPID = new RetrievalPrepItemDTO();
                    rPID.ReqStationery = stationeryRepo.FindOneBy(x => x.Id == reDList.StationeryId);
                    rPID.ReqDetail     = reDList;
                    rPID.Req           = requisitionRepo.FindOneBy(x => x.Id == requisitionId);
                    rPID.ReqOwner      = employeeRepo.FindOneBy(x => x.Id == rPID.Req.EmployeeId);
                    int deptId = rPID.ReqOwner.DepartmentId;
                    rPID.ReqDepartmentRep   = employeeRepo.FindOneBy(x => x.RoleId == (int)Enums.Roles.DepartmentRepresentative && x.DepartmentId == deptId);
                    rPID.ReqDepartment      = departmentRepo.FindOneBy(x => x.Id == deptId);
                    rPID.ReqCollectionPoint = collectionPointRepo.FindOneBy(x => x.Id == rPID.ReqDepartment.CollectionPointId);
                    tempRPIDTO.Add(rPID);
                }
                rID.RetrievalPrepItemList = tempRPIDTO;
                int count = 0;

                foreach (RetrievalPrepItemDTO retriPrepItem in tempRPIDTO)
                {
                    RequisitionDetail x = retriPrepItem.ReqDetail;
                    int y = x.QuantityOrdered;
                    count = count + y;
                }
                rID.NeededQuantity = count;
                rID.RetrievedQty   = count;
                retrievalList.Add(rID);
            }

            RetrievalDTO retrieval = new RetrievalDTO();

            retrieval.RetrievalDate = System.DateTime.Now.ToString("yyyy-MM-dd");
            Employee clerk = (Employee)employeeRepo.FindOneBy(x => x.Id == loginDTO.EmployeeId);

            if (clerk.Name == null)
            {
                retrieval.GeneratedBy = null;
            }
            else
            {
                retrieval.GeneratedBy = clerk.Name;
            }
            retrieval.RetrievalItem = retrievalList;
            return(retrieval);
        }
        public JsonResult UpdateRetrievalQuantity(int stationeryId, int quantity)
        {
            RetrievalDTO model = (RetrievalDTO)TempData["RetrievalModel"];

            model.RetrievalItem.Single(x => x.StationeryId == stationeryId).RetrievedQty = quantity;
            TempData["RetrievalModel"] = model;
            return(Json(true, JsonRequestBehavior.AllowGet));
        }
 public ActionResult ViewRetrieval()
 {
     if (Session["existinguser"] != null)
     {
         LoginDTO currentUser = (LoginDTO)Session["existinguser"];
         if (currentUser.RoleId != (int)Enums.Roles.StoreClerk)
         {
             return(RedirectToAction("RedirectToClerkOrDepartmentView", "Login"));
         }
         RetrievalDTO model = retrievalService.constructRetrievalDTO(currentUser);
         TempData["RetrievalModel"] = model;
         return(View(model));
     }
     return(RedirectToAction("Index", "Login"));
 }
 public ActionResult SubmitRetrieval()
 {
     if (Session["existinguser"] != null)
     {
         LoginDTO currentUser = (LoginDTO)Session["existinguser"];
         if (currentUser.RoleId != (int)Enums.Roles.StoreClerk)
         {
             return(RedirectToAction("RedirectToClerkOrDepartmentView", "Login"));
         }
         RetrievalDTO retrieval = (RetrievalDTO)TempData["RetrievalModel"];
         LoginDTO     loginDTO  = currentUser;
         retrievalService.completeRetrievalProcess(retrieval, currentUser.EmployeeId);
         return(RedirectToAction("ViewRetrieval"));
     }
     return(RedirectToAction("Index", "Login"));
 }
예제 #5
0
        // GET: api/MobileRetrieval/5
        public RetrievalDTO Get(int id)
        {
            Models.DTOs.LoginDTO loginDTO = new Models.DTOs.LoginDTO
            {
                EmployeeId = id
            };
            Models.DTOs.RetrievalDTO tempModel = retrievalService.constructRetrievalDTO(loginDTO);
            RetrievalDTO             model     = new RetrievalDTO
            {
                LoginDTO      = loginDTO,
                RetrievalDate = tempModel.RetrievalDate,
                RetrievalItem = new List <RetrievalItemDTO>()
            };

            foreach (Models.DTOs.RetrievalItemDTO ri in tempModel.RetrievalItem)
            {
                RetrievalItemDTO ri2 = new RetrievalItemDTO
                {
                    Description           = ri.Description,
                    Location              = ri.Location,
                    NeededQuantity        = ri.NeededQuantity,
                    RetrievedQty          = ri.RetrievedQty,
                    StationeryId          = ri.StationeryId,
                    RetrievalPrepItemList = new List <RetrievalPrepItemDTO>()
                };

                foreach (Models.DTOs.RetrievalPrepItemDTO rpi in ri.RetrievalPrepItemList)
                {
                    RetrievalPrepItemDTO rpi2 = new RetrievalPrepItemDTO
                    {
                        RequisitionDetail = new RequisitionDetailDTO
                        {
                            Id            = rpi.ReqDetail.Id,
                            RequisitionId = rpi.ReqDetail.RequisitionId
                        }
                    };

                    ri2.RetrievalPrepItemList.Add(rpi2);
                }

                model.RetrievalItem.Add(ri2);
            }

            return(model);
        }
 public ActionResult RetrieveSelectedAdHocRetrieval()
 {
     if (Session["existinguser"] != null)
     {
         LoginDTO currentUser = (LoginDTO)Session["existinguser"];
         if (currentUser.RoleId != (int)Enums.Roles.StoreClerk)
         {
             return(RedirectToAction("RedirectToClerkOrDepartmentView", "Login"));
         }
         AdHocRetrievalMenuDTO model = (AdHocRetrievalMenuDTO)TempData["AdHocRetrievalMenuModel"];
         RetrievalDTO          rtM   = new RetrievalDTO()
         {
             AdHocRetrievalId = model.RequisitionId
         };
         return(RedirectToAction("ViewSelectedAdHocRetrieval", new { @requisitionId = model.RequisitionId }));
     }
     return(RedirectToAction("Index", "Login"));
 }
예제 #7
0
        // POST: api/MobileRetrieval
        public void Post([FromBody] RetrievalDTO mR)
        {
            Models.DTOs.RetrievalDTO r = new Models.DTOs.RetrievalDTO();
            r.LoginDTO = new Models.DTOs.LoginDTO
            {
                EmployeeId = mR.LoginDTO.EmployeeId
            };
            r.RetrievalDate = mR.RetrievalDate;
            r.RetrievalItem = new List <Models.DTOs.RetrievalItemDTO>();

            foreach (RetrievalItemDTO mRi in mR.RetrievalItem)
            {
                Models.DTOs.RetrievalItemDTO ri = new Models.DTOs.RetrievalItemDTO
                {
                    Description           = mRi.Description,
                    Location              = mRi.Location,
                    NeededQuantity        = mRi.NeededQuantity,
                    RetrievedQty          = mRi.RetrievedQty,
                    StationeryId          = mRi.StationeryId,
                    RetrievalPrepItemList = new List <Models.DTOs.RetrievalPrepItemDTO>()
                };

                foreach (RetrievalPrepItemDTO mRpi in mRi.RetrievalPrepItemList)
                {
                    Models.DTOs.RetrievalPrepItemDTO rpi = new Models.DTOs.RetrievalPrepItemDTO
                    {
                        ReqDetail = new Models.RequisitionDetail
                        {
                            Id            = mRpi.RequisitionDetail.Id,
                            RequisitionId = mRpi.RequisitionDetail.RequisitionId
                        }
                    };

                    ri.RetrievalPrepItemList.Add(rpi);
                }

                r.RetrievalItem.Add(ri);
            }

            retrievalService.completeRetrievalProcess(r, r.LoginDTO.EmployeeId);
        }
        public void completeRetrievalProcess(RetrievalDTO retrieval, int employeeId)
        {
            int deliveredEmployeeId = employeeId;

            List <RetrievalItemDTO> retrievalItems = retrieval.RetrievalItem;

            foreach (RetrievalItemDTO rtItem in retrievalItems)
            {
                if (rtItem.RetrievedQty != rtItem.NeededQuantity)
                {
                    int qtyDifference = rtItem.RetrievedQty - rtItem.NeededQuantity;
                    AdjustmentVoucher targetAdjustmentVoucher = retrieveNewOrAvailableAdjustmentVoucherForClerk(deliveredEmployeeId);
                    createNewAdjustmentVoucherDetail(targetAdjustmentVoucher, rtItem.StationeryId, (qtyDifference));

                    // List<RetrievalPrepItemDTO> orderedRPItemListByDate = (List<RetrievalPrepItemDTO>)rtItem.RetrievalPrepItemList.OrderBy(x => x.Req.DateTime);
                    List <RequisitionDetail> requisitionDetailsList = (List <RequisitionDetail>)rtItem.RetrievalPrepItemList.Select(x => x.ReqDetail).ToList();
                    List <int> requisitionDetailsIdList             = (List <int>)requisitionDetailsList.Select(x => x.Id).ToList();
                    int        availableBalance = rtItem.RetrievedQty;

                    //updates status of affected requisition details and chain creates new one if partially retrieved --> written by shona
                    requisitionCatalogueService.UpdateRequisitionDetailsAfterRetrieval(availableBalance, requisitionDetailsIdList);
                    List <RequisitionDetail> pendingCollectionList = getRequisitionDetailListByPendingCollectionAndStationeryId(rtItem.StationeryId);
                    createNewDisbursementsFromUpdatedRequisitionDetails(pendingCollectionList, deliveredEmployeeId);
                }
                else
                {
                    // List<RetrievalPrepItemDTO> orderedRPItemListByDate = (List<RetrievalPrepItemDTO>)rtItem.RetrievalPrepItemList.OrderBy(x => x.Req.DateTime);
                    List <RequisitionDetail> requisitionDetailsList = (List <RequisitionDetail>)rtItem.RetrievalPrepItemList.Select(x => x.ReqDetail).ToList();
                    List <int> requisitionDetailsIdList             = (List <int>)requisitionDetailsList.Select(x => x.Id).ToList();
                    int        availableBalance = rtItem.RetrievedQty;

                    //updates status of affected requisition details and chain creates new one if partially retrieved --> written by shona
                    requisitionCatalogueService.UpdateRequisitionDetailsAfterRetrieval(availableBalance, requisitionDetailsIdList);
                    List <RequisitionDetail> pendingCollectionList = getRequisitionDetailListByPendingCollectionAndStationeryId(rtItem.StationeryId);
                    createNewDisbursementsFromUpdatedRequisitionDetails(pendingCollectionList, deliveredEmployeeId);
                }
            }
        }
        public RetrievalDTO constructRetrievalDTO(LoginDTO loginDTO)
        {
            List <RetrievalPrepItemDTO> retrievalPrepList              = new List <RetrievalPrepItemDTO>();
            List <RetrievalItemDTO>     retrievalList                  = new List <RetrievalItemDTO>();
            List <CollectionPoint>      assignedCollectionPoint        = RetrieveAssignedCollectionPoints(loginDTO.EmployeeId);
            List <Department>           assignedDepartment             = RetrieveDepartmentsInCollectionPointList(assignedCollectionPoint);
            List <Employee>             employeesInAssignedDepartments = RetrieveAllEmployeesInAssignedDepartmentList(assignedDepartment);
            List <Requisition>          approvedRequisitionsFromEmployeesInAssignedDepartments = RetrieveAllApprovedRequisitionsByEmployeeList(employeesInAssignedDepartments);
            List <RequisitionDetail>    preparingRequisitionDetailsFromApprovedRequisitions    = RetrieveAllPreparingRequisitionDetailsByRequisitionList(approvedRequisitionsFromEmployeesInAssignedDepartments);
            List <int> stationeriesInPreparingRequisitionDetails = RetrieveStationeryDetailsByRequisitionDetailsList(preparingRequisitionDetailsFromApprovedRequisitions);

            // .GroupBy(x => x.Id).Select(g => g.First()).ToList()
            // create retrievalItemDTO
            foreach (int s in stationeriesInPreparingRequisitionDetails)
            {
                RetrievalItemDTO rID = new RetrievalItemDTO();
                rID.StationeryId = s;
                rID.Description  = stationeryRepo.FindOneBy(x => x.Id == s).Description;
                rID.Location     = stationeryRepo.FindOneBy(x => x.Id == s).Bin;
                List <RetrievalPrepItemDTO> tempRPIDTO    = new List <RetrievalPrepItemDTO>();
                List <RequisitionDetail>    reqDetailList = (List <RequisitionDetail>)preparingRequisitionDetailsFromApprovedRequisitions.FindAll(x => x.StationeryId == rID.StationeryId);
                foreach (RequisitionDetail reDList in reqDetailList)
                {
                    RetrievalPrepItemDTO rPID = new RetrievalPrepItemDTO();
                    rPID.ReqStationery      = stationeryRepo.FindOneBy(x => x.Id == reDList.StationeryId);
                    rPID.ReqDetail          = reDList;
                    rPID.Req                = approvedRequisitionsFromEmployeesInAssignedDepartments.Find(x => x.Id == rPID.ReqDetail.RequisitionId);
                    rPID.ReqOwner           = employeesInAssignedDepartments.Find(x => x.Id == rPID.Req.EmployeeId);
                    rPID.ReqDepartmentRep   = employeesInAssignedDepartments.Find(x => x.RoleId == (int)Enums.Roles.DepartmentRepresentative);
                    rPID.ReqDepartment      = assignedDepartment.Find(x => x.Id == rPID.ReqDepartmentRep.DepartmentId);
                    rPID.ReqCollectionPoint = assignedCollectionPoint.Find(x => x.Id == rPID.ReqDepartment.CollectionPointId);
                    tempRPIDTO.Add(rPID);
                }

                rID.RetrievalPrepItemList = tempRPIDTO;
                int count = 0;

                foreach (RetrievalPrepItemDTO retriPrepItem in tempRPIDTO)
                {
                    RequisitionDetail x = retriPrepItem.ReqDetail;
                    int y = x.QuantityOrdered;
                    count = count + y;
                }

                rID.NeededQuantity = count;
                rID.RetrievedQty   = count;
                retrievalList.Add(rID);
            }

            RetrievalDTO retrieval = new RetrievalDTO();

            retrieval.RetrievalDate = System.DateTime.Now.ToString("yyyy-MM-dd");
            Employee clerk = (Employee)employeeRepo.FindOneBy(x => x.Id == loginDTO.EmployeeId);

            if (clerk.Name == null)
            {
                retrieval.GeneratedBy = null;
            }
            else
            {
                retrieval.GeneratedBy = clerk.Name;
            }

            retrieval.RetrievalItem = retrievalList;
            return(retrieval);
        }