예제 #1
0
        /// <summary>
        ///   BURO = Batch Update Review Outcomes
        /// </summary>
        /// <returns></returns>
        public BuroViewModel Execute(BuroViewModel vm
                                     , IUploadRepository uploadRepository
                                     , IQuestionnaireRepository questionnaireRepository
                                     , IAuditService auditService
                                     , IReviewRepository reviewRepository)
        {
            var uploadList = uploadRepository.GetAll();

            foreach (var upload in uploadList)
            {
                if (upload.AcceptedFlag)
                {
                    continue;                                       //  once upload is accepted its over
                }
                var uploadId   = upload.UploadId;
                var reviewList = reviewRepository.GetAllByUploadId(uploadId);
                foreach (var review in reviewList)
                {
                    vm.ReviewsRead++;
                    IsDirty = false;
                    //  get the questionaire data
                    var q = questionnaireRepository.GetReviewQuestionnaireByReviewId(review.ReviewId);

                    if (q == null)
                    {
                        continue;
                    }

                    var oldVals = review;
                    CheckForQuestionaireAssessmentOutcome(q, review);
                    CheckForQuestionaireRecoveryReason(q, review);
                    CheckForQuestionaireAssessmentAction(q, review);
                    CheckForQuestionaireFinalOutcome(q, review);

                    if (!IsDirty)
                    {
                        continue;
                    }

                    var errors = new List <IntegrityError>();
                    ApplyReviewModelValidations(review, errors);
                    if (errors.Count > 0)
                    {
                        AuditErrors(auditService, errors);
                        vm.ValidationErrors += errors.Count;
                    }
                    else
                    {
                        review.UpdatedBy = BuroUser;
                        review.UpdatedOn = DateTime.Now;
                        reviewRepository.Update(review);
                        auditService.AuditActivity(UpdateMessage(review, oldVals), BuroUser);
                        vm.ReviewsUpdated++;
                    }
                }
            }
            return(vm);
        }
예제 #2
0
        private static void BatchUpdateReviewOutcomes(IPatService patService
                                                      , string how
                                                      , PatControl control)
        {
            var    lastBatchRun = control.LastBatchRun;
            string auditMsg;

            string why;

            if (ReadyToGenerateAgain(lastBatchRun, how, out why))
            {
                var stopwatch = new Stopwatch();
                stopwatch.Start();

                var vm   = new BuroViewModel();
                var buro = new BuroProcess();
                vm = buro.Execute(vm
                                  , patService.GetUploadRepository()
                                  , patService.GetQuestionaireRepository()
                                  , patService.GetAuditService()
                                  , patService.GetReviewRepository()
                                  );

                control.LastBatchRun = DateTime.Now;
                control.UpdatedBy    = BatchUser;

                var timeElapsed = AppHelper.StopTheWatch(stopwatch);

                auditMsg = string.Format("BURO complete: {0} Reviews checked; {1} updated {3} errors in {2}",
                                         vm.ReviewsRead, vm.ReviewsUpdated, timeElapsed, vm.ValidationErrors);
            }
            else
            {
                auditMsg = string.Format("BURO skipped for now ({1}): last Run  {0}", lastBatchRun, why);
            }

            patService.SaveActivity(CreateAuditRecord(auditMsg, "BURO"));
        }