예제 #1
0
        public Dictionary <string, object> InitUser(IDbConnection connection, ClaimsPrincipal pricipalUser, IServiceProvider resolver)
        {
            if (pricipalUser == null)
            {
                throw new NullReferenceException(nameof(pricipalUser));
            }
            var allianceService   = resolver.GetService <IAllianceService>();
            var sectorService     = resolver.GetService <IGSectorsService>();
            var estateListService = resolver.GetService <IEstateListService>();
            var systemService     = resolver.GetService <ISystemService>();
            var localizer         = resolver.GetService <ILocalizerService>();

            var tmpUser = _gameUserService.GetCurrentGameUser(connection, pricipalUser);

            if (tmpUser == null)
            {
                throw new NullReferenceException(nameof(tmpUser));
            }
            var gameUser      = _gameUserService.UpdateUserOnlineStatus(connection, tmpUser, true);
            var userChest     = _storeService.GetChestUser(connection, gameUser.Id);
            var balanceData   = (UchBalanceCcData)userChest.ActivatedItemsView[ProductTypeIds.Cc].Data;
            var up            = (UchPremiumData)userChest.ActivatedItemsView[ProductTypeIds.Premium].Data;
            var userPremiumWm = new UserPremiumWorkModel(up.Premium);

            var motherData = _mothershipService.GetMother(connection, gameUser.Id);
            var mother     =
                _synchronizer.UserMothership(connection, motherData, userPremiumWm, _mothershipService, _motherJumpService);

            var planetsData = _detailPlanetService.GetUserPlanets(connection, gameUser.Id);

            if (planetsData != null && planetsData.Any())
            {
                planetsData = _synchronizer.UserPlanets(connection, planetsData, userPremiumWm, _detailPlanetService);
            }
            _synchronizer.RunUserTasks(connection, gameUser.Id);

            var sectors      = sectorService.GetInitSectors(connection);
            var allianceUser = allianceService.GetAllianceUserByUserId(connection, gameUser.Id);
            var alliance     = allianceService.Initial(connection, allianceUser, _gameUserService);
            var personalInfo =
                _gameUserService.GetUserPlanshetProfile(connection, allianceUser.UserId, allianceUser.AllianceId, alliance, true);
            // обновляет пользователя в дб обект юзер обновляет по ссылке
            var myAlliance     = (TabMyAllianceOut)alliance.Bodys[1].TemplateData;
            var connectionUser = _gameUserService.SetConnectionUser(connection, gameUser, allianceUser, myAlliance.Name);
            //btns
            var units = HangarUnitsOut.EmptyHangar();
            var keys  = units.Keys.ToList();

            var systemGeometry = systemService.GetSystemGeometryViewData(connection, mother.StartSystemId);
            var motherEstates  = GetMotherEstate(connection, gameUser, userPremiumWm, mother, false);

            var toggleBtns = new List <IButtonsView>
            {
                ButtonsView.HangarToggle()
            };

            var leftNavBtns = new List <IButtonsView>
            {
                ButtonsView.LefMenuNavAlliance(),
                ButtonsView.LefMenuNavConfederation(),
                ButtonsView.LefMenuNavJournal(),
                ButtonsView.LefMenuNavChannels()
            };
            var mapControllBtns = MapInfoService.MapControllButtons(_localizer);
            var hangarBtns      = keys.Select(key => units[key]).Select(ButtonsView.HangarListBtns).ToList();
            //var storageModel = new StorageResources();
            //storageModel.InitializeField();

            var btns = new Dictionary <string, IReadOnlyList <IButtonsView> >
            {
                { "toggleBtns", toggleBtns },
                { "leftNavBtns", leftNavBtns },
                { "mapControllBtns", mapControllBtns },
                { "hangarBtns", hangarBtns }
            };
            var alianceNames = allianceService.GetAllianceNames(connection, false);


            var result = new Dictionary <string, object>
            {
                { localizer.TranslationKey, localizer.GetGameTranslate() },
                { ResourcesView.ViewKey, ResourcesView.GetInitList(balanceData.BalanceCc.Quantity) },
                { MapTypes.Sector.ToString(), sectors },
                { ButtonsView.BaseBtnsKey, btns },
                //todo data incorrect

                { UchView.ViewKey, userChest },
                { EstateItemOut.ViewKey, estateListService.GetList(connection, gameUser.Id) },
                { ConnectionUser.ViewKey, connectionUser },

                { alliance.UniqueId, alliance },
                { UserProfileInfo.AvatarViewKey, personalInfo },
                { EstateViewKey, motherEstates },
                { AllianceOut.AllianceNamesKey, alianceNames },
                { Planetoids.ViewKey, systemGeometry }
            };

            return(result);
        }