public static void Start(Worker worker, Database.Database db) { var workerSideMainLoop = true; while (workerSideMainLoop) { Console.Title = $"Worker: {worker.Name}"; if (Database.Database.Changes) { FileHelper.WriteToJson(db); Database.Database.Changes = false; } Console.Clear(); ConsoleScreen.PrintMenu(ConsoleScreen.WorkerSideMainMenu, ConsoleColor.DarkGreen); var mainChoice = (WorkerSideMainMenu)ConsoleScreen.Input(ConsoleScreen.WorkerSideMainMenu.Count); Console.Clear(); switch (mainChoice) { case WorkerSideMainMenu.SEEADS: { AdsSection.Start(worker, db); break; } case WorkerSideMainMenu.YOURCV: { CvSection.Start(worker); break; } case WorkerSideMainMenu.CvNotifications: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(worker.ShowAllCvWithRequestCount)) { break; } var cvId = UserHelper.InputGuid(); Cv cv = null; try { cv = worker.GetCv(cvId); if (cv.RequestFromEmployers.Count == 0) { LoggerPublisher.OnLogError("There is no request!"); ConsoleScreen.Clear(); } var vacancies = db.GetAllVacanciesFromRequests(cv.RequestFromEmployers); while (true) { Console.Clear(); if (!ExceptionHandle.Handle(WorkerHelper.ShowVacancies, vacancies)) { break; } var vacancyId = UserHelper.InputGuid(); var vacancy = vacancies.SingleOrDefault(v => v.Guid == vacancyId); if (vacancy == null) { LoggerPublisher.OnLogError($"There is no vacancy associated this id -> {vacancyId}"); ConsoleScreen.Clear(); continue; } var employer = DatabaseHelper.GetUser( cv.RequestFromEmployers.SingleOrDefault(r => r.Value == vacancy.Guid).Key, db.Users) as Entities.Employer; Console.Clear(); Console.WriteLine(vacancy); ConsoleScreen.PrintMenu(ConsoleScreen.CvAdsChoices, ConsoleColor.DarkGreen); var choice = (CvAdsChoices)ConsoleScreen.Input(ConsoleScreen.CvAdsChoices.Count); if (choice == CvAdsChoices.Back) { break; } Database.Database.Changes = true; switch (choice) { case CvAdsChoices.Accept: { cv.RemoveRequest(employer.Guid); NotificationSender.NotificationPublisher.OnSend(employer, new Notification() { Title = "From worker", Message = $"Congratilations. Your request accepted.\n Cv info:\n{cv}" }); LoggerPublisher.OnLogInfo("Accepted."); break; } case CvAdsChoices.Decline: { cv.RemoveRequest(employer.Guid); NotificationSender.NotificationPublisher.OnSend(employer, new Notification() { Title = "From worker", Message = $"We are sorry! Your request declined.\n Cv info:\n{cv}" }); LoggerPublisher.OnLogInfo("Declined."); break; } } Database.Database.Changes = true; if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Vacancies?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } if (cv == null && ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case WorkerSideMainMenu.AllNotifications: { NotificationSide.AllNotificationsStart(worker); break; } case WorkerSideMainMenu.UnreadNotifications: { NotificationSide.OnlyUnReadNotificationsStart(worker); break; } case WorkerSideMainMenu.Logout: { workerSideMainLoop = false; break; } } } }
public static void Start(Entities.Employer employer, Database.Database db) { var employerSideMainLoop = true; while (employerSideMainLoop) { Console.Title = $"Employer: {employer.Name}"; if (Database.Database.Changes) { FileHelper.WriteToJson(db); Database.Database.Changes = false; } Console.Clear(); ConsoleScreen.PrintMenu(ConsoleScreen.EmployerSideMainMenu, ConsoleColor.DarkGreen); var employerSideChoice = (EmployerSideMainMenu)ConsoleScreen.Input(ConsoleScreen.EmployerSideMainMenu.Count); Console.Clear(); switch (employerSideChoice) { case EmployerSideMainMenu.YourAds: { AdsSection.Start(employer); break; } case EmployerSideMainMenu.SeeCvs: { CvSection.Start(employer, db); break; } case EmployerSideMainMenu.AdsNotifications: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(employer.ShowAllAdsWithRequestCount)) { break; } var vacancyId = UserHelper.InputGuid(); Vacancy vacancy = null; try { vacancy = employer.GetVacancy(vacancyId); if (vacancy.RequestsFromWorkers.Count != 0) { var cvs = db.GetAllCvFromRequests(vacancy.RequestsFromWorkers); while (true) { Console.Clear(); if (!ExceptionHandle.Handle(EmployerHelper.ShowCvs, cvs)) { break; } var cvId = UserHelper.InputGuid(); var cv = cvs.SingleOrDefault(c => c.Guid == cvId); if (cv == null) { LoggerPublisher.OnLogError($"There is no cv associated this id -> {cvId}"); ConsoleScreen.Clear(); continue; } var worker = DatabaseHelper.GetUser(vacancy.RequestsFromWorkers .SingleOrDefault(r => r.Value == cv.Guid).Key, db.Users) as Worker; Console.Clear(); Console.WriteLine(cv); ConsoleScreen.PrintMenu(ConsoleScreen.CvAdsChoices, ConsoleColor.DarkGreen); var choice = (CvAdsChoices)ConsoleScreen.Input(ConsoleScreen.CvAdsChoices.Count); if (choice == CvAdsChoices.Back) { break; } try { switch (choice) { case CvAdsChoices.Accept: { vacancy.RemoveRequest(worker.Guid); NotificationPublisher.OnSend(worker, new Notification() { Title = "Your apply result", Message = $"Congratilations. Your cv accepted.\n Vacancy info:\n{vacancy}" }); LoggerPublisher.OnLogInfo("Accepted."); break; } case CvAdsChoices.Decline: { vacancy.RemoveRequest(worker.Guid); NotificationPublisher.OnSend(worker, new Notification() { Title = "Your apply result", Message = $"We are sorry! Your cv declined.\n Vacancy info:\n{vacancy}" }); LoggerPublisher.OnLogInfo("Declined."); break; } } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } Database.Database.Changes = true; if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Cvs?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { LoggerPublisher.OnLogError("There is no request!"); ConsoleScreen.Clear(); } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } if (vacancy == null && ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case EmployerSideMainMenu.AllNotifications: { NotificationSide.AllNotificationsStart(employer); break; } case EmployerSideMainMenu.UnreadNotifications: { NotificationSide.OnlyUnReadNotificationsStart(employer); break; } case EmployerSideMainMenu.Logout: { employerSideMainLoop = false; break; } } } }