/// <summary>
        /// Get server list and random target on Index
        /// </summary>
        /// <returns></returns>
        public IActionResult Index()
        {
            var vm = new StarIndexViewModel(StarMapBLL.GetServerList());
            var userServerPreference = HttpContext.Session.GetInt32(SessionServerSelection);

            if (userServerPreference != null)
            {
                vm.SearchViewModel.ServerId = (int)userServerPreference;
            }
            return(View(vm));
        }
        public IActionResult Search(StarSearchViewModel vm)
        {
            var sivm = new StarIndexViewModel(StarMapBLL.GetServerList())
            {
                SearchViewModel = vm
            };

            sivm.SearchViewModel.Servers = sivm.Servers;
            HttpContext.Session.SetInt32(SessionServerSelection, vm.ServerId); //Remember option
            if (ModelState.IsValid)
            {
                sivm.IsSearch = true;

                //Search player
                var status = "";
                if (vm.PlayerStatus.IsBanned)
                {
                    status += "b";
                }
                if (vm.PlayerStatus.IsFlee)
                {
                    status += "o";
                }
                if (vm.PlayerStatus.IsInactive && !vm.PlayerStatus.IsLeft)
                {
                    status += "i";
                }
                if (vm.PlayerStatus.IsLeft)
                {
                    status += "I";
                }

                List <Player> players = new List <Player>();
                if (!vm.Coords.IsEmpty)
                {
                    //Search by coordinate
                    var planets = StarMapBLL.SearchPlanetsByCoordinate(vm.Coords, vm.ServerId, vm.Range);
                    foreach (var planet in planets)
                    {
                        var player = players.FirstOrDefault(p => p.Id == planet.OwnerId);
                        if (player != null)
                        {
                            //Player exists in list
                            planet.Owner = player; //Assign to planet
                            continue;
                        }

                        //Find all owners in range
                        var owner = StarMapBLL.SearchPlayerById(vm.ServerId, planet.OwnerId);
                        if (owner != null)
                        {
                            //Owner found in DB and is new
                            players.Add(StarMapBLL.SearchPlayerById(vm.ServerId, planet.OwnerId));
                            planet.Owner = owner;
                        }
                    }
                    sivm.Planets = planets;
                }
                else
                {
                    //Name only search
                    players.AddRange(StarMapBLL.SearchPlayerByName(vm.PlayerName ?? "", vm.ServerId, status));
                }
                sivm.AssignPlayers(players);
            }
            return(View("Index", sivm));
        }