/* * helper method step 2 */ private List <Disbursement> GenerateDisbursementsWithUnfullfilled(List <Disbursement> targetDisbursementsList, DateTime collectionDate) { var unfufilledDisbursementDetails = _disbursementRepo.GetUnfulfilledDisbursementDetails().ToList(); foreach (var ufdDetail in unfufilledDisbursementDetails) { //refactor the remaining qty from unfulfilled details into the new disbursement details var unfulfilledDetail = new DisbursementDetail(ufdDetail); var isDisbursementForSameDept = false; foreach (var d in targetDisbursementsList) { if (d.DeptCode == ufdDetail.Disbursement.DeptCode) { unfulfilledDetail.Stationery = ufdDetail.Stationery; //depends on itemNum, add qty or add as new detail d.Add(unfulfilledDetail); isDisbursementForSameDept = true; break; } } if (isDisbursementForSameDept) { continue; } //if not for same dept, construct a new disbursement var disbursement = new Disbursement(ufdDetail.Disbursement, collectionDate); disbursement.Add(unfulfilledDetail); targetDisbursementsList.Add(disbursement); } //since the remaining qty (if any) has been factored into the new disbursement details' requested qty //mark processed unfulfilled disbursements fulfilled, and their detail lists' requested qty to be updated to tally status foreach (var detail in unfufilledDisbursementDetails) { detail.RequestedQty = detail.ActualQty; _disbursementRepo.UpdateDisbursementDetail(detail); } var unfulfilledDisList = _disbursementRepo.GetUnfulfilledDisbursements().ToList(); foreach (var unfd in unfulfilledDisList) { unfd.Status = DisbursementStatus.Fulfilled; _disbursementRepo.Update(unfd); } return(targetDisbursementsList); }
public ActionResult Edit([Bind(Include = "DisbursementId, CollectionDate, CollectionPointId, AcknowledgeEmpNum, DeptCode, Status")] Disbursement disbursement) { if (ModelState.IsValid) { _disbursementRepo.Update(disbursement); var repEmail = _employeeRepo.GetRepByDeptCode(disbursement.DeptCode).EmailAddress; if (disbursement.CollectionPointId != null) { var collectionPoint = _collectionRepo.GetById((int)disbursement.CollectionPointId); var email = new LUSSISEmail.Builder().From(User.Identity.Name).To(repEmail) .ForUpdateDisbursement(disbursement, collectionPoint).Build(); new System.Threading.Thread(delegate() { EmailHelper.SendEmail(email); }).Start(); } return(RedirectToAction("Upcoming")); } ViewBag.CollectionPointId = new SelectList(_collectionRepo.GetAll(), "CollectionPointId", "CollectionName", disbursement.CollectionPointId); return(View(disbursement)); }