public async Task CreateCompanyAdvertisement(PostCompanyJobAdvertisementServiceRequest postCompanyJobAdvertisementServiceRequest) { var companyEntity = await _companyRepository.Get(postCompanyJobAdvertisementServiceRequest.CompanyId); if (companyEntity == null) { throw new ArgumentNullException("Company not found"); } if (companyEntity.AdvertisementLimit == 0) { throw new ValidationException("Company AdvertisementLimit is reached"); } companyEntity.JobEntities.Add(new JobEntity() { Benefits = postCompanyJobAdvertisementServiceRequest.Benefits, Salary = postCompanyJobAdvertisementServiceRequest.Salary, WorkType = postCompanyJobAdvertisementServiceRequest.WorkType, ExpireDate = DateTime.Now.AddDays(15), Description = postCompanyJobAdvertisementServiceRequest.Description, Position = postCompanyJobAdvertisementServiceRequest.Position, Quality = CalculationService.CalculateJobQualityScore(postCompanyJobAdvertisementServiceRequest), Company = companyEntity }); companyEntity.AdvertisementLimit--; await _companyRepository.Update(companyEntity); }
internal static int CalculateJobQualityScore(PostCompanyJobAdvertisementServiceRequest request) { var score = 0; if (!string.IsNullOrEmpty(request.Position)) { score++; } if (request.Salary > 0) { score++; } if (!string.IsNullOrEmpty(request.Benefits)) { score++; } if (Filter(request.Description, BadKeyword.ToArray()) == 0) { score += 2; } return(score); }