/// <summary> /// Creates the platform. /// </summary> private void CreatePlatform() { var availableLandingArea = _landingAreaService.GetLandingAreasList(); if (availableLandingArea.Any()) { var landingAreaName = ConsoleHelpers.ReadConsole("Enter the LandingZone name"); var selectedLandingArea = availableLandingArea.FirstOrDefault(x => x.Description == landingAreaName); if (selectedLandingArea != null) { var platformDescription = ConsoleHelpers.ReadConsole("Enter the Platform description"); var platformAreaX = Convert.ToDouble(ConsoleHelpers.ReadConsole("Anter Area X")); var platformAreaY = Convert.ToDouble(ConsoleHelpers.ReadConsole("Enter Area Y")); var platformMinRocketSpace = Convert.ToInt32(ConsoleHelpers.ReadConsole("Enter the minimum space between rockets")); var platformConfirm = ConsoleHelpers.ConfirmationPrompt("Are you sure to create this platform?"); if (platformConfirm) { var zoneArea = selectedLandingArea.AreaX * selectedLandingArea.AreaY; var platformArea = platformAreaX * platformAreaY; while (platformArea > zoneArea) { Console.WriteLine($"Invalid Platform area, should be less than {zoneArea} m2"); platformAreaX = long.Parse(ConsoleHelpers.ReadConsole("Enter Area X")); platformAreaY = long.Parse(ConsoleHelpers.ReadConsole("Enter Area Y")); platformArea = platformAreaX * platformAreaY; } bool availablePosition = false; double landingAreaX = 0; double landingAreaY = 0; while (!availablePosition) { landingAreaX = Convert.ToDouble(ConsoleHelpers.ReadConsole("Enter Landing Area X coordinate for the new platform")); landingAreaY = Convert.ToDouble(ConsoleHelpers.ReadConsole("Enter Landing Area Y coordinate for the new platform")); var landingAreaPositions = _positionService.GetRegisteredPositions() .FirstOrDefault(x => x.OwnerId == selectedLandingArea.Id); var positionAvailability = landingAreaPositions.Positions.FirstOrDefault(x => x.PositionX == landingAreaX && x.PositionY == landingAreaY); if (positionAvailability != null) { availablePosition = positionAvailability.IsAvailable; } else { ConsoleHelpers.WriteLine("Invalid coordinate, try again", "alert"); } } var createdPlatform = _platformService.CreateLandingPlatform(selectedLandingArea, platformDescription, platformAreaX, platformAreaY, platformMinRocketSpace, landingAreaX, landingAreaY); if (createdPlatform == null) { Console.WriteLine("Error creating the new platform"); } Console.WriteLine("Platform created"); } } else { Console.WriteLine("No Landing Area found"); } } else { Console.WriteLine("No Landing Areas found"); } }