Пример #1
0
        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));
            }
        }