/// <summary> /// Asks for position. /// </summary> private void AskForPosition() { var landingAreaName = ConsoleHelpers.ReadConsole("Enter the landing area name"); var platformName = ConsoleHelpers.ReadConsole("Enter the platform name"); var positionX = Convert.ToDouble(ConsoleHelpers.ReadConsole("Enter the position X")); var positionY = Convert.ToDouble(ConsoleHelpers.ReadConsole("Enter the position Y")); var answer = _rocketService.AskForPosition(landingAreaName, platformName, positionX, positionY); ConsoleHelpers.WriteLine($"The answer from control center was \"{answer}\"", "warning"); if (answer.Equals(Constants.OkForLanding)) { var confirm = ConsoleHelpers.ConfirmationPrompt("Request this position ? "); if (confirm) { var platform = _landingAreaService.GetPlatformsList(landingAreaName) .FirstOrDefault(x => x.Description == platformName); var position = _positionService.MarkPlatformPosition(platform, positionX, positionY); if (!position.IsAvailable) { ConsoleHelpers.WriteLine($"Position requested successful", "ok"); } else { ConsoleHelpers.WriteLine($"Error requesting the position ", "alert"); } } } }
/// <summary> /// Asks for position. /// </summary> /// <param name="landingAreaName">Name of the landing area.</param> /// <param name="platforName">Name of the platfor.</param> /// <param name="areaX">The area x.</param> /// <param name="areaY">The area y.</param> /// <returns></returns> public string AskForPosition(string landingAreaName, string platformName, double areaX, double areaY) { var landingArea = _landingAreaService.GetLandingAreasList() .FirstOrDefault(x => x.Description == landingAreaName); if (landingArea == null) { return(Constants.LandingAreaNotFound); } var platform = _landingAreaService.GetPlatformsList(landingAreaName) .FirstOrDefault(x => x.Description == platformName); if (platform == null) { return(Constants.PlatformNotFound); } var platformPositions = _positionService.GetAvailablePlatformPosition(platform); var positionAvailable = platformPositions.FirstOrDefault(x => x.PositionX == areaX && x.PositionY == areaY); if (positionAvailable == null) { return(Constants.OutOfPlatform); } if (positionAvailable.IsAvailable) { return(Constants.OkForLanding); } return(Constants.Clash); }