private ProcessingDetail GetProcessingDetail(long id) { ViewBag.id = id; ProcessingDetail re = new ProcessingDetail { Proc = db.Processing.Include(p => p.Queue).Where(p => p.ProcID == id).ToList()[0] }; re.Rec = db.Record.Include(r => r.Processing).Include(r => r.Note).Include(r => r.StudentFile).Include(r => r.FileType).Where(r => r.RecordID == re.Proc.RecordID).ToList()[0]; List <FileDetail> dt = new List <FileDetail>(); var files = db.StudentFile.Include(s => s.Record).Where(s => s.FileID == re.Rec.FileID); var q = from p in db.Processing join r in db.Record on p.RecordID equals r.RecordID join t in db.FileType on r.FileTypeID equals t.FileTypeID join f in db.StudentFile on r.FileID equals f.FileID where f.FileID == re.Rec.FileID orderby p.ProcID select new LookUp { p = p, r = r, f = f, t = t }; re.PreviousProcessed = q; re.ProcErrors = db.ProcessingError.Include(p => p.ErrorType).Include(p => p.ErrorComplete).Where(p => p.ProcID == id); DirectLoanCalc(re); PellCalc(re); BudgetCalc(re); ViewBag.FinalLoanPeriod = (re.Rec.IsProratedLoan || ViewBag.SulaLoanPeriod == "4 Month" || ViewBag.ExistingLoanPeriod == "4 Month") ? "4 Month" : "8 Month"; return(re); }
// GET: UserQueue/Edit/5 public ActionResult Open(long id) { ProcessingDetail re = new ProcessingDetail(); re.Proc = db.Processing.Include(p => p.Queue).Where(p => p.ProcID == id).ToList()[0]; re.Rec = db.Record.Include(r => r.Processing).Include(r => r.Note).Include(r => r.StudentFile).Include(r => r.FileType).Where(r => r.RecordID == re.Proc.RecordID).ToList()[0]; return(View(re)); }
public ActionResult OpenAdmin(long id, string mainReturn) { if (String.IsNullOrEmpty(mainReturn)) { ViewBag.mainReturn = Request.UrlReferrer; } else { ViewBag.mainReturn = mainReturn; } ViewBag.OpenReturn = Url.Action("OpenAdmin", "FileOpen", new { id, ViewBag.mainReturn }); ProcessingDetail re = GetProcessingDetail(id); return(View(re)); }
// TODO: Add CLEs for '17-'18 private void BudgetCalc(ProcessingDetail processingDetail) { Record record = processingDetail.Rec; decimal Room = 0; decimal Travel = 0; decimal Personal = 0; decimal Tuition; decimal NumMonthsInAY = Convert.ToDecimal(record.NumMonthsInAY); if (!String.IsNullOrEmpty(record.StateOnISIR)) { int region = RegionForState[record.StateOnISIR]; CLE cle; if (record.AwardYear == "'17-'18") { cle = (record.IsWithParents == true) ? WithParentsCLE1718[region] : OffCampusCLE1718[region]; } else { cle = (record.IsWithParents == true) ? WithParentsCLE1819[region] : OffCampusCLE1819[region]; } Room = cle.Room * NumMonthsInAY; Travel = (record.IsOnlineStudent == true) ? 0 : cle.Travel * NumMonthsInAY; Personal = cle.Personal * NumMonthsInAY; } decimal NumEstimatedCredits = Convert.ToDecimal(record.NumEstimatedCredits); decimal CostPerCredit = Convert.ToDecimal(record.CostPerCredit); Tuition = NumEstimatedCredits * CostPerCredit; // Assign to view variables ViewBag.Room = String.Format(DecimalAmountFormat, Room); ViewBag.Travel = String.Format(DecimalAmountFormat, Travel); ViewBag.Personal = String.Format(DecimalAmountFormat, Personal); ViewBag.Tuition = String.Format(DecimalAmountFormat, Tuition); }
public ActionResult OpenFile(long id, string mainReturn) { if (String.IsNullOrEmpty(mainReturn)) { ViewBag.mainReturn = Request.UrlReferrer; } else { ViewBag.mainReturn = mainReturn; } var userN = dbUser.AspNetUsers.Where(p => p.UserName == User.Identity.Name).First(); if (userN.AspNetRoles.First().Name == "QC Officer" || userN.AspNetRoles.First().Name == "Admin") { return(Redirect(Url.Action("OpenAdmin", "FileOpen", new { id, ViewBag.mainReturn }))); } ViewBag.OpenReturn = Url.Action("OpenFile", "FileOpen", new { id, ViewBag.mainReturn }); ProcessingDetail re = GetProcessingDetail(id); return(View(re)); }
public ActionResult Calculate(ProcessingDetail detail, string mainReturn) { Record record = db.Record.Find(detail.Rec.RecordID); record.DependencyStatus = detail.Rec.DependencyStatus; record.AcademicYear = detail.Rec.AcademicYear; record.SubAgg = detail.Rec.SubAgg; record.CombinedAgg = detail.Rec.CombinedAgg; record.IsProratedLoan = detail.Rec.IsProratedLoan; record.NumCredits = detail.Rec.NumCredits; record.ExistingAYEndsBeforeTermTwo = detail.Rec.ExistingAYEndsBeforeTermTwo; record.SubAmountUsed = detail.Rec.SubAmountUsed; record.UnsubAmountUsed = detail.Rec.UnsubAmountUsed; record.SumUsagePeriods = detail.Rec.SumUsagePeriods; record.AttendanceTermOne = detail.Rec.AttendanceTermOne; record.AttendanceTermTwo = detail.Rec.AttendanceTermTwo; record.NumAcademicYearsInProgram = detail.Rec.NumAcademicYearsInProgram; record.AwardYear = detail.Rec.AwardYear; record.EFC = detail.Rec.EFC; record.LEU = detail.Rec.LEU; record.PercentPellUsed = detail.Rec.PercentPellUsed; record.StatusTermOne = detail.Rec.StatusTermOne; record.StatusTermTwo = detail.Rec.StatusTermTwo; record.StatusTermThree = detail.Rec.StatusTermThree; record.IsOnlineStudent = detail.Rec.IsOnlineStudent; record.BudgetAwardYear = detail.Rec.BudgetAwardYear; record.StateOnISIR = detail.Rec.StateOnISIR; record.IsWithParents = detail.Rec.IsWithParents; record.NumEstimatedCredits = detail.Rec.NumEstimatedCredits; record.CostPerCredit = detail.Rec.CostPerCredit; record.NumMonthsInAY = detail.Rec.NumMonthsInAY; db.Entry(record).State = EntityState.Modified; db.SaveChanges(); return(Redirect(mainReturn)); }
// TODO: Fix Pell Amount based on EFC range private void PellCalc(ProcessingDetail processingDetail) { Record record = processingDetail.Rec; decimal LEU = Convert.ToDecimal(record.LEU); decimal PercentPellUsed = Convert.ToDecimal(record.PercentPellUsed) / 100; decimal EFC = Convert.ToDecimal(record.EFC); int AcademicYear = Convert.ToInt32(record.AcademicYear); var key = PellByEFC.Keys.Single(efc => efc(EFC)); var Pell = PellByEFC[key]; decimal MaxPellAY; switch (record.StatusTermOne) { case "full-time": MaxPellAY = Pell.FullTime; break; case "three-quarter-time": MaxPellAY = Pell.ThreeQuarterTime; break; case "half-time": MaxPellAY = Pell.HalfTime; break; case "below-half-time": MaxPellAY = Pell.BelowHalfTime; break; default: MaxPellAY = 0; break; } decimal AdditionalPell = MaxPellAY / 2; decimal RemainingLEU = (6 - (LEU / 100)) * 100; decimal MaxPellLEU = (RemainingLEU < (decimal)1.5) ? MaxPellAY * RemainingLEU : MaxPellAY; decimal MaxExistingPct = (decimal)1.5 - (PercentPellUsed); decimal MaxExistingPell = Math.Floor(MaxPellAY * MaxExistingPct); decimal FinalMaxPct = Math.Min((decimal)1.5, RemainingLEU); FinalMaxPct = Math.Min(FinalMaxPct, MaxExistingPct); decimal FinalMaxAmountTotal; if (record.DependencyStatus == "DependentNoParentInfo" || AcademicYear == 6) { FinalMaxAmountTotal = 0; } else { decimal temp = (FinalMaxPct >= 1) ? MaxPellAY : FinalMaxPct * MaxPellAY; decimal temp2 = (1 - FinalMaxPct < 0) ? (1 - FinalMaxPct) * MaxPellAY * -1 : 0; FinalMaxAmountTotal = Math.Floor(temp) + Math.Floor(temp2); } string StatusTermOne = record.StatusTermOne ?? ""; string StatusTermTwo = record.StatusTermTwo ?? ""; string StatusTermThree = record.StatusTermThree ?? ""; decimal FinalMaxAmountTerm1 = Math.Min(FinalMaxAmountTotal, Math.Ceiling(MaxPellAY * ((decimal)TermMultipliers[StatusTermOne] / 2))); decimal FinalMaxAmountTerm2 = Math.Min(FinalMaxAmountTotal - FinalMaxAmountTerm1, Math.Floor(MaxPellAY * ((decimal)TermMultipliers[StatusTermTwo] / 2))); decimal FinalMaxAmountTerm3 = Math.Min(FinalMaxAmountTotal - FinalMaxAmountTerm1 - FinalMaxAmountTerm2, Math.Floor(MaxPellAY * ((decimal)TermMultipliers[StatusTermThree] / 2))); decimal FinalMaxPctTerm1 = (MaxPellAY > 0) ? FinalMaxAmountTerm1 / MaxPellAY : 0; decimal FinalMaxPctTerm2 = (MaxPellAY > 0) ? FinalMaxAmountTerm2 / MaxPellAY : 0; decimal FinalMaxPctTerm3 = (MaxPellAY > 0) ? FinalMaxAmountTerm3 / MaxPellAY : 0; // Assign to view variables ViewBag.MaxPellAY = String.Format(DecimalAmountFormat, MaxPellAY); ViewBag.AdditionalPell = String.Format(DecimalAmountFormat, AdditionalPell); ViewBag.MaxPellLEU = String.Format(DecimalAmountFormat, MaxPellLEU); ViewBag.RemainingLEU = String.Format(DecimalPercentFormat, RemainingLEU); ViewBag.MaxExistingPell = String.Format(DecimalAmountFormat, MaxExistingPell); ViewBag.MaxExistingPct = String.Format(DecimalPercentFormat, MaxExistingPct * 100); ViewBag.FinalMaxAmount = String.Format(DecimalAmountFormat, FinalMaxAmountTotal); ViewBag.FinalMaxPct = String.Format(DecimalPercentFormat, FinalMaxPct * 100); ViewBag.FinalMaxAmountTerm1 = String.Format(DecimalAmountFormat, FinalMaxAmountTerm1); ViewBag.FinalMaxAmountTerm2 = String.Format(DecimalAmountFormat, FinalMaxAmountTerm2); ViewBag.FinalMaxAmountTerm3 = String.Format(DecimalAmountFormat, FinalMaxAmountTerm3); ViewBag.FinalMaxPctTerm1 = String.Format(DecimalPercentFormat, FinalMaxPctTerm1 * 100); ViewBag.FinalMaxPctTerm2 = String.Format(DecimalPercentFormat, FinalMaxPctTerm2 * 100); ViewBag.FinalMaxPctTerm3 = String.Format(DecimalPercentFormat, FinalMaxPctTerm3 * 100); }
private void DirectLoanCalc(ProcessingDetail processingDetail) { Record record = processingDetail.Rec; int AcademicYear = Convert.ToInt32(record.AcademicYear); decimal NumCredits = Convert.ToDecimal(record.NumCredits); decimal SubAgg = Convert.ToDecimal(record.SubAgg); decimal CombineAgg = Convert.ToDecimal(record.CombinedAgg); decimal SubUsed = Convert.ToDecimal(record.SubAmountUsed); decimal UnsubUsed = Convert.ToDecimal(record.UnsubAmountUsed); decimal StartingAYFunding1 = (record.DependencyStatus == "DependentNoParentInfo") ? 0 : SubAmounts[AcademicYear]; decimal StartingAYFunding2 = 2000; if (record.DependencyStatus == "Independent" || record.DependencyStatus == "DependentOverride") { StartingAYFunding2 = UnsubAmounts[AcademicYear]; } else if (AcademicYear == 6) { StartingAYFunding2 = 20500; } decimal ProratedAmount1 = (record.IsProratedLoan) ? Math.Round(NumCredits / 36 * StartingAYFunding1) : StartingAYFunding1; decimal ProratedAmount2 = (record.IsProratedLoan) ? Math.Round(NumCredits / 36 * StartingAYFunding2) : StartingAYFunding2; decimal SulaAdjustment1; decimal SulaAdjustment2; string SulaLoanPeriod = "8 Month"; switch (SulaCalc(record, StartingAYFunding1, StartingAYFunding2)) { case "ALL": SulaAdjustment1 = StartingAYFunding1; SulaAdjustment2 = StartingAYFunding2; break; case "HALF": SulaAdjustment1 = StartingAYFunding1 / 2; SulaAdjustment2 = StartingAYFunding2 / 2; SulaLoanPeriod = "4 Month"; break; default: SulaAdjustment1 = 0; SulaAdjustment2 = StartingAYFunding1 = StartingAYFunding2; break; } decimal ProrateSulaSwitch1 = (record.IsProratedLoan) ? Math.Min(ProratedAmount1, SulaAdjustment1) : SulaAdjustment1; decimal ProrateSulaSwitch2 = (record.IsProratedLoan) ? Math.Min(ProratedAmount2, SulaAdjustment2) : SulaAdjustment2; decimal RemainingAgg1 = ((AcademicYear == 6) ? 65500 : (record.DependencyStatus == "Independent" || record.DependencyStatus == "DependentOverride") ? 23000 : 23000) - SubAgg; decimal RemainingAgg2 = ((AcademicYear == 6) ? 138500 : (record.DependencyStatus == "Independent" || record.DependencyStatus == "DependentOverride") ? 57500 : 31000) - CombineAgg; decimal SubAggRealloc1 = (RemainingAgg2 < 0) ? 0 : Math.Min(ProrateSulaSwitch1, RemainingAgg1); decimal SubAggRealloc2 = (SubAggRealloc1 == RemainingAgg1) ? ProrateSulaSwitch2 + (ProrateSulaSwitch1 - RemainingAgg1) : ProrateSulaSwitch2; decimal UnsubAggRealloc1 = SubAggRealloc1; decimal UnsubAggRealloc2 = Math.Min(SubAggRealloc2, RemainingAgg2 - UnsubAggRealloc1); decimal ExistingLoanRemaining1 = UnsubAggRealloc1 - SubUsed; decimal ExistingLoanRemaining2 = UnsubAggRealloc2 - UnsubUsed; decimal SubExistingRealloc1 = Math.Min(ExistingLoanRemaining1, UnsubAggRealloc1); decimal SubExistingRealloc2 = Math.Min(ExistingLoanRemaining2, UnsubAggRealloc2); decimal UnsubExistingRealloc1 = SubExistingRealloc1; decimal UnsubExistingRealloc2; if (UnsubAggRealloc1 - SubExistingRealloc2 > 0 && ExistingLoanRemaining2 - SubExistingRealloc2 > 0) { UnsubExistingRealloc2 = Math.Min(ExistingLoanRemaining2, UnsubAggRealloc1 - SubExistingRealloc1 + SubExistingRealloc2); } else { UnsubExistingRealloc2 = SubExistingRealloc2; } decimal FinalResult1 = Math.Max(0, UnsubExistingRealloc1); decimal FinalResult2 = Math.Max(0, UnsubExistingRealloc2); decimal StartingSub = StartingAYFunding1; decimal StartingUnsub = StartingAYFunding2; // Now assign to the appropriate view variables ViewBag.StartingSub = String.Format(DecimalAmountFormat, StartingAYFunding1); ViewBag.StartingUnsub = String.Format(DecimalAmountFormat, StartingAYFunding2); ViewBag.AvailableAggSub = String.Format(DecimalAmountFormat, RemainingAgg1); ViewBag.AvailableAggCombine = String.Format(DecimalAmountFormat, RemainingAgg2); ViewBag.MaxProrateSub = String.Format(DecimalAmountFormat, ProratedAmount1); ViewBag.MaxProrateUnsub = String.Format(DecimalAmountFormat, ProratedAmount2); ViewBag.MaxRemainingSub = String.Format(DecimalAmountFormat, StartingSub - SubUsed); ViewBag.MaxRemainingUnsub = String.Format(DecimalAmountFormat, StartingUnsub - UnsubUsed); ViewBag.MaxSulaSub = String.Format(DecimalAmountFormat, SulaAdjustment1); ViewBag.MaxSulaUnsub = String.Format(DecimalAmountFormat, SulaAdjustment2); ViewBag.ExistingLoanPeriod = (record.ExistingAYEndsBeforeTermTwo == true) ? "4 Month" : "8 Month"; ViewBag.SulaLoanPeriod = SulaLoanPeriod; ViewBag.FinalMaxSub = String.Format(DecimalAmountFormat, FinalResult1); ViewBag.FinalMaxUnsub = String.Format(DecimalAmountFormat, FinalResult2); }
public async Task <ApiResult <bool> > SplitProcess(long id) { var process = await _context.ProcessPlans .Include(x => x.ProcessingDetails) .Where(x => x.Id == id).FirstOrDefaultAsync(); var listProcessingDetails = new List <ProcessingDetail>(); foreach (var item in process.ProcessingDetails) { var amount = item.Amount - item.EnterAmount; if (amount > 0) { var processingDetails = new ProcessingDetail() { Amount = amount, IdRecipe = item.IdRecipe, IdProcessPlan = item.IdProcessPlan, Unit = item.Unit }; listProcessingDetails.Add(processingDetails); } } var stt = 1; Location: string code = process.Code + "-" + stt.ToString(); var checkCode = await _context.ProcessPlans.AnyAsync(x => x.Code == code); if (checkCode) { stt++; goto Location; } var processPlan = new ProcessPlan() { Code = code, IdAuthority = process.IdAuthority, IdCreator = process.IdCreator, IdResponsible = process.IdResponsible, Censorship = false, CreatedDate = DateTime.Now, ExpectedDate = DateTime.Now, Name = process.Name + " (Tách)", Note = process.Note, Status = StatusProcessPlan.Processing, ProcessingDetails = listProcessingDetails }; _context.ProcessPlans.Add(processPlan); await _context.SaveChangesAsync(); process.Status = StatusProcessPlan.Processed; var note = process.Note + " (Đã từng tách kế hoạch)"; process.Note = note; _context.ProcessPlans.Update(process); await _context.SaveChangesAsync(); return(new ApiSuccessResult <bool>()); }