static void Main(string[] args) { var companies = InitializeAllCompanyData(); var topApplicantRule = new TopApplicantPercentageRule(); Console.WriteLine("What is your first name?"); var firstName = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("And last name?"); var lastName = Console.ReadLine(); var applicant = new ApplicantModel(firstName, lastName); applicant.Skillset = IdentifyApplicantSkillset(); Console.WriteLine(); ApplyToJobPostings(companies, applicant, topApplicantRule); }
public static void ApplyToJobPostings(List <CompanyModel> companies, ApplicantModel applicant, TopApplicantPercentageRule rule) { Thread.Sleep(TimeSpan.FromSeconds(2)); Console.WriteLine("Job Postings by Company:"); Console.WriteLine(); var jobDictionary = new Dictionary <long, string>(); foreach (var company in companies) { Thread.Sleep(TimeSpan.FromSeconds(2)); Console.WriteLine("——————————————————————————————————————————————————————————————"); Console.WriteLine($"{company.CompanyName}"); Console.WriteLine($"{company.CompanyDesc}"); Console.WriteLine("——————————————————————————————————————————————————————————————"); Console.WriteLine(); foreach (var jobPost in company.JobPostings) { jobDictionary.Add(jobPost.JobId, company.CompanyName); var topApplicantPercentage = rule.RetrieveTopApplicantPercentage(applicant.Skillset, jobPost.Applicants, jobPost.RequiredSkillset); Thread.Sleep(TimeSpan.FromSeconds(1)); Console.WriteLine(topApplicantPercentage != 0 ? $"You’re in the top {topApplicantPercentage}% of {jobPost.Applicants.Count} applicants based on your skillset!" : $"{jobPost.Applicants.Count} applicants"); Console.WriteLine($"JOBID_{jobPost.JobId} —— {jobPost.JobTitle} ({company.CompanyName})"); Console.WriteLine($"JOBID_{jobPost.JobId} —— {jobPost.JobDesc}"); Console.WriteLine($"Actively recruiting"); Console.WriteLine(); } } Console.WriteLine("NOTE: Please type in the JOBID (ex: 123) for the job you would like to apply for."); Console.WriteLine(); var appliedJobId = long.TryParse(Console.ReadLine(), out long jobId) ? jobId : 0; var companyData = companies.FirstOrDefault(x => jobDictionary.TryGetValue(appliedJobId, out var companyName) && x.CompanyName == companyName); var companyDataRetrievalResponse = companyData != null ? true : false; if (companyDataRetrievalResponse) { companies.Find(x => x.CompanyName == jobDictionary[appliedJobId]).PostJobApplicant(appliedJobId, applicant); Console.WriteLine(); Console.WriteLine($"Your application has been received Mr/Ms/Mrs {applicant.FirstName} {applicant.LastName}."); Console.WriteLine(); Console.WriteLine("Type any key to continue or q to quit."); if (Console.ReadKey().Key == ConsoleKey.Q) { Console.WriteLine(); return; } else { Console.WriteLine(); Console.WriteLine(); ApplyToJobPostings(companies, applicant, rule); Console.WriteLine(); } } else { Console.WriteLine(); Console.WriteLine($"An error occured. Your application was not received. Please try again."); Console.WriteLine(); Console.WriteLine("Type any key to continue or q to quit."); if (Console.ReadKey().Key == ConsoleKey.Q) { Console.WriteLine(); return; } else { Console.WriteLine(); Console.WriteLine(); ApplyToJobPostings(companies, applicant, rule); Console.WriteLine(); } } }