public ActionResult ConfirmArchive(ArchiveVacancyViewModel viewModel) { var response = _vacancyStatusMediator.ArchiveVacancy(viewModel); switch (response.Code) { case VacancyStatusMediatorCodes.ArchiveVacancy.Ok: return(RedirectToRoute(RecruitmentRouteNames.PreviewVacancy, new { vacancyReferenceNumber = viewModel.VacancyReferenceNumber })); case VacancyStatusMediatorCodes.ArchiveVacancy.OutstandingActions: return(RedirectToRoute(RecruitmentRouteNames.ArchiveVacancy, new { vacancyReferenceNumber = viewModel.VacancyReferenceNumber })); default: throw new InvalidOperationException(); } }
public ArchiveVacancyViewModel ArchiveVacancy(ArchiveVacancyViewModel viewModel) { var vacancy = _vacancyReadRepository.GetByReferenceNumber(viewModel.VacancyReferenceNumber); if (vacancy.VacancyType == VacancyType.Traineeship) { throw new InvalidOperationException("Traineeships cannot be archived"); } var hasOustandingActions = HasOutstandingActions(vacancy); if (!hasOustandingActions) { vacancy = _vacancyPostingService.ArchiveVacancy(vacancy); } return(new ArchiveVacancyViewModel(hasOustandingActions, vacancy.VacancyId, vacancy.VacancyReferenceNumber)); }
public MediatorResponse <ArchiveVacancyViewModel> ArchiveVacancy(ArchiveVacancyViewModel viewModel) { var model = _vacancyStatusChangeProvider.ArchiveVacancy(viewModel); if (model.HasOutstandingActions) { return(new MediatorResponse <ArchiveVacancyViewModel>() { ViewModel = model, Code = VacancyStatusMediatorCodes.ArchiveVacancy.OutstandingActions }); } return(new MediatorResponse <ArchiveVacancyViewModel> { ViewModel = model, Code = VacancyStatusMediatorCodes.ArchiveVacancy.Ok }); }