コード例 #1
0
ファイル: RoversProcess.cs プロジェクト: avstnj/MarsRover
 private static void Process(string roverDirectoryChar, ref RoversModel roversModel)
 {
     if (roverDirectoryChar == "L")
     {
         if (roversModel.WAY == "N")
         {
             roversModel.WAY = "W";
         }
         else if (roversModel.WAY == "E")
         {
             roversModel.WAY = "N";
         }
         else if (roversModel.WAY == "S")
         {
             roversModel.WAY = "E";
         }
         else//(roversModel.WAY == "W")
         {
             roversModel.WAY = "S";
         }
     }
     else if (roverDirectoryChar == "R")
     {
         if (roversModel.WAY == "N")
         {
             roversModel.WAY = "E";
         }
         else if (roversModel.WAY == "E")
         {
             roversModel.WAY = "S";
         }
         else if (roversModel.WAY == "S")
         {
             roversModel.WAY = "W";
         }
         else//(WAY == "W")
         {
             roversModel.WAY = "N";
         }
     }
     else if (roverDirectoryChar == "M")
     {
         if (roversModel.WAY == "N")
         {
             roversModel.Y = roversModel.Y + 1;
         }
         else if (roversModel.WAY == "E")
         {
             roversModel.X = roversModel.X + 1;
         }
         else if (roversModel.WAY == "S")
         {
             roversModel.Y = roversModel.Y - 1;
         }
         else//(roversModel.WAY == "W")
         {
             roversModel.X = roversModel.X - 1;
         }
     }
 }
コード例 #2
0
        public IActionResult Index(RoversModel data)
        {
            TempData["uyari"] = "";
            if (data.X > 0 && data.Y > 0 && data.WAY != null && data.ROVER_DIRECTIVE != null)
            {
                RoversModel roversModel = new RoversModel(data.X, data.Y, data.WAY.ToUpper(), data.ROVER_DIRECTIVE.ToUpper());

                var uri = string.Format("{0}", "http://localhost:60618/api/rovers");

                RoversModel roversresult = PostMethod <RoversModel>(roversModel, uri, null);
                if (roversresult != null)
                {
                    return(RedirectToAction("Result", roversresult));
                }
                else
                {
                    TempData["uyari"] = "Hata Oluştu";
                    return(View(TempData["uyari"]));
                }
            }
            else
            {
                TempData["uyari"] = "Bilgiler Eksiksiz girilmemelidir...";
                return(View(TempData["uyari"]));
            }
        }
コード例 #3
0
        public bool RoverMovementCommandsDataControl(string[] roverData, string movementCommandsData, UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            try
            {
                if (string.IsNullOrEmpty(movementCommandsData))
                {
                    return(false);
                }
                else
                {
                    char[]        movementCommandsDataSplit    = movementCommandsData.ToUpper().ToCharArray();
                    List <string> movementCommandsEnumDataList = EnumHelper.GetItems(typeof(MovementCommandsEnum));

                    RoversModel routeTestModel = new RoversModel
                    {
                        XCoordinate = Convert.ToInt32(roverData[0]),
                        YCoordinate = Convert.ToInt32(roverData[1]),
                        Direction   = (int)EnumHelper.GetEnumByName <DirectionEnum>(roverData[2]),
                    };

                    foreach (char data in movementCommandsDataSplit)
                    {
                        if (!movementCommandsEnumDataList.Contains(data.ToString()))
                        {
                            Console.WriteLine("Lütfen geçerli hareket komut bilgisi giriniz!");
                            return(false);
                        }
                        else
                        {
                            switch (data)
                            {
                            case 'L': routeTestModel.TurnLeft(); break;

                            case 'R': routeTestModel.TurnRight(); break;

                            default: routeTestModel.Move(); break;
                            }

                            if (routeTestModel.XCoordinate > upperRightCoordinateModel.XCoordinate || routeTestModel.YCoordinate > upperRightCoordinateModel.YCoordinate || routeTestModel.XCoordinate < 0 || routeTestModel.YCoordinate < 0)
                            {
                                Console.WriteLine("Lütfen hareket komutlarını rover bölge içinde kalacak şekilde giriniz!");
                                return(false);
                            }
                        }
                    }

                    return(true);
                }
            }
            catch
            {
                return(false);
            }
        }
コード例 #4
0
ファイル: RoversProcess.cs プロジェクト: avstnj/MarsRover
        public static RoversEntity GetRoversEntity(RoversModel roversModel)
        {
            RoversEntity roversEntity = new RoversEntity();

            roversEntity.X               = roversModel.X;
            roversEntity.Y               = roversModel.Y;
            roversEntity.WAY             = roversModel.WAY;
            roversEntity.ROVER_DIRECTIVE = roversModel.ROVER_DIRECTIVE;
            roversEntity.CREATE_DATE     = DateTime.Now;
            roversEntity.IS_ACTIVE       = true;
            return(roversEntity);
        }
コード例 #5
0
ファイル: RoversProcess.cs プロジェクト: avstnj/MarsRover
        public static RoversModel GetRoverResult(RoversModel data)
        {
            RoversModel re             = new RoversModel(data.X, data.Y, data.WAY, null);
            string      roverDirectory = data.ROVER_DIRECTIVE;

            for (int i = 0; i < roverDirectory.Length; i++)
            {
                Process(roverDirectory[i].ToString(), ref re);
            }

            return(re);
        }
コード例 #6
0
ファイル: RoversController.cs プロジェクト: avstnj/MarsRover
        public RoversModel InsertRovers([FromBody] RoversModel roversModel)
        {
            RoversEntity roversEntity = RoversProcess.GetRoversEntity(roversModel);

            #region Bir Rovers cihazının işi bitmeden diğeri başlamaması için Aktiflik kontrolü koyduk. Rovers Cihazının işi bitene kadar Aktif olduğunun kaydını tutuyoruz. Bu süre zarfında başka bir cihaz geldiğinde Aktif olan başka bir cihaz olduğu için işlem yapamayacaktır. Aktif olan cihazın işlemi bittiğinde pasife çekiliyor...
            bool result = uow.RevorsBus.GetActiveRecordRovers();
            if (result)
            {
                uow.RevorsBus.InsertRovers(roversEntity);
                uow.SaveChanges();
            }
            else
            {
                RoversModel roversModelResult = null;
                return(roversModelResult);
            }
            #endregion

            RoversModel re = RoversProcess.GetRoverResult(roversModel);
            uow.RevorsBus.UpdateRoversStatus();
            return(re);
        }
コード例 #7
0
 public IActionResult Result(RoversModel roversresult)
 {
     return(View(roversresult));
 }