public void InitialisePerSessionData()
        {
            var stopwatch = Stopwatch.StartNew();



            dbContext.Configuration.AutoDetectChangesEnabled = false;
            dbContext.Configuration.LazyLoadingEnabled       = false;
            dbContext.Configuration.ProxyCreationEnabled     = false;
            PerSessionDataStorage storage = new PerSessionDataStorage();


            storage.SaveData(dbContext.Clinics.ToList());
            storage.SaveData(dbContext.Users.ToList());
            storage.SaveData(dbContext.Patients.ToList());
            storage.SaveData(dbContext.Visits.ToList());
            storage.SaveData(dbContext.Forms.ToList());
            storage.SaveData(dbContext.AdverseEventFormDatas.ToList());
            storage.SaveData(dbContext.DemographicFormDatas.ToList());
            storage.SaveData(dbContext.VitalsFormDatas.ToList());
            storage.SaveData(dbContext.ElectrocardiogramFormDatas.ToList());
            storage.SaveData(dbContext.InventoryFormDatas.ToList());
            storage.SaveData(dbContext.HappinessFormDatas.ToList());
            storage.SaveData(dbContext.Questions.ToList());
            storage.SaveData(dbContext.Attachments.ToList());
            storage.SaveData(dbContext.ChangeNotes.ToList());
            storage.SaveData(dbContext.RepeatableInventoryDatas.ToList());
            storage.SaveData(dbContext.Queries.ToList());
            stopwatch.Stop();
            DatesCorrector corrector   = new DatesCorrector();
            int            datesChange = corrector.GetDaysChange(dbContext);

            corrector.SetDatesToToday(datesChange, storage);
        }
        public void InitialisePerSessionData()
        {
            var stopwatch = Stopwatch.StartNew();

            dbContext.Configuration.AutoDetectChangesEnabled = false;
            dbContext.Configuration.LazyLoadingEnabled = false;
            dbContext.Configuration.ProxyCreationEnabled = false;
            PerSessionDataStorage storage = new PerSessionDataStorage();

            storage.SaveData(dbContext.Clinics.ToList());
            storage.SaveData(dbContext.Users.ToList());
            storage.SaveData(dbContext.Patients.ToList());
            storage.SaveData(dbContext.Visits.ToList());
            storage.SaveData(dbContext.Forms.ToList());
            storage.SaveData(dbContext.AdverseEventFormDatas.ToList());
            storage.SaveData(dbContext.DemographicFormDatas.ToList());
            storage.SaveData(dbContext.VitalsFormDatas.ToList());
            storage.SaveData(dbContext.ElectrocardiogramFormDatas.ToList());
            storage.SaveData(dbContext.InventoryFormDatas.ToList());
            storage.SaveData(dbContext.HappinessFormDatas.ToList());
            storage.SaveData(dbContext.Questions.ToList());
            storage.SaveData(dbContext.Attachments.ToList());
            storage.SaveData(dbContext.ChangeNotes.ToList());
            storage.SaveData(dbContext.RepeatableInventoryDatas.ToList());
            storage.SaveData(dbContext.Queries.ToList());
            stopwatch.Stop();
            DatesCorrector corrector = new DatesCorrector();
            int datesChange = corrector.GetDaysChange(dbContext);
            corrector.SetDatesToToday(datesChange, storage);
        }
        public void SetDatesToToday(int daysChange, PerSessionDataStorage storage)
        {
            Stopwatch stopwatch = Stopwatch.StartNew();

            foreach (var patient in storage.GetData<Patient>()) {
                patient.EnrollDate = AddDays(daysChange, patient.EnrollDate);
                patient.RandomisationDate = AddDays(daysChange, patient.RandomisationDate);
            }

            foreach (var visit in storage.GetData<Visit>()) {
                visit.VisitDate = AddDays(daysChange, visit.VisitDate);
                visit.ExpectedVisitDate = AddDays(daysChange, visit.ExpectedVisitDate);
            }

            foreach (var question in storage.GetData<RepeatableInventoryData>().Select(rid => rid.DateUsed)) {
                question.Value = AddDays(daysChange, question.Value);
            }

            foreach (var formData in storage.GetData<InventoryFormData>()) {
                formData.ReceiptDate.Value = AddDays(daysChange, formData.ReceiptDate.Value);
                formData.ShipDate.Value = AddDays(daysChange, formData.ShipDate.Value);
            }

            foreach (var query in storage.GetData<Query>()) {
                query.QueryTime = AddDays(daysChange, query.QueryTime);
                query.AnswerTime = AddDays(daysChange, query.AnswerTime);
            }

            foreach (var changeNote in storage.GetData<ChangeNote>()) {
                changeNote.ChangeDate = AddDays(daysChange, changeNote.ChangeDate);
            }
            stopwatch.Stop();
        }
        public void SetDatesToToday(int daysChange, PerSessionDataStorage storage)
        {
            Stopwatch stopwatch = Stopwatch.StartNew();

            foreach (var patient in storage.GetData <Patient>())
            {
                patient.EnrollDate        = AddDays(daysChange, patient.EnrollDate);
                patient.RandomisationDate = AddDays(daysChange, patient.RandomisationDate);
            }

            foreach (var visit in storage.GetData <Visit>())
            {
                visit.VisitDate         = AddDays(daysChange, visit.VisitDate);
                visit.ExpectedVisitDate = AddDays(daysChange, visit.ExpectedVisitDate);
            }

            foreach (var question in storage.GetData <RepeatableInventoryData>().Select(rid => rid.DateUsed))
            {
                question.Value = AddDays(daysChange, question.Value);
            }

            foreach (var formData in storage.GetData <InventoryFormData>())
            {
                formData.ReceiptDate.Value = AddDays(daysChange, formData.ReceiptDate.Value);
                formData.ShipDate.Value    = AddDays(daysChange, formData.ShipDate.Value);
            }

            foreach (var query in storage.GetData <Query>())
            {
                query.QueryTime  = AddDays(daysChange, query.QueryTime);
                query.AnswerTime = AddDays(daysChange, query.AnswerTime);
            }

            foreach (var changeNote in storage.GetData <ChangeNote>())
            {
                changeNote.ChangeDate = AddDays(daysChange, changeNote.ChangeDate);
            }
            stopwatch.Stop();
        }