/// <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); }
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")); }