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));
        }
Beispiel #3
0
        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
            });
        }