public PlanningStats GetPlanningStatsWithPlanID(int planID) { PlanningStats ps = (from p in context.PlanningStats where p.Plan.ID == planID select p).First(); return(ps); }
public bool SaveStats(PlanningStats stats) { bool success; try { context.PlanningStats.AddOrUpdate(stats); context.SaveChanges(); success = true; } catch (Exception) { success = false; } return(success); }
public bool Compute() { bool statsExist = dal.DoStatsExistForPlanWithPlanID(Plan.ID); bool success; stats = statsExist ? dal.GetPlanningStatsWithPlanID(Plan.ID) : new PlanningStats(); List <Event> eventList = Plan.Events.ToList(); //The start date for timing is the planning ct date try { DateTime planningCTDate = eventList.Where(el => el.EventType.StageID == 1).Select(ev => ev.EventDate).First(); DateTime imagingCompletedDate = eventList.Where(el => el.EventType.StageID == 2).Select(ev => ev.EventDate).FirstOrDefault(); DateTime imagingImportedDate = eventList.Where(el => el.EventType.StageID == 4).Select(ev => ev.EventDate).First(); DateTime contouringCompletedDate = eventList.Where(el => el.EventType.StageID == 5).Select(ev => ev.EventDate).First(); List <DateTime> planningDates = eventList.Where(el => el.EventType.StageID == 6).Select(ev => ev.EventDate).ToList(); //Plan is ready for review List <DateTime> reviewDates = eventList.Where(el => el.EventType.StageID == 7).Select(ev => ev.EventDate).ToList(); //Plan reviewed but needs revising DateTime planApprovalDate = eventList.Where(el => el.EventType.StageID == 8).Select(ev => ev.EventDate).First(); DateTime planFinalizedDate = eventList.Where(el => el.EventType.StageID == 8).Select(ev => ev.EventDate).First(); DateTime planSecondCheckedDate = eventList.Where(el => el.EventType.StageID == 9).Select(ev => ev.EventDate).First(); DateTime planScheduledDate = eventList.Where(el => el.EventType.StageID == 10).Select(ev => ev.EventDate).First(); DateTime txStartedDate = eventList.Where(el => el.EventType.StageID == 11).Select(ev => ev.EventDate).First(); DateTime insuranceApprovalDate = eventList.Where(el => el.EventType.StageID == -1).Select(ev => ev.EventDate).First(); //Perform check of dates if (Plan.PlanType.IsLOT) { DateTime lotSIMDate = eventList.Where(el => el.EventType.StageID == 3).Select(ev => ev.EventDate).First(); stats.ImportingDays = imagingImportedDate.Subtract(lotSIMDate).Days; stats.SchedulingDays = CalcSchedulingDaysWithLOT(planningCTDate, imagingCompletedDate, lotSIMDate, imagingImportedDate, planScheduledDate, txStartedDate); } else { stats.ImportingDays = imagingImportedDate.Subtract(imagingCompletedDate).Days; stats.SchedulingDays = CalcSchedulingDaysNoLOT(planningCTDate, imagingCompletedDate, imagingImportedDate, planScheduledDate, txStartedDate); } stats.ImagingDays = imagingCompletedDate.Subtract(planningCTDate).Days; stats.ContouringDays = contouringCompletedDate.Subtract(imagingImportedDate).Days; stats.PlanningDays = CalcPlanningDays(contouringCompletedDate, planningDates, reviewDates); stats.PlanReviewDays = CalcReviewDays(planningDates, reviewDates, planApprovalDate); stats.PlanFinalizationDays = planFinalizedDate.Subtract(reviewDates.Last()).Days; stats.PlanSecondCheckDays = planSecondCheckedDate.Subtract(planFinalizedDate).Days; stats.SchedulingDays = planScheduledDate.Subtract(planSecondCheckedDate).Days; //bool dateError = CheckDates(stats); stats.InsuranceApprovalDays = insuranceApprovalDate > planFinalizedDate?insuranceApprovalDate.Subtract(planFinalizedDate).Days : 0; success = true; } catch (Exception) { success = false; } if (success) { success = dal.SaveStats(stats); } return(success); }