public ActionResult TransferVacancies(TransferVacanciesViewModel viewModel) { if (ModelState.IsValid) { var response = _adminMediator.GetVacancyDetails(viewModel); if (response.ViewModel.NotFoundVacancyNumbers.Any()) { SetUserMessage("No vacancies found for the given vacancy reference numbers: " + $"{string.Join(", ", response.ViewModel.NotFoundVacancyNumbers)}", UserMessageLevel.Error); } ModelState.Clear(); switch (response.Code) { case AdminMediatorCodes.GetVacancyDetails.NoRecordsFound: SetUserMessage(response.Message.Text, response.Message.Level); return(View()); case AdminMediatorCodes.GetVacancyDetails.Ok: return(View("ConfirmVacancies", response.ViewModel)); case AdminMediatorCodes.GetVacancyDetails.FailedAuthorisation: SetUserMessage(response.Message.Text, response.Message.Level); return(View()); default: throw new InvalidMediatorCodeException(response.Code); } } return(View()); }
public MediatorResponse <TransferVacanciesResultsViewModel> GetVacancyDetails(TransferVacanciesViewModel viewModel) { try { var vacanciesToBeTransferred = new List <TransferVacancyViewModel>(); var transferVacanciesResultsViewModel = new TransferVacanciesResultsViewModel { TransferVacanciesViewModel = viewModel, NotFoundVacancyNumbers = new List <string>() }; if (viewModel != null && viewModel.VacancyReferenceNumbers.Any()) { foreach (var vacancy in viewModel.VacancyReferenceNumbers.Split(',')) { string vacancyReference; if (VacancyHelper.TryGetVacancyReference(vacancy, out vacancyReference)) { var vacancyDetails = _vacancyPostingService.GetVacancyByReferenceNumber(Convert.ToInt32(vacancyReference)); if (vacancyDetails != null) { var vacancyView = new TransferVacancyViewModel { ContractOwnerId = vacancyDetails.ContractOwnerId, VacancyManagerId = vacancyDetails.VacancyManagerId, VacancyReferenceNumber = vacancyDetails.VacancyReferenceNumber, DeliveryOrganisationId = vacancyDetails.DeliveryOrganisationId, VacancyOwnerRelationShipId = vacancyDetails.VacancyOwnerRelationshipId, ProviderName = _providerService.GetProvider(vacancyDetails.ContractOwnerId).TradingName, VacancyTitle = vacancyDetails.Title, EmployerName = vacancyDetails.EmployerName }; if (vacancyDetails.VacancyManagerId.HasValue) { vacancyView.ProviderSiteName = _providerService.GetProviderSite(vacancyDetails.VacancyManagerId.Value).TradingName; } vacanciesToBeTransferred.Add(vacancyView); } else { transferVacanciesResultsViewModel.NotFoundVacancyNumbers.Add(vacancy); } } } } transferVacanciesResultsViewModel.VacanciesToBeTransferredVm = vacanciesToBeTransferred; return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.Ok, transferVacanciesResultsViewModel)); } catch (CustomException exception) when(exception.Code == ErrorCodes.ProviderVacancyAuthorisation.Failed) { return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.FailedAuthorisation, new TransferVacanciesResultsViewModel(), TransferVacanciesMessages.UnAuthorisedAccess, UserMessageLevel.Warning)); } }