コード例 #1
0
        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);
        }
コード例 #2
0
        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();
                }
            }
        }