public OperationResult <NavigationItem> UpdateCoordinates(string token, double latitude, double longitude, string address, double?accuracy)
        {
            var validator = new CoordinatesValidator(latitude, longitude);

            if (validator.Validate())
            {
                return(OperationResult <NavigationItem> .Failure(validator.ToString()));
            }

            if (token == null)
            {
                return(OperationResult <NavigationItem> .Failure("Token has to be provided"));
            }

            var item = _navigationManager.GetItem(token);

            if (item == null)
            {
                return(OperationResult <NavigationItem> .Failure("Token doesn't match."));
            }

            item.Address   = address ?? "";
            item.Latitude  = latitude;
            item.Longitude = longitude;
            item.Accuracy  = accuracy;

            return(OperationResult <NavigationItem> .Success(item));
        }
        public OperationResult <TokensModel> CreateSession(double latitude, double longitude, int duration, string address, double?accuracy)
        {
            var coordinatesValidator = new CoordinatesValidator(latitude, longitude);

            if (coordinatesValidator.Validate())
            {
                return(OperationResult <TokensModel> .Failure(coordinatesValidator.ToString()));
            }
            var durationValidator = new DurationValidator(duration);

            if (durationValidator.Validate())
            {
                return(OperationResult <TokensModel> .Failure(durationValidator.ToString()));
            }

            var token = _navigationManager.CreateItem(latitude, longitude, duration, address, accuracy);

            return(OperationResult <TokensModel> .Success(token));
        }
Esempio n. 3
0
        public RobotInitial RobotPositionAndCommands()
        {
            CoordinatesValidator coordinatesValidator = new CoordinatesValidator();
            MotionValidator      motionValidator      = new MotionValidator();

            Console.CursorVisible = true;
            Coordinates initialRobotPositionOnScreen = new Coordinates();
            Coordinates robotPositionInMarthSurface  = new Coordinates();
            MotionModel commands = new MotionModel();

            RobotInitial robotInitial = new RobotInitial();

            Console.WriteLine("Now, initial coordinates of the robot and It´s orientation (N, S, E, W): ");
            LinesCleaner.BlankLine();

            int left = Console.CursorLeft;
            int top  = Console.CursorTop;

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;

                try
                {
                    LinesCleaner.BlankLine();
                    Console.Write("Enter the X: ");
                    robotInitial.RobotPositionInMarthSurface.XPosition = 9;
                    robotInitial.RobotPositionInMarthSurface.XPosition = Convert.ToInt32(Console.ReadLine());
                    LinesCleaner.Clean();
                    Console.Write("Enter the Y: ");
                    robotInitial.RobotPositionInMarthSurface.YPosition = Convert.ToInt32(Console.ReadLine());
                    LinesCleaner.Clean();
                    break;
                }
                catch (Exception)
                {
                    Console.WriteLine($"Write numbers! error");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;
                try
                {
                    Console.Write("Enter the Orientation of Robot(N, S, E, W): ");
                    robotInitial.InitialRobotPositionOnScreen.Orientation = Console.ReadLine().ToUpper();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);

                    IList <ValidationFailure> orientationErrors =
                        coordinatesValidator.Validate(robotInitial.InitialRobotPositionOnScreen, options => options.IncludeProperties("Orientation")).Errors;
                    if (orientationErrors.Any())
                    {
                        foreach (var error in orientationErrors)
                        {
                            Console.WriteLine($"Error!: {error}");
                            Thread.Sleep(2000);
                            LinesCleaner.Clean();
                            LinesCleaner.Clean();
                            Console.SetCursorPosition(left, top);
                        }
                        throw new Exception("Please (N, S, E, W):");
                    }
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;

                try
                {
                    Console.Write("Give the instructions for the Robot (L/R/F): ");
                    commands.Instructions     = Console.ReadLine().ToUpper();
                    robotInitial.Instructions = commands.Instructions;
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);

                    IList <ValidationFailure> motionErrors =
                        motionValidator.Validate(commands).Errors;

                    if (motionErrors.Any())
                    {
                        foreach (var error in motionErrors)
                        {
                            Console.WriteLine($"Error!: {error} ");
                            Thread.Sleep(2000);
                            LinesCleaner.Clean();
                            LinesCleaner.Clean();
                            Console.SetCursorPosition(left, top);
                        }
                        throw new Exception("Please (L/R/F):");
                    }
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            Thread.Sleep(10);
            Console.CursorVisible = false;
            return(robotInitial);
        }