private Task CloseVacancyAsync(Vacancy vacancy, ClosureReason closureReason)
 {
     vacancy.Status        = VacancyStatus.Closed;
     vacancy.ClosedDate    = _timeProvider.Now;
     vacancy.ClosedByUser  = vacancy.TransferInfo?.TransferredByUser;
     vacancy.ClosureReason = closureReason;
     return(_vacancyRepository.UpdateAsync(vacancy));
 }
 public Task CloseVacancyAsync(Guid vacancyId, VacancyUser user, ClosureReason reason)
 {
     return(_messaging.SendCommandAsync(new CloseVacancyCommand(vacancyId, user, reason)));
 }
 public CloseVacancyCommand(Guid vacancyId, VacancyUser user, ClosureReason closureReason)
 {
     VacancyId     = vacancyId;
     User          = user;
     ClosureReason = closureReason;
 }
 private IList <VacancySummary> GetClosedVacancies(IEnumerable <VacancySummary> vacancies, DateTime?userLastDismissedDate, ClosureReason reason)
 {
     return(vacancies.Where(v =>
                            v.Status == VacancyStatus.Closed &&
                            v.ClosureReason == reason &&
                            v.ClosedDate > userLastDismissedDate)
            .OrderBy(v => v.Title)
            .ToList());
 }
Example #5
0
        public async Task GivenApprovedVacancyReviewCommand_AndVacancyHasBeenTransferredSinceReviewWasCreated_ThenDoNotRaiseVacancyApprovedEventAndCloseVacancy(TransferReason transferReason, ClosureReason expectedClosureReason)
        {
            var transferInfo = new TransferInfo
            {
                Reason = transferReason
            };

            var existingVacancy = _autoFixture.Build <Vacancy>()
                                  .With(x => x.TransferInfo, transferInfo)
                                  .Create();

            _mockVacancyRepository.Setup(x => x.GetVacancyAsync(existingVacancy.VacancyReference.Value)).ReturnsAsync(existingVacancy);

            _mockVacancyReviewRepository.Setup(x => x.GetAsync(_existingReviewId)).ReturnsAsync(new VacancyReview
            {
                Id               = _existingReviewId,
                CreatedDate      = _mockTimeProvider.Object.Now.AddHours(-5),
                Status           = ReviewStatus.UnderReview,
                VacancyReference = existingVacancy.VacancyReference.Value,
                VacancySnapshot  = new Vacancy()
            });

            var command = new ApproveVacancyReviewCommand(_existingReviewId, "comment", new List <ManualQaFieldIndicator>(), new List <Guid>());

            await _sut.Handle(command, CancellationToken.None);

            _mockVacancyReviewRepository.Verify(x => x.UpdateAsync(It.Is <VacancyReview>(r => r.Id == _existingReviewId)), Times.Once);
            _mockMessaging.Verify(x => x.PublishEvent(It.IsAny <VacancyReviewApprovedEvent>()), Times.Never);

            existingVacancy.Status.Should().Be(VacancyStatus.Closed);
            existingVacancy.ClosureReason.Should().Be(expectedClosureReason);
            _mockVacancyRepository.Verify(x => x.UpdateAsync(existingVacancy), Times.Once);
            _mockCommunicationQueueService.Verify(c => c.AddMessageAsync(It.Is <CommunicationRequest>(r => r.RequestType == CommunicationConstants.RequestType.ProviderBlockedEmployerNotificationForLiveVacancies)));
        }