public ActionResult DeletePost(DeleteVacancyViewModel vacancyViewModel)
        {
            var response = _vacancyManagementMediator.Delete(vacancyViewModel);

            SetUserMessage(response.Message);
            return(RedirectToRoute(RecruitmentRouteNames.RecruitmentHome, vacancyViewModel.RouteValues));
        }
        public ActionResult DeleteGet(DeleteVacancyViewModel vacancyViewModel)
        {
            var result = _vacancyManagementMediator.ConfirmDelete(vacancyViewModel);

            if (result.Code == VacancyManagementMediatorCodes.ConfirmDelete.NotFound)
            {
                return(HttpNotFound());
            }
            return(View(result.ViewModel));
        }
        public void ShouldReturnAErrorIfTheVacancyIsMissing()
        {
            // Arrange
            var viewModel = new DeleteVacancyViewModel();

            MockVacancyManagementProvider.Setup(x => x.FindSummary(It.IsAny <int>())).Returns(new ServiceResult <VacancySummary>(VacancyManagementServiceCodes.FindSummary.NotFound, null));
            var sut = GetMediator();

            // Act
            var response = sut.ConfirmDelete(viewModel);

            // Assert
            Assert.AreEqual(VacancyManagementMediatorCodes.ConfirmDelete.NotFound, response.Code);
            MockVacancyManagementProvider.Verify(x => x.FindSummary(It.IsAny <int>()));
        }
        public MediatorResponse <DeleteVacancyViewModel> ConfirmDelete(DeleteVacancyViewModel vacancyViewModel)
        {
            var serviceResult = _vacancyManagementProvider.FindSummary(vacancyViewModel.VacancyId);

            if (serviceResult.Code == VacancyManagementServiceCodes.FindSummary.Ok)
            {
                vacancyViewModel.VacancyTitle = serviceResult.Result.Title;
                return(GetMediatorResponse(VacancyManagementMediatorCodes.ConfirmDelete.Ok, vacancyViewModel));
            }
            if (serviceResult.Code == VacancyManagementServiceCodes.FindSummary.NotFound)
            {
                return(GetMediatorResponse(VacancyManagementMediatorCodes.ConfirmDelete.NotFound, vacancyViewModel));
            }

            return(GetMediatorResponse(serviceResult.Code, vacancyViewModel));
        }
        public void ShouldReturnAFailureIfDeletingAVacancyHasAnyTypeOfError()
        {
            // Arrange
            var viewModel = new DeleteVacancyViewModel();

            MockVacancyManagementProvider.Setup(x => x.Delete(It.IsAny <int>())).Returns(new ServiceResult(VacancyManagementServiceCodes.Delete.VacancyInIncorrectState));
            var sut = GetMediator();

            // Act
            var response = sut.Delete(viewModel);

            // Assert
            Assert.AreEqual(VacancyManagementMediatorCodes.DeleteVacancy.Failure, response.Code);
            Assert.AreEqual(UserMessageLevel.Error, response.Message.Level);
            MockVacancyManagementProvider.Verify(x => x.Delete(It.IsAny <int>()));
        }
        public void ShouldHaveAGoodResultIfDeletingAVacancyServiceWasOk()
        {
            // Arrange
            var viewModel = new DeleteVacancyViewModel();

            MockVacancyManagementProvider.Setup(x => x.Delete(It.IsAny <int>())).Returns(new ServiceResult(VacancyManagementServiceCodes.Delete.Ok));
            var sut = GetMediator();

            // Act
            var response = sut.Delete(viewModel);

            // Assert
            Assert.AreEqual(VacancyManagementMediatorCodes.DeleteVacancy.Ok, response.Code);
            Assert.AreNotEqual(UserMessageLevel.Error, response.Message.Level);
            MockVacancyManagementProvider.Verify(x => x.Delete(It.IsAny <int>()));
        }
        public void ShouldFindASummaryAndReturnOk()
        {
            // Arrange
            var viewModel = new DeleteVacancyViewModel();

            MockVacancyManagementProvider.Setup(x => x.FindSummary(It.IsAny <int>())).Returns(new ServiceResult <VacancySummary>(VacancyManagementServiceCodes.FindSummary.Ok, new VacancySummary()
            {
                Title = "title"
            }));
            var sut = GetMediator();

            // Act
            var response = sut.ConfirmDelete(viewModel);

            // Assert
            Assert.AreEqual(VacancyManagementMediatorCodes.ConfirmDelete.Ok, response.Code);
            Assert.That(response.ViewModel.VacancyTitle, Is.Not.Null.And.Not.Empty);
            MockVacancyManagementProvider.Verify(x => x.FindSummary(It.IsAny <int>()));
        }
        public MediatorResponse <DeleteVacancyViewModel> Delete(DeleteVacancyViewModel vacancyViewModel)
        {
            MediatorResponseMessage message;

            var result       = _vacancyManagementProvider.Delete(vacancyViewModel.VacancyId);
            var vacancyTitle = string.IsNullOrEmpty(vacancyViewModel.VacancyTitle) ? "(No Title)" : vacancyViewModel.VacancyTitle;

            if (result.Code == VacancyManagementServiceCodes.Delete.Ok)
            {
                message = new MediatorResponseMessage {
                    Text = $"You have deleted {vacancyTitle} vacancy"
                };
                return(GetMediatorResponse(VacancyManagementMediatorCodes.DeleteVacancy.Ok, vacancyViewModel, null, null, message));
            }

            message = new MediatorResponseMessage {
                Text = $"There was a problem deleting {vacancyTitle} vacancy", Level = UserMessageLevel.Error
            };
            return(GetMediatorResponse(VacancyManagementMediatorCodes.DeleteVacancy.Failure, vacancyViewModel, null, null, message));
        }