public ActionResult Confirm(int id) { var dataCollection = DataCollectionRepository.Get(id); if (dataCollection != null) { if (VerifyUserRoleWithDataCollectionStatus(dataCollection)) { var vm = new ApprovalConfirmationViewModel { DataCollectionId = id }; PopulateModel(vm, dataCollection, HashCodeRepository.GetByDataCollectionId(dataCollection.Id)); return(View(vm)); } return(View("DataCollectionInvalidState")); } return(View("DataCollectionNotFound")); }
public ActionResult SubmitForReapproval(ApprovalConfirmationViewModel vm) { var collection = DataCollectionRepository.Get(vm.DataCollectionId); if (collection == null) { return(View("DataCollectionNotFound")); } if (!VerifyUserRoleWithDataCollectionStatus(collection)) { return(View("DataCollectionInvalidState")); } var hashCode = HashCodeRepository.GetByDataCollectionId(collection.Id); PopulateModel(vm, collection, hashCode); if (vm.IsChanged) { // TODO: You can use the URDMS.Integration solution to handle approvals in a robust manner or just alter the database directly as in the // commented code below. Bus.Send <SubmitForSecondaryReApproval>(m => { m.DataCollectionId = collection.Id; m.ApprovedBy = CurrentUser.CurtinId; m.ApprovedOn = DateTime.Now; }); //collection.CurrentState = new DataCollectionState(DataCollectionStatus.RecordAmended, DateTime.Now); //DataCollectionRepository.Save(collection); // clear out hashcode at this point. this.HashCodeRepository.Delete(hashCode); } return(RedirectToAction("Index")); }
private void PopulateModel(ApprovalConfirmationViewModel vm, DataCollection collection, DataCollectionHashCode hashCode) { vm.IsChanged = hashCode != null && hashCode.IsDifferentHashCode(collection); vm.State = collection.CurrentState.State; vm.Title = collection.Title; }
public ActionResult CancelConfirmation(ApprovalConfirmationViewModel vm) { return(RedirectToAction("Index")); }
public ActionResult Confirm(ApprovalConfirmationViewModel vm) { var collection = DataCollectionRepository.Get(vm.DataCollectionId); if (collection == null) { return(View("DataCollectionNotFound")); } if (!VerifyUserRoleWithDataCollectionStatus(collection)) { return(View("DataCollectionInvalidState")); } var hashCode = HashCodeRepository.GetByDataCollectionId(collection.Id); PopulateModel(vm, collection, hashCode); switch (vm.State) { case DataCollectionStatus.Submitted: if (!vm.IsQaApproved) { ModelState.AddModelError("IsQaApproved", "Please confirm approval"); return(View(vm)); } // TODO: You can use the URDMS.Integration solution to handle approvals in a robust manner or just alter the database directly as in the // commented code below. Bus.Send <SubmitForSecondaryApproval>(m => { m.DataCollectionId = collection.Id; m.ApprovedBy = CurrentUser.CurtinId; m.ApprovedOn = DateTime.Now; }); //collection.CurrentState = new DataCollectionState(DataCollectionStatus.QaApproved, DateTime.Now); //DataCollectionRepository.Save(collection); vm.ProposedState = DataCollectionStatus.QaApproved; return(View("Approved", vm)); case DataCollectionStatus.QaApproved: case DataCollectionStatus.RecordAmended: if (!vm.DoesNotViolateAgreements || !vm.DoesNotViolateConfidentialityAndEthics) { if (!vm.DoesNotViolateAgreements) { ModelState.AddModelError("DoesNotViolateAgreements", "Please confirm that agreements are not violated"); } if (!vm.DoesNotViolateConfidentialityAndEthics) { ModelState.AddModelError("DoesNotViolateConfidentialityAndEthics", "Please confirm that confidentiality and ethics requirements are met"); } return(View(vm)); } // TODO: You can use the URDMS.Integration solution to handle approvals in a robust manner or just alter the database directly as in the // commented code below. Bus.Send <SubmitForFinalApproval>(m => { m.DataCollectionId = collection.Id; m.ApprovedBy = CurrentUser.CurtinId; m.ApprovedOn = DateTime.Now; }); //collection.CurrentState = new DataCollectionState(DataCollectionStatus.SecondaryApproved, DateTime.Now); //DataCollectionRepository.Save(collection); vm.ProposedState = DataCollectionStatus.SecondaryApproved; // save hashcode to capture the snapshot of the data this.HashCodeRepository.SaveByDataCollection(collection); return(View("Approved", vm)); case DataCollectionStatus.SecondaryApproved: { if (!vm.IsPublicationApproved) { ModelState.AddModelError("IsPublicationApproved", "Please confirm publication approval"); return(View(vm)); } // TODO: You can use the URDMS.Integration solution to handle approvals in a robust manner or just alter the database directly as in the // commented code below. Bus.Send <PublishDataCollection>(m => { m.DataCollectionId = collection.Id; m.ApprovedBy = CurrentUser.CurtinId; m.ApprovedOn = DateTime.Now; }); //collection.CurrentState = new DataCollectionState(DataCollectionStatus.Publishing, DateTime.Now); //DataCollectionRepository.Save(collection); vm.ProposedState = DataCollectionStatus.Publishing; } return(View("Approved", vm)); default: throw new InvalidOperationException(); } }