Example #1
0
        static void Main(string[] args)
        {
            Terminal.Open();
            Terminal.Set(string.Format("window.title='{0}'", "SharpSnake"));
            Terminal.Refresh();

            var consoleScreen = new ConsoleScreen(36, 28);
            var context       = new StateContext(consoleScreen, new Settings());
            var stateStack    = new StateStack(context);

            stateStack.RegisterState <MenuState>(StateId.Menu);
            stateStack.RegisterState <OptionsState>(StateId.Options);
            stateStack.RegisterState <PlayState>(StateId.Play);
            stateStack.RegisterState <GameOverState>(StateId.GameOver);
            stateStack.RegisterState <PauseState>(StateId.Pause);

            // Initial state
            stateStack.PushState(StateId.Menu);

            while (!stateStack.Empty)
            {
                stateStack.HandleInput();
                stateStack.Update();

                consoleScreen.Clear();
                stateStack.Draw();
                consoleScreen.Display();

                System.Threading.Thread.Sleep(16);
            }

            Terminal.Close();
        }
Example #2
0
 public static void Main(string[] args)
 {
     if (args.Length > 0 && args[0] == "test")
     {
         TestClass.Test();
         return;
     }
     new Game().Run();
     ConsoleScreen.Clear();
 }
Example #3
0
 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);
     }
 }
Example #4
0
        /// <summary>
        /// Handles the drawing part of the scene
        /// </summary>
        /// <param name="game">Game manager</param>
        public void Draw(Game game)
        {
            // Game is a generic class, so make sure to convert it to ConsoleGame
            ConsoleGame consoleGame = (ConsoleGame)game;
            // ConsoleGame has a screen to draw whereas Game doesn't
            ConsoleScreen consoleScreen = consoleGame.Screen;

            // Clears the whole screen
            consoleScreen.Clear();
            // Draw the gameover text
            consoleScreen.DrawText(3, 7, "    Your pet left you!\nTake better care next time!");
            // When we're done drawing everything we needed, updates the screen
            consoleScreen.Show();
        }
Example #5
0
        public static void ReadFromJson(ref Database.Database db)
        {
            //Database.Database db = null;

            List <Worker>   workers    = null;
            List <Employer> employers  = null;
            var             serializer = new JsonSerializer();

            try
            {
                using (var sr = new StreamReader(@"Data\Workers.json", Encoding.UTF8))
                {
                    using (var jr = new JsonTextReader(sr))
                    {
                        workers = serializer.Deserialize <List <Worker> >(jr);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                ConsoleScreen.Clear();
            }

            workers?.ForEach(db.Users.Add);

            try
            {
                using (var sr = new StreamReader(@"Data\Employers.json", Encoding.UTF8))
                {
                    using (var jr = new JsonTextReader(sr))
                    {
                        employers = serializer.Deserialize <List <Employer> >(jr);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                ConsoleScreen.Clear();
            }

            employers?.ForEach(db.Users.Add);
        }
Example #6
0
        public static void Main(string[] args)
        {
            ConsoleScreen.Initialize(MAP_WIDTH, MAP_HEIGHT, ConsoleColor.Black, ConsoleColor.White);
            ConsoleScreen.Clear();

            MapGenerator mapGenerator = new MapGenerator(_random, MAP_WIDTH, MAP_HEIGHT);

            _map = mapGenerator.GenerateMap();
            RunGame();

            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.White;
            Console.Clear();

            // Check if we won.
            if (_map.Enemies.Count == 0)
            {
                Console.WriteLine("You won!!!");
            }
        }
Example #7
0
        private static void Start(User user, bool notificationStatus)
        {
            while (true)
            {
                if (!ExceptionHandle.Handle(user.ShowShortNotfInfo, notificationStatus))
                {
                    ConsoleScreen.Clear();
                    break;
                }

                var notificationId = UserHelper.InputGuid();


                var notification = user.Notifications.SingleOrDefault(n => n.Guid == notificationId);

                if (notification == null)
                {
                    if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to try again?",
                                                        MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
                    {
                        break;
                    }
                    continue;
                }

                Console.Clear();
                Console.WriteLine(notification++);
                Database.Database.Changes = true;

                Console.ReadLine();

                if (ConsoleScreen.DisplayMessageBox("Info", "Do you want to see other notifications?",
                                                    MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
                {
                    break;
                }
            }
        }
Example #8
0
        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;
                }
                }
            }
        }
Example #9
0
        void Draw()
        {
            ConsoleScreen.Clear();
            var pixelList = new List <IPixel>();

            // Mario
            pixelList.Add(new CharSprite(ASCII.Mario, xc + 150, yc + 200, 0, ConsoleColor.Green)
            {
                ShowLabel = show_label
            });
            pixelList.Last().Draw(painter);

            // STARS
            var asteriks = new Sprite(null, angle, ConsoleColor.Yellow)
            {
                ShowLabel = show_label
            };

            for (var i = 0; i < asteriks_count; i++)
            {
                asteriks.Add(new CharPixel('*', xc + random_numbers[2 * i], yc + random_numbers[2 * i + 1]));
            }
            if (asteriks_count != 0)
            {
                asteriks.Draw(painter);
                pixelList.Add(asteriks);
            }

            // center of the universe
            pixelList.Add(new CharPixel('@', xc, yc, ConsoleColor.Yellow));
            pixelList.Last().Draw(pixel_painter);

            // andy kras
            pixelList.Add(new CharSprite(ASCII.Andy, xc + 152, yc + 23, 0, ConsoleColor.DarkRed)
            {
                ShowLabel = show_label
            });
            pixelList.Last().Draw(painter);
            pixelList.Add(new CharSprite(ASCII.Kras, xc + 202, yc + 3, 0, ConsoleColor.DarkRed)
            {
                ShowLabel = show_label
            });
            pixelList.Last().Draw(painter);

            // C# is CooL
            pixelList.Add(new CharSprite(ASCII.Sharp, xc, yc - 33, 0, ConsoleColor.DarkBlue)
            {
                ShowLabel = show_label
            });
            pixelList.Last().Draw(painter);

            // Skull
            var ang = Math.PI / 512;

            for (var i = 0; i < 10; i++)
            {
                pixelList.Add(new CharSprite(ASCII.Skull, xc + 200 * Math.Cos((skull_index + 20 * random_numbers[2 * i]) * ang), yc + 200 * Math.Sin((skull_index + 20 * random_numbers[2 * i + 1]) * 2 * ang), 0, ConsoleColor.DarkGray)
                {
                    ShowLabel = show_label
                });
                pixelList.Last().Draw(painter);
            }

            if (show_intel)
            {
                // INTEL LOGO
                var intel = new CharSprite(ASCII.IntelLogo, xc - 35, yc + 15, angle, ConsoleColor.DarkBlue)
                {
                    ShowLabel = false
                };
                intel.Draw(painter);
                pixelList.Add(intel);
            }
            else
            {
                // CIRCLE
                if (show_circle)
                {
                    var alpha = Math.PI * 2.0 / count;
                    for (var i = 0; i < count; i++)
                    {
                        var x = xc + R * Math.Cos(i * alpha);
                        var y = yc + R * Math.Sin(i * alpha);
                        pixelList.Add(new CharPixel('█', x, y, (ConsoleColor)rnd.Next(1, 15)));
                        pixelList.Last().Draw(pixel_painter);
                    }

                    var tet = new CharSprite(new [] {
                        " █ ",
                        "███",
                        "   "
                    }, xc - 3, yc + 3, angle)
                    {
                        ShowLabel = show_label
                    };
                    tet.Draw(painter);
                    pixelList.Add(tet);
                }

                if (show_dollar)
                {
                    var dollars = new CharSprite(ASCII.Dollar, xc - 135, yc + 15, angle, ConsoleColor.DarkBlue)
                    {
                        ShowLabel = show_label
                    };
                    dollars.Draw(painter);
                    pixelList.Add(dollars);
                }

                // ship
                var ship = new Sprite(new List <IPixel> {
                    new CharPixel('█', offsetX + 4, offsetY - 0, ConsoleColor.Red),
                    new CharPixel('█', offsetX + 3, offsetY - 1, ConsoleColor.Red),
                    new CharPixel('█', offsetX + 2, offsetY - 2, ConsoleColor.Red),
                    new CharPixel('█', offsetX + 1, offsetY - 3, ConsoleColor.Red),
                    new CharPixel('█', offsetX + 0, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 1, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 2, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 3, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 4, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 5, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 6, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 7, offsetY - 4, ConsoleColor.Green),
                    new CharPixel('█', offsetX + 5, offsetY - 1, ConsoleColor.Blue),
                    new CharPixel('█', offsetX + 6, offsetY - 2, ConsoleColor.Blue),
                    new CharPixel('█', offsetX + 7, offsetY - 3, ConsoleColor.Blue),
                    new CharPixel('█', offsetX + 8, offsetY - 4, ConsoleColor.Blue),
                }, angle_ship, ConsoleColor.Yellow)
                {
                    ShowLabel = show_label
                };

                // ArchUser
                var up = new CharSprite(ASCII.ArchUserUp, -10, 0, angle_ship, ship_color)
                {
                    ShowLabel = show_label
                };
                var down = new CharSprite(ASCII.ArchUserDown, -10, 0, angle_ship, ship_color - 8)
                {
                    ShowLabel = show_label
                };

                pixelList.Add(new Sprite(new List <IPixel> {
                    up, down, ship
                }, angle_ship)
                {
                    ShowLabel = false
                });
                pixelList.Last().Draw(painter);
            }

            var counter = new PixelCounter();

            pixelList.ForEach(p => p.Accept(counter));

            Console.ForegroundColor = ConsoleColor.Red;
            if (show_stat)
            {
                ConsoleScreen.Print(string.Format("Zoom: {0:F2} angle: {1} stars: {2} C=[{3:F2}:{4:F2}]", ConsoleScreen.Zoom, (int)(angle / Math.PI * 180), asteriks_count, xc, yc), 3);
                ConsoleScreen.Print(string.Format("d1={0:F2} d2={1:F2} t1={2} t2={3} t3={4}", d1, d2, timer1, timer2, timer3), 2);
                ConsoleScreen.Print(string.Format("Total pixels: {0}, Total sprites: {1}, User Input: {2}", counter.TotalCharPixels, counter.TotalCharSprites + counter.TotalSprites, gameEvent), 1);
            }
            if (show_help)
            {
                var text = new [] {
                    "H - Toggle HELP",
                    "E,S,D,F - Ship Movement",
                    "1-8 - Change Ship Color",
                    "-----------------------", " ", " ",
                    "L - Show/Hide sprite Labels",
                    "Num* (KP_Multiply) - Add 1 Star (Alt+* - Add 10 Stars)",
                    "Num +/-, Num_Enter (KP_Enter) - Zoom, Reset Zoom",
                    "Num/ (KP_Device) - Reset all to Defaults",
                    "Alt + any_key - Speed Up",
                    "C - Show/Hide Circle",
                    "Insert/Delete - Add/Remove points to Circle",
                    "Shift+4 ($) - Show/Hide Dollar",
                    "W,R - miniShip Strafe",
                    "Num8,Num5,Num4,Num6 - Scene Movement",
                    "Num7,Num9 - Scene Rotation",
                    "o,p,[,] - Timers",
                    "Enter - Change Painters",
                    "I - Show/Hide Intel Logo",
                    "F1 - Toggle Stat",
                };
                ConsoleScreen.Print(text, true);
            }
            if (show_task)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                var task = "Find the Center (@) of the Universe";
                var len  = Console.WindowWidth / 2 - task.Length / 2;
                task = new string(' ', len > 0 ? len : 0) + task;
                ConsoleScreen.Print(task, Console.WindowHeight / 2);
            }
        }
Example #10
0
        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;
                }
                }
            }
        }
Example #11
0
        static void Main(string[] args)
        {
            var appData = ExecutionEnvironment.GetApplicationMetadata();

            Log.Info(appData);

            _consoleOptions = new ConsoleOptions(args);

            if (_consoleOptions.ShowHelp)
            {
                Console.WriteLine("Options:");
                _consoleOptions.OptionSet.WriteOptionDescriptions(Console.Out);
                return;
            }

            CapturePi.DoMatMagic("CreateCapture");

            var noCaptureGrabs = new[] { Mode.simple, Mode.pantiltjoy, Mode.ipReport };
            var i2cRequired    = new[] { Mode.pantiltface, Mode.pantiltjoy, Mode.pantiltcolour, Mode.pantiltmultimode };

            ICaptureGrab capture = null;

            if (!noCaptureGrabs.Contains(_consoleOptions.Mode))
            {
                var config = CaptureConfig.Parse(_consoleOptions.CaptureConfig);
                capture = BuildCaptureGrabber(config);
                Log.Info($"Requested capture {capture.RequestedConfig}");
            }

            IPanTiltMechanism panTiltMech = null;
            IScreen           screen      = null;

            if (i2cRequired.Contains(_consoleOptions.Mode))
            {
                var pwmDeviceFactory = new Pca9685DeviceFactory();
                var pwmDevice        = pwmDeviceFactory.GetDevice(_consoleOptions.UseFakeDevice);
                panTiltMech = new PanTiltMechanism(pwmDevice);
                screen      = new ConsoleScreen();
                screen.Clear();
            }
            else
            {
                Log.Info("Pan Tilt is not required");
            }

            IRunner runner;

            Log.Info(_consoleOptions);
            switch (_consoleOptions.Mode)
            {
            case Mode.noop:
                var noopRunner = new NoopRunner(capture);
                noopRunner.ReportFramesPerSecond = true;
                runner = noopRunner;
                break;

            case Mode.simple: runner = new SimpleCv();
                break;

            case Mode.colourdetect:
                var colorDetector = new ColorDetectRunner(capture);
                if (_consoleOptions.HasColourSettings)
                {
                    colorDetector.Settings = _consoleOptions.ColourSettings;
                }
                runner = colorDetector;
                break;

            case Mode.haar:
                var relativePath    = $@"haarcascades{Path.DirectorySeparatorChar}haarcascade_frontalface_default.xml";
                var cascadeFilename = Path.Combine(appData.ExeFolder, relativePath);
                var cascadeContent  = File.ReadAllText(cascadeFilename);
                runner = new CascadeRunner(capture, cascadeContent);
                break;

            case Mode.servosort:
                runner = new ServoSorter(capture, _consoleOptions);
                break;

            case Mode.pantiltjoy:
                var joyController = new JoystickPanTiltController(panTiltMech);
                runner = new TimerRunner(joyController, screen);
                break;

            case Mode.pantiltface:
                var controllerF = new FaceTrackingPanTiltController(panTiltMech, capture.RequestedConfig);
                runner = new CameraBasedPanTiltRunner(panTiltMech, capture, controllerF, screen);
                break;

            case Mode.pantiltmultimode:
                var cameraHubProxy = new CameraHubProxy();
                cameraHubProxy.Connect();
                var remoteScreen     = new RemoteConsoleScreen(cameraHubProxy);
                var piServerClient   = new BsonPostImageTransmitter();
                var imageTransmitter = new RemoteImageSender(piServerClient, cameraHubProxy);

                cameraHubProxy.SettingsChanged += (sender, s) =>
                {
                    remoteScreen.Enabled     = s.EnableConsoleTransmit;
                    imageTransmitter.Enabled = s.EnableImageTransmit;
                };

                var controllerMultimode = new MultimodePanTiltController(panTiltMech, capture.RequestedConfig, remoteScreen, cameraHubProxy, imageTransmitter);

                var cameraBasedRunner = new CameraBasedPanTiltRunner(panTiltMech, capture, controllerMultimode, screen);
                runner = cameraBasedRunner;

                cameraHubProxy.UpdateCapture += (s, e) =>
                {
                    remoteScreen.WriteLine($"Changing capture settings to {e}");
                    var newGrabber = BuildCaptureGrabber(e);
                    cameraBasedRunner.UpdateCaptureGrabber(newGrabber);
                };
                break;

            case Mode.pantiltcolour:
                var controllerC = new ColourTrackingPanTiltController(panTiltMech, capture.RequestedConfig);
                if (_consoleOptions.HasColourSettings)
                {
                    controllerC.Settings = _consoleOptions.ColourSettings;
                }
                else
                {
                    throw KrakenException.Create("Colour settings not found");
                }
                runner = new CameraBasedPanTiltRunner(panTiltMech, capture, controllerC, screen);
                break;

            case Mode.ipReport:
                var hub = new CameraHubProxy();
                runner = new IpReporter(hub);
                break;

            default:
                throw KrakenException.Create("Option mode {0} needs wiring up", _consoleOptions.Mode);
            }

            runner.Run();
        }
Example #12
0
        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;
                }
                }
            }
        }
Example #13
0
        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;
                }
                }
            }
        }
Example #14
0
    bool EventStart()
    {
        if (firstRunOfEvent)
        {
            progressPaused     = true;
            shipAngle.stopTilt = true;
            consoleScreen.StartMessage("Deep Jupiter\n\na game made for LD 48\n\n\n< Press to\n  begin\n  mission");
            firstRunOfEvent = false;
        }

        if (!consoleScreen.isWriting && EvaluateBottomButton())
        {
            progressPaused = false;
            consoleScreen.Clear();
            return(true);
        }
        return(false);
    }
Example #15
0
        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;
                }
                }
            }
        }
Example #16
0
        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();
            }
        }
Example #17
0
        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();
                }
            }
        }
Example #18
0
        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();
            }
        }
Example #19
0
        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;
                }
                }
            }
        }