public void Update(UpdateCandidateContract contract) { _log.LogInformation($"Validating contract {contract.Name}"); ValidateContract(contract); _log.LogInformation($"Mapping contract {contract.Name}"); var candidate = _mapper.Map <Candidate>(contract); var currentProcesses = _processRepository.Query().Where(p => p.CandidateId == candidate.Id && p.Status != Model.Enum.ProcessStatus.Hired); foreach (var process in currentProcesses) { process.Status = Model.Enum.ProcessStatus.Recall; _processRepository.Update(process); } this.AddRecruiterToCandidate(candidate, contract.Recruiter.Id); this.AddOfficeToCandidate(candidate, contract.PreferredOfficeId); this.AddCommunityToCandidate(candidate, contract.Community.Id); this.AddCandidateProfileToCandidate(candidate, contract.Profile.Id); var updatedCandidate = _candidateRepository.Update(candidate); _log.LogInformation($"Complete for {contract.Name}"); _unitOfWork.Complete(); }
private void ValidateContract(UpdateCandidateContract contract) { try { _updateCandidateContractValidator.ValidateAndThrow(contract, $"{ValidatorConstants.RULESET_DEFAULT}"); } catch (ValidationException ex) { throw new CreateContractInvalidException(ex.ToListOfMessages()); } }