Beispiel #1
0
        public PlanningStats GetPlanningStatsWithPlanID(int planID)
        {
            PlanningStats ps = (from p in context.PlanningStats
                                where p.Plan.ID == planID
                                select p).First();

            return(ps);
        }
Beispiel #2
0
        public bool SaveStats(PlanningStats stats)
        {
            bool success;

            try
            {
                context.PlanningStats.AddOrUpdate(stats);
                context.SaveChanges();
                success = true;
            }
            catch (Exception)
            {
                success = false;
            }

            return(success);
        }
Beispiel #3
0
        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);
        }