public static SalaryRange InputSalaryRange() { var salaryRange = new SalaryRange(); Console.WriteLine("Salary range:"); Console.WriteLine("From: "); salaryRange.From = GetNumeric(NumericTypes.INT); while (true) { Console.WriteLine("To: "); salaryRange.To = GetNumeric(NumericTypes.INT); if (salaryRange.To >= salaryRange.From) { break; } LoggerPublisher.OnLogError("Max salary must be greater than min!"); } return(salaryRange); }
private static void LoginSide(Database.Database db) { var loginLoop = true; while (loginLoop) { Console.Title = "Login"; Console.WriteLine("Username: "******"Username can not be empty!"); Console.WriteLine("Password: "******"Password can not be empty!"); Console.Clear(); var credentials = new Credentials() { Username = username, Password = password }; try { var loggedUser = UpWork.UserAccess.UserAccess.Login(credentials, db.Users); if (loggedUser is Worker worker) { WorkerSide.Start(worker, db); } else if (loggedUser is Entities.Employer employer) { EmployerSide.Start(employer, db); } break; } catch (Exception e) when(e is DatabaseException) { LoggerPublisher.OnLogError($"There is no user associated this username -> {username}"); } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } if (ConsoleScreen.DisplayMessageBox("Error", "Do yo want try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No) { loginLoop = false; } Console.Clear(); } }
public static IList <T2> Handle <T1, T2>(Func <T1, IList <T2>, IList <T2> > func, T1 data, IList <T2> data2) { try { return(func.Invoke(data, data2)); } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); return(null); } }
public static bool Handle <T>(Action <T> action, T data) { try { action.Invoke(data); return(true); } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } return(false); }
public static dynamic GetNumeric(NumericTypes type) { switch (type) { case NumericTypes.INT: { while (true) { try { Console.Write(">> "); var data = Convert.ToInt32(Console.ReadLine()); return(data); } catch (Exception) { LoggerPublisher.OnLogError("Input must be numeric value!"); } } } case NumericTypes.DOUBLE: { while (true) { try { Console.Write(">> "); var data = Convert.ToDouble(Console.ReadLine()); return(data); } catch (Exception) { LoggerPublisher.OnLogError("Input must be numeric value!"); } } } default: { throw new InvalidOperationException("Invalid type!"); } } }
public static string GetString(string errorMessage) { while (true) { Console.Write(">> "); var str = Console.ReadLine(); if (!String.IsNullOrWhiteSpace(str)) { return(str); } LoggerPublisher.OnLogError(errorMessage); } }
public static Guid InputGuid() { Console.WriteLine("Enter guid: "); while (true) { var str = GetString("Guid can not be empty!"); if (Guid.TryParse(str, out Guid guid)) { return(guid); } LoggerPublisher.OnLogError("Invalid guid format!"); } }
public static int InputSalary(string message) { Console.WriteLine(message); while (true) { var salary = (int)UserHelper.GetNumeric(NumericTypes.INT); if (salary < 0) { LoggerPublisher.OnLogError("Salary must be greater than or equal to zero"); continue; } return(salary); } }
public static DateTime InputDateTime(string message) { Console.WriteLine(message); while (true) { var str = UserHelper.GetString("Datetime can not be empty!"); var result = DateTime.TryParse(str, out DateTime dateTime); if (result) { return(dateTime); } LoggerPublisher.OnLogError("Invalid date time format!"); } }
public static void ReadCategories(string filePath, List <string> list) { try { using (var fs = new FileStream(filePath, FileMode.Open)) { using (var sr = new StreamReader(fs, Encoding.ASCII)) { while (!sr.EndOfStream) { list.Add(sr.ReadLine()); } } } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } }
static FileHelper() { var directory = @"Data\Categories\"; if (Directory.Exists(directory)) { Categories = new List <string>(); ReadCategories(directory + "Categories.txt", Categories); Educations = new List <string>(); ReadCategories(directory + "Educations.txt", Educations); Experiences = new List <string>(); ReadCategories(directory + "Experiences.txt", Experiences); Regions = new List <string>(); ReadCategories(directory + "Regions.txt", Regions); Salaries = new List <string>(); ReadCategories(directory + "Salaries.txt", Salaries); } else { LoggerPublisher.OnLogError($"This directory does not exist -> {directory}"); } }
public static int Input(int length) { while (true) { Console.Write(">> "); var status = int.TryParse(Console.ReadLine(), out int choice); if (status) { if (choice > 0 && choice <= length) { return(choice); } LoggerPublisher.OnLogError($"Input must be between [ 1 - {length} ]!"); } else { LoggerPublisher.OnLogError("Please enter numeric value!"); } } }
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(Worker worker, Database.Database db) { var logger = new Logger.ConsoleLogger(); var seeAdsLoop = true; var mainVacancies = db.GetVacancies(); IList <Vacancy> vacancies = mainVacancies; while (seeAdsLoop) { Console.Clear(); ExceptionHandle.Handle(VacancyHelper.SeeAds, vacancies); ConsoleScreen.PrintMenu(ConsoleScreen.FilterMenu, ConsoleColor.Blue); var filterMenuChoice = (FilterMenuEnum)ConsoleScreen.Input(ConsoleScreen.FilterMenu.Count); switch (filterMenuChoice) { case FilterMenuEnum.Select: { var loop2 = true; while (loop2) { Console.Clear(); if (!ExceptionHandle.Handle(VacancyHelper.SeeAds, vacancies)) { break; } Console.WriteLine("Vacancy id: "); var vacId = UserHelper.InputGuid(); try { var vacancy = VacancyHelper.GetVacancy(vacId, vacancies); while (true) { var requestFromWorker = vacancy.CheckWorkerRequest(worker.Guid); Console.Clear(); Console.WriteLine(vacancy++); // increase vacancy view count and print Database.Database.Changes = true; Console.WriteLine(); Console.WriteLine($"1. {(requestFromWorker ? "Cancel" : "Request")}");; Console.WriteLine("2. Back"); var choice = ConsoleScreen.Input(2); if (choice == 1) { if (requestFromWorker) { vacancy.RemoveRequest(worker.Guid); } else { Cv cv = null; while (true) { Console.Clear(); if (!ExceptionHandle.Handle(worker.ShowAllCv, true)) { LoggerPublisher.OnLogInfo("Please add public Cv!"); ConsoleScreen.Clear(); break; } var cvId = UserHelper.InputGuid(); try { cv = CvHelper.GetCv(cvId, worker.Cvs); break; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } } if (cv != null) { vacancy.SendRequest(worker.Guid, cv.Guid); } } } else if (choice == 2) { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Ads?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { loop2 = false; } break; } } if (loop2) { continue; } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } if (!loop2 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case FilterMenuEnum.ByCategory: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByCategory, UserHelper.InputCategory(), vacancies); break; } case FilterMenuEnum.ByEducation: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByEducation, UserHelper.InputEducation(), vacancies); break; } case FilterMenuEnum.ByExperience: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByExperience, UserHelper.InputExperience(), vacancies); break; } case FilterMenuEnum.ByRegion: { Console.Clear(); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterByRegion, UserHelper.InputRegion(), vacancies); break; } case FilterMenuEnum.BySalary: { Console.Clear(); var input = UserHelper.InputSalary(); var salary = UserHelper.ParseSalary(input); vacancies = ExceptionHandle.Handle(VacancyFilter.FilterBySalary, salary, vacancies); break; } case FilterMenuEnum.Reset: { vacancies = mainVacancies; break; } case FilterMenuEnum.Back: { seeAdsLoop = false; break; } } } }
public static void Start(Entities.Employer employer, Database.Database db) { var logger = new Logger.ConsoleLogger(); var seeCvsLoop = true; var mainCvs = db.GetCvs(); IList <Cv> cvs = mainCvs; while (seeCvsLoop) { Console.Clear(); ExceptionHandle.Handle(CvHelper.SeeCvs, cvs); ConsoleScreen.PrintMenu(ConsoleScreen.FilterMenu, ConsoleColor.Blue); var filterMenuChoice = (FilterMenuEnum)ConsoleScreen.Input(ConsoleScreen.FilterMenu.Count); switch (filterMenuChoice) { case FilterMenuEnum.Select: { var loop3 = true; while (loop3) { Console.Clear(); if (!ExceptionHandle.Handle(CvHelper.SeeCvs, cvs)) { break; } Console.WriteLine("Cv id: "); var cvId = UserHelper.InputGuid(); try { var cv = CvHelper.GetCv(cvId, cvs); Console.Clear(); while (true) { var requestFromEmployer = cv.CheckEmployerRequest(employer.Guid); Console.Clear(); Console.WriteLine(cv++); // increase view count and print. Database.Database.Changes = true; Console.WriteLine(); Console.WriteLine($"1. {(requestFromEmployer ? "Cancel" : "Request")}"); Console.WriteLine("2. Back"); var choice = ConsoleScreen.Input(2); if (choice == 1) { if (requestFromEmployer) { cv.RemoveRequest(employer.Guid); } else { Vacancy vacancy = null; while (true) { Console.Clear(); if (!ExceptionHandle.Handle(employer.ShowAllAds, true)) { LoggerPublisher.OnLogInfo("Please add public Vacancy!"); ConsoleScreen.Clear(); break; } var vacancyId = UserHelper.InputGuid(); try { vacancy = VacancyHelper.GetVacancy(vacancyId, employer.Vacancies); break; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } } if (vacancy != null) { cv.SendRequest(employer.Guid, vacancy.Guid); } } } else if (choice == 2) { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other Cvs?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { loop3 = false; } break; } } if (loop3) { continue; } } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } } break; } case FilterMenuEnum.ByCategory: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByCategory, UserHelper.InputCategory(), cvs); break; } case FilterMenuEnum.ByEducation: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByEducation, UserHelper.InputEducation(), cvs); break; } case FilterMenuEnum.ByExperience: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByExperience, UserHelper.InputExperience(), cvs); break; } case FilterMenuEnum.ByRegion: { Console.Clear(); cvs = ExceptionHandle.Handle(CvFilter.FilterByRegion, UserHelper.InputRegion(), cvs); break; } case FilterMenuEnum.BySalary: { Console.Clear(); var input = UserHelper.InputSalary(); var salary = UserHelper.ParseSalary(input); cvs = ExceptionHandle.Handle(CvFilter.FilterBySalary, salary, cvs); break; } case FilterMenuEnum.Reset: { cvs = mainCvs; break; } case FilterMenuEnum.Back: { seeCvsLoop = 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; } } } }
private static void RegisterSide(Database.Database db) { while (true) { Console.Title = "Register"; GetUserData(db, out string name, out string surname, out string mail, out string phone, out string username, out string password, out int age, out string city); User newUser = null; Console.Clear(); Console.WriteLine("Who are you?"); ConsoleScreen.PrintMenu(ConsoleScreen.UserType, ConsoleColor.Blue); var userType = (UserTypeEnum)(ConsoleScreen.Input(ConsoleScreen.UserType.Count)); Console.Clear(); if (userType == UserTypeEnum.Worker) { newUser = new Worker() { Name = name, Surname = surname, Mail = mail, Phone = phone, Username = username, Password = password, City = city, Age = age, } } ; else { newUser = new Entities.Employer() { Name = name, Surname = surname, Mail = mail, Phone = phone, Username = username, Password = password, City = city, Age = age, } }; try { UpWork.UserAccess.UserAccess.SendConfirmationCode(newUser.Mail); while (true) { Console.Clear(); Console.WriteLine("Confirmation code: "); if (UpWork.UserAccess.UserAccess.ConfirmationCode == UserHelper.GetNumeric(NumericTypes.INT).ToString()) { break; } LoggerPublisher.OnLogError("Confirmation code is wrong!"); } UpWork.UserAccess.UserAccess.Register(newUser, db.Users); FileHelper.WriteToJson(db); LoggerPublisher.OnLogInfo("Successfully created account. You can login now."); ConsoleScreen.Clear(); break; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); ConsoleScreen.Clear(); } } }
private static void GetUserData(Database.Database db, out string name, out string surname, out string mail, out string phone, out string username, out string password, out int age, out string city) { Console.WriteLine("Name: "); name = UserHelper.GetString("Name can not be empty!"); Console.WriteLine("Surname: "); surname = UserHelper.GetString("Surname can not be empty"); Console.WriteLine("Mail: "); mail = string.Empty; while (true) { mail = UserHelper.GetString("Mail can not be empty"); if (ExceptionHandle.Handle(UserHelper.ValidateMail, mail)) { if (db.CheckMail(mail)) { break; } LoggerPublisher.OnLogError($"User exists associated this mail -> {mail}!"); } } Console.WriteLine("Phone: "); phone = string.Empty; while (true) { phone = UserHelper.GetString("Phone can not be empty!"); if (ExceptionHandle.Handle(UserHelper.ValidatePhone, phone)) { break; } } Console.WriteLine("Username: "******"Username can not be empty"); if (db.CheckUsername(username)) { break; } LoggerPublisher.OnLogError($"User exists associated this username -> {username} "); } Console.WriteLine("Password: "******"Password can not be empty!")); Console.WriteLine("City: "); city = UserHelper.GetString("City can not be empty"); Console.WriteLine("Age: "); age = UserHelper.GetNumeric(NumericTypes.INT); }
private static void CvUpdateSideStart(Cv cv) { while (true) { Console.Clear(); Console.WriteLine(cv); Console.WriteLine(); ConsoleScreen.PrintMenu(ConsoleScreen.CvUpdateMenu, ConsoleColor.Blue); var updateChoice = (CvUpdateChoices)ConsoleScreen.Input(ConsoleScreen.CvUpdateMenu.Count); if (updateChoice == CvUpdateChoices.Back) { break; } switch (updateChoice) { case CvUpdateChoices.ChangeVisibility: { cv.IsPublic = !cv.IsPublic; LoggerPublisher.OnLogInfo($"Visibility changed to {(cv.IsPublic ? "Public":"Private")}"); break; } case CvUpdateChoices.Name: { Console.Clear(); cv.Name = CvHelper.InputData("Name"); LoggerPublisher.OnLogInfo("Name updated!"); break; } case CvUpdateChoices.Surname: { Console.Clear(); cv.Surname = CvHelper.InputData("Surname"); LoggerPublisher.OnLogInfo("Surname updated!"); break; } case CvUpdateChoices.Category: { cv.Category = UserHelper.InputCategory(); LoggerPublisher.OnLogInfo("Category updated!"); break; } case CvUpdateChoices.Region: { cv.Region = UserHelper.InputRegion(); LoggerPublisher.OnLogInfo("Region updated!"); break; } case CvUpdateChoices.Salary: { Console.Clear(); Console.WriteLine("Salary: "); cv.Salary = UserHelper.GetNumeric(NumericTypes.INT); LoggerPublisher.OnLogInfo("Salary updated!"); break; } case CvUpdateChoices.Education: { cv.Education = UserHelper.InputEducation(); LoggerPublisher.OnLogInfo("Education updated"); break; } case CvUpdateChoices.Experience: { cv.Experience = UserHelper.InputExperience(); LoggerPublisher.OnLogInfo("Experience updated!"); break; } case CvUpdateChoices.WorkPlaces: { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add workplace or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add workplaces: "); while (true) { var companyName = CvHelper.InputData("Company"); var timeline = new Timeline() { Start = CvHelper.InputDateTime("Start time(ex mm/dd/yyyy): "), }; while (true) { var endTime = CvHelper.InputDateTime("End time(ex mm/dd/yyyy): "); if (timeline.Start < endTime) { timeline.End = endTime; break; } LoggerPublisher.OnLogError("End time must be greater than start time!"); } cv.WorkPlaces.Add(new WorkPlace() { Company = companyName, Timeline = timeline }); LoggerPublisher.OnLogInfo("Workplace added"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more WorkPlaces?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } Database.Database.Changes = true; } } else { if (cv.WorkPlaces.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete workplace: "); foreach (var workPlace in cv.WorkPlaces) { Console.WriteLine(workPlace); } var workplaceId = UserHelper.InputGuid(); if (ExceptionHandle.Handle(cv.DeleteWorkplace, workplaceId)) { LoggerPublisher.OnLogInfo("Workplace deleted"); if (cv.WorkPlaces.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more WorkPlaces?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } } break; } case CvUpdateChoices.Skills: { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add skill or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add skill: "); while (true) { cv.Skills.Add(new Skill() { Name = CvHelper.InputData("Name"), Level = CvHelper.InputSkillLevel(), }); LoggerPublisher.OnLogInfo("Skill added"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more Skills?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { if (cv.Skills.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete skill: "); foreach (var skill in cv.Skills) { Console.WriteLine(skill); } var skillId = UserHelper.InputGuid(); if (ExceptionHandle.Handle(cv.DeleteSkill, skillId)) { LoggerPublisher.OnLogInfo("Skill deleted"); if (cv.Skills.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more Skill?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } } break; } case CvUpdateChoices.Languages: { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add language or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add languages: "); while (true) { cv.Languages.Add(new Language() { Name = CvHelper.InputData("Name"), Level = CvHelper.InputSkillLevel(), }); LoggerPublisher.OnLogInfo("Language added"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more Languages?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { if (cv.Languages.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete language: "); foreach (var language in cv.Languages) { Console.WriteLine(language); } var skillId = UserHelper.InputGuid(); if (ExceptionHandle.Handle(cv.DeleteLanguage, skillId)) { LoggerPublisher.OnLogInfo("Language deleted"); if (cv.Languages.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more Language?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } } break; } case CvUpdateChoices.HonorsDiploma: { cv.HonorsDiploma = CvHelper.InputHonorsDiplomaStatus(); LoggerPublisher.OnLogInfo("Honors diploma updated!"); break; } case CvUpdateChoices.Socials: { if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add Social or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add socials: "); while (true) { cv.Socials.Add(new Social() { Name = CvHelper.InputData("Name"), Link = CvHelper.InputLink() }); LoggerPublisher.OnLogInfo("Social added"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more Socials?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { if (cv.Socials.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete social: "); foreach (var social in cv.Socials) { Console.WriteLine(social); } var socialId = UserHelper.InputGuid(); if (ExceptionHandle.Handle(cv.DeleteSocial, socialId)) { LoggerPublisher.OnLogInfo("Social deleted"); if (cv.Socials.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more Social?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } } break; } } Database.Database.Changes = true; ConsoleScreen.Clear(); } }
private static Cv CreateNewCv() { var newCv = new Cv(); newCv.Name = CvHelper.InputData("Name"); newCv.Surname = CvHelper.InputData("Surname: "); newCv.Category = UserHelper.InputCategory(); newCv.Region = UserHelper.InputRegion(); Console.Clear(); Console.WriteLine("Salary: "); newCv.Salary = UserHelper.GetNumeric(NumericTypes.INT); newCv.Education = UserHelper.InputEducation(); newCv.Experience = UserHelper.InputExperience(); newCv.HonorsDiploma = CvHelper.InputHonorsDiplomaStatus(); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add skill?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add skill: "); while (true) { newCv.Skills.Add(new Skill() { Name = CvHelper.InputData("Skill"), Level = CvHelper.InputSkillLevel() }); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more skill?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add Workplace?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add workplaces: "); while (true) { var companyName = CvHelper.InputData("Company"); var timeline = new Timeline() { Start = CvHelper.InputDateTime("Start time(ex mm/dd/yyyy): "), }; while (true) { var endTime = CvHelper.InputDateTime("End time(ex mm/dd/yyyy): "); if (timeline.Start < endTime) { timeline.End = endTime; break; } LoggerPublisher.OnLogError("End time must be greater than start time!"); } newCv.WorkPlaces.Add(new WorkPlace() { Company = companyName, Timeline = timeline }); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more WorkPlaces?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add language?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add Language"); while (true) { newCv.Languages.Add(new Language() { Name = CvHelper.InputData("Name"), Level = CvHelper.InputSkillLevel(), }); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more language?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add social?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add social: "); while (true) { newCv.Socials.Add(new Social() { Name = CvHelper.InputData("Name"), Link = CvHelper.InputLink() }); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more social?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } return(newCv); }
private static void VacancyUpdateSideStart(Vacancy vacancy) { while (true) { Console.Clear(); Console.WriteLine(vacancy); Console.WriteLine(); ConsoleScreen.PrintMenu(ConsoleScreen.VacancyUpdateMenu, ConsoleColor.DarkGreen); var updateChoice = (VacancyUpdateChoices)ConsoleScreen.Input(ConsoleScreen.VacancyUpdateMenu.Count); if (updateChoice == VacancyUpdateChoices.Back) { break; } switch (updateChoice) { case VacancyUpdateChoices.ChangeVisibility: { vacancy.IsPublic = !vacancy.IsPublic; LoggerPublisher.OnLogInfo($"Visibility changed to {(vacancy.IsPublic ? "Public" : "Private")}"); break; } case VacancyUpdateChoices.Mail: { while (true) { var mail = VacancyHelper.InputData("Mail"); if (ExceptionHandle.Handle(UserHelper.ValidateMail, mail)) { vacancy.Contact.Mail = mail; break; } } LoggerPublisher.OnLogInfo("Mail updated!"); break; } case VacancyUpdateChoices.Phones: { if (vacancy.Contact.Phones.Count != 3 && ConsoleScreen.DisplayMessageBox("Info", "Do you want to add phone number or delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { Console.WriteLine("Add phone number: "); var maxPhoneNumbers = 3 - vacancy.Contact.Phones.Count; while (maxPhoneNumbers > 0) { var phone = VacancyHelper.InputData("Phone"); if (ExceptionHandle.Handle(UserHelper.ValidatePhone, phone)) { vacancy.Contact.Phones.Add(phone); maxPhoneNumbers--; if (maxPhoneNumbers == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more phone number?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } if (maxPhoneNumbers != 3 && ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } else { if (vacancy.Contact.Phones.Count > 0) { while (true) { Console.Clear(); Console.WriteLine("Delete phone number: "); for (var i = 0; i < vacancy.Contact.Phones.Count; i++) { Console.WriteLine($"{i + 1}. {vacancy.Contact.Phones[i]}"); } var phoneIndex = ConsoleScreen.Input(vacancy.Contact.Phones.Count) - 1; vacancy.Contact.Phones.RemoveAt(phoneIndex); LoggerPublisher.OnLogInfo("Phone number deleted"); if (vacancy.Contact.Phones.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete more phone number?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } } } break; } case VacancyUpdateChoices.Category: { vacancy.Ad.Category = UserHelper.InputCategory(); LoggerPublisher.OnLogInfo("Category updated"); break; } case VacancyUpdateChoices.Position: { vacancy.Ad.Position = VacancyHelper.InputData("Position"); LoggerPublisher.OnLogInfo("Position updated"); break; } case VacancyUpdateChoices.Region: { vacancy.Ad.Region = UserHelper.InputRegion(); LoggerPublisher.OnLogInfo("Region updated"); break; } case VacancyUpdateChoices.Salary: { vacancy.Ad.SalaryRange = UserHelper.InputSalaryRange(); LoggerPublisher.OnLogInfo("Salary updated"); break; } case VacancyUpdateChoices.Education: { vacancy.Ad.Education = UserHelper.InputEducation(); LoggerPublisher.OnLogInfo("Education updated"); break; } case VacancyUpdateChoices.Experience: { vacancy.Ad.Experience = UserHelper.InputExperience(); LoggerPublisher.OnLogInfo("Experience updated"); break; } case VacancyUpdateChoices.Requirements: { vacancy.Ad.Requirements = VacancyHelper.InputData("Requirements"); LoggerPublisher.OnLogInfo("Requirements updated"); break; } case VacancyUpdateChoices.JobDescription: { vacancy.Ad.JobDescription = VacancyHelper.InputData("Job Description"); LoggerPublisher.OnLogInfo("Job Description updated"); break; } case VacancyUpdateChoices.Company: { vacancy.Ad.Company = VacancyHelper.InputData("Company"); LoggerPublisher.OnLogInfo("Company updated"); break; } case VacancyUpdateChoices.Contact: { vacancy.Ad.Contact = VacancyHelper.InputData("Contact"); LoggerPublisher.OnLogInfo("Contact updated"); break; } } Database.Database.Changes = true; ConsoleScreen.Clear(); } }
public static void Start(Worker worker) { var cvSectionLoop = true; while (cvSectionLoop) { Console.Clear(); ConsoleScreen.PrintMenu(ConsoleScreen.CvSectionMenu, ConsoleColor.DarkGreen); var cvSectionChoice = (CvSectionEnum)ConsoleScreen.Input(ConsoleScreen.CvSectionMenu.Count); Console.Clear(); switch (cvSectionChoice) { case CvSectionEnum.Show: { ExceptionHandle.Handle(worker.ShowAllCv, false); ConsoleScreen.Clear(); break; } case CvSectionEnum.Add: { var addCvLoop = true; while (addCvLoop) { worker.Cvs.Add(CreateNewCv()); Database.Database.Changes = true; LoggerPublisher.OnLogInfo("Cv added!"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more Cv?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { addCvLoop = false; } Console.Clear(); } break; } case CvSectionEnum.Update: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(worker.ShowAllCv, false)) { ConsoleScreen.Clear(); break; } var id = UserHelper.InputGuid(); try { var cv = worker.GetCv(id); CvUpdateSideStart(cv); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to update another Cv?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case CvSectionEnum.Delete: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(worker.ShowAllCv, false)) { ConsoleScreen.Clear(); break; } var id = UserHelper.InputGuid(); if (ExceptionHandle.Handle(worker.DeleteCv, id)) { LoggerPublisher.OnLogInfo("Cv deleted!"); Database.Database.Changes = true; if (worker.Cvs.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete another Cv?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case CvSectionEnum.Back: { cvSectionLoop = false; break; } } } }
public static void Start(Entities.Employer employer) { var adsSectionLoop = true; while (adsSectionLoop) { Console.Clear(); ConsoleScreen.PrintMenu(ConsoleScreen.AdsSectionMenu, ConsoleColor.DarkGreen); var adsSectionChoice = (AdsSectionEnum)ConsoleScreen.Input(ConsoleScreen.AdsSectionMenu.Count); Console.Clear(); switch (adsSectionChoice) { case AdsSectionEnum.Show: { ExceptionHandle.Handle(employer.ShowAllAds, false); ConsoleScreen.Clear(); break; } case AdsSectionEnum.Add: { var addCvLoop = true; while (addCvLoop) { employer.Vacancies.Add(CreateNewVacancy()); LoggerPublisher.OnLogInfo("Vacancy added!"); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to add more Vacancy?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { addCvLoop = false; } Console.Clear(); } Database.Database.Changes = true; break; } case AdsSectionEnum.Update: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(employer.ShowAllAds, false)) { ConsoleScreen.Clear(); break; } var id = UserHelper.InputGuid(); try { var vacancy = employer.GetVacancy(id); VacancyUpdateSideStart(vacancy); if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to update another Vacancy?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } catch (Exception e) { LoggerPublisher.OnLogError(e.Message); } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case AdsSectionEnum.Delete: { while (true) { Console.Clear(); if (!ExceptionHandle.Handle(employer.ShowAllAds, false)) { ConsoleScreen.Clear(); break; } var vacancyId = UserHelper.InputGuid(); if (ExceptionHandle.Handle(employer.DeleteVacancy, vacancyId)) { LoggerPublisher.OnLogInfo("Cv deleted!"); Database.Database.Changes = true; if (employer.Vacancies.Count == 0 || ConsoleScreen.DisplayMessageBox("Info", "Do you want to delete another Vacancy?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } continue; } if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { break; } } break; } case AdsSectionEnum.Back: { adsSectionLoop = false; break; } } } }