public int FindDisbursedQuantityByItemCodeAndTimePeriod(string itemCode, long startMonth, long endMonth) { int itemCount = -1; List <StationeryDisbursementEF> disbursedList = context.StationeryDisbursements .Where(a => a.DateDisbursed >= startMonth && a.DateDisbursed <= endMonth) .ToList <StationeryDisbursementEF>(); if (disbursedList.Count > 0) { int disbursedQty = 0; foreach (StationeryDisbursementEF disbursement in disbursedList) { StationeryDisbursementDetailsEF disbursedDetails = context.StationeryDisbursementDetails .Where(a => a.DisbursementId == disbursement.DisbursementId && a.ItemCode == itemCode) .FirstOrDefault(); if (disbursedDetails != null) { disbursedQty += disbursedDetails.DisbursedQuantity; } } if (disbursedQty > 0) { itemCount = disbursedQty; } } return(itemCount); }
public void SaveDisbursementDetails(StationeryDisbursementDetailsEF details) { var existingDisbursementDetails = context.StationeryDisbursementDetails.Find(details.DisbursementDetailsId); if (existingDisbursementDetails != null) { context.Entry(existingDisbursementDetails).CurrentValues.SetValues(details); context.SaveChanges(); } }
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); } } }
public void UpdateRetrievedQuantities(int retrievalId) { // get list of request details with status = processed List <StationeryRequestDetailsEF> processedRequests = rndEFF.FindAllRequestDetailsByStatus("Processed"); // group them by department and itemcode var reqs = from r in processedRequests group r by new { r.Request.Staff.DepartmentCode, r.ItemCode } into grp select new { grp.Key.DepartmentCode, grp.Key.ItemCode, RetrievedQuantity = grp.Sum(r => r.RetrievedQuantity) }; // update disbursement status to Retrieved List <StationeryDisbursementEF> disbursements = rndEFF.FindDisbursementsByRetrievalId(retrievalId); List <StationeryDisbursementDetailsEF> disbursementDetails = rndEFF.FindDisbursementDetailsByRetrievalId(retrievalId); foreach (StationeryDisbursementEF disburse in disbursements) { //get sum var sum = reqs.Where(x => x.DepartmentCode == disburse.DepartmentCode).Sum(x => x.RetrievedQuantity); if (sum == 0) { // nothing to disburse disburse.Status = "Cancelled"; disburse.CollectionRepId = disburse.Department.DepartmentRepresentativeId; rndEFF.SaveDisbursement(disburse); // update the request details List <StationeryRequestDetailsEF> requests = rndEFF.FindAllProcessedRequestDetailsByDepartmentCode("Processed", disburse.DepartmentCode); foreach (StationeryRequestDetailsEF r in requests) { r.FulfilmentStatus = "Outstanding"; r.RetrievedQuantity = null; rndEFF.SaveRequestDetails(r); } } else { disburse.Status = "Retrieved"; disburse.CollectionRepId = disburse.Department.DepartmentRepresentativeId; rndEFF.SaveDisbursement(disburse); } } // insert retrieved quantity into disbursement details foreach (var req in reqs) { // use departmentCode to find disbursementId int disbursementId = disbursements.SingleOrDefault(x => x.DepartmentCode == req.DepartmentCode).DisbursementId; // use disbursementId, itemCode to find the disbursement details StationeryDisbursementDetailsEF d = disbursementDetails.SingleOrDefault(y => y.DisbursementId == disbursementId && y.ItemCode == req.ItemCode); // update the disbursement retrieved quantity d.RetrievedQuantity = (int)req.RetrievedQuantity; rndEFF.SaveDisbursementDetails(d); } }
public void CreateDisbursementDetails(StationeryDisbursementDetailsEF details) { rndEFF.AddToDisbursementDetails(details); }
public void AddToDisbursementDetails(StationeryDisbursementDetailsEF details) { context.StationeryDisbursementDetails.Add(details); context.SaveChanges(); }