예제 #1
0
        public static async Task <ValidatedView> UpdateAccount(AccountView accountView)
        {
            try {
                AccountModel accountModel = await Model <AccountModel> .AsQueryable()
                                            .Where(x => x.ID == accountView.ID).FirstOrDefault();

                if (accountModel == null)
                {
                    return(ValidatedView.Invalid(ErrorCode.ACCOUNT_NOT_FOUND));
                }

                bool success = true;

                ReplaceOneResult result = await Model <AccountModel> .AsCollection()
                                          .ReplaceOneAsync(x => x.ID == accountView.ID,
                                                           Mapper <AccountView> .Map(accountView, accountModel));

                success &= result.IsModifiedCountAvailable && result.ModifiedCount == 1;

                ValidatedView validatedHangarResultView = await HangarService
                                                          .UpdateHangar(accountView.ID, accountView.CurrentHangar);

                if (!validatedHangarResultView.IsValid)
                {
                    GameContext.Logger.LogInformation($"Player: '{accountView.ID}': {validatedHangarResultView.Message}");
                }
                success &= validatedHangarResultView.IsValid;

                ValidatedView validatedVaultResultView = await UpdateVault(accountView.ID, accountView.Vault);

                if (!validatedVaultResultView.IsValid)
                {
                    GameContext.Logger.LogInformation($"Player: '{accountView.ID}': {validatedVaultResultView.Message}");
                }
                success &= validatedVaultResultView.IsValid;

                ValidatedView validatedCooldownResultView = await UpdateCooldown(accountView.ID, accountView.Cooldown);

                if (!validatedCooldownResultView.IsValid)
                {
                    GameContext.Logger.LogInformation($"Player: '{accountView.ID}': {validatedCooldownResultView.Message}");
                }
                success &= validatedCooldownResultView.IsValid;

                if (success)
                {
                    return(ValidatedView.Valid());
                }
            } catch (Exception e) {
                GameContext.Logger.LogError(e);
            }
            return(ValidatedView.Invalid(ErrorCode.OPERATION_FAILED));
        }
예제 #2
0
        public static async Task <ValidatedView <AccountView> > RetrieveAccount(int accountId)
        {
            try {
                AccountModel accountModel = await Model <AccountModel> .AsQueryable()
                                            .FirstOrDefault(x => x.ID == accountId);

                if (accountModel == null)
                {
                    return(ValidatedView <AccountView> .Invalid(ErrorCode.ACCOUNT_NOT_FOUND));
                }

                AccountView accountView = Mapper <AccountModel> .Map <AccountView>(accountModel);

                accountView.GGRings = 64;

                ValidatedView <HangarView> validatedHangarView = await HangarService.RetrieveHangar(accountModel.ID, accountModel.ActiveShipID);

                if (!validatedHangarView.IsValid)
                {
                    return(ValidatedView <AccountView> .Invalid(validatedHangarView.Message));
                }
                accountView.CurrentHangar = validatedHangarView.Object;

                ValidatedView <VaultView> validatedVaultView = await RetrieveVault(accountId);

                if (!validatedVaultView.IsValid)
                {
                    return(ValidatedView <AccountView> .Invalid(validatedVaultView.Message));
                }
                accountView.Vault = validatedVaultView.Object;

                ValidatedView <CooldownView> validatedCooldownView = await RetrieveCooldown(accountId);

                if (!validatedCooldownView.IsValid)
                {
                    return(ValidatedView <AccountView> .Invalid(validatedCooldownView.Message));
                }
                accountView.Cooldown = validatedCooldownView.Object;

                accountView.Clan = new ClanOverview();
                ValidatedView <ClanOverview> validatedClanOverview = await ClanService.RetrieveClanOverviewFromMember(accountId);

                if (validatedClanOverview.IsValid && validatedClanOverview.Object != null)
                {
                    accountView.Clan = validatedClanOverview.Object;
                }

                return(ValidatedView <AccountView> .Valid(accountView));
            } catch (Exception e) {
                GameContext.Logger.LogError(e);
            }
            return(ValidatedView <AccountView> .Invalid(ErrorCode.OPERATION_FAILED));
        }