Example #1
0
        private StorageResources _premiumActive(IDbConnection connection, int userId, StorageResources res, int planetId)
        {
            var level  = 1;
            var newRes = res.CloneDeep();

            if (planetId != 0)
            {
                // todo   создать генератор всех хранишищ
                var p = _planet.GetUserPlanet(connection, planetId, userId);
                if (p.BuildStorage.Level != null)
                {
                    level = (int)p.BuildStorage.Level;
                }
                newRes.Max = Storage.MaxStorable(level, true);
                if (!res.NeedFix())
                {
                    return(newRes);
                }
                var fixedPlanetRes   = FixCurrentResources(newRes);
                var updatedPlanetRes = _planet.SetNewResources(connection, planetId, userId, fixedPlanetRes);
                return(updatedPlanetRes.Resources);
            }

            newRes.Max = Storage.MaxMotherStorable(true);
            if (!res.NeedFix())
            {
                return(newRes);
            }
            var fixedMotherRes = FixCurrentResources(newRes);
            var updatedMother  = _mother.SetNewResources(connection, userId, fixedMotherRes);

            return(updatedMother.Resources);
        }
Example #2
0
        public StorageResources Execute(IDbConnection connection, int userId, StorageResources res, int planetId = 0)
        {
            var pr = _storeService.GetPremiumWorkModel(connection, userId);

            if (pr.IsActive)
            {
                return(_premiumActive(connection, userId, res, planetId));
            }
            if (!res.NeedFix())
            {
                return(res);
            }


            var fixedRes = FixCurrentResources(res);

            if (planetId == 0)
            {
                var updatedMother = _mother.SetNewResources(connection, userId, fixedRes);
                return(updatedMother.Resources);
            }

            var updatedPlanetRes = _planet.SetNewResources(connection, planetId, userId, fixedRes);

            return(updatedPlanetRes.Resources);
        }