Example #1
0
 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;
         }
     }
 }
Example #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"]));
            }
        }
Example #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);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
 public IActionResult Result(RoversModel roversresult)
 {
     return(View(roversresult));
 }