Ejemplo n.º 1
0
        private static void LicenseToDB(License license)
        {
            Validate(license);

            CustomerId = license.CustomerId;

            var defaultQuota = CoreContext.TenantManager.GetTenantQuota(Tenant.DEFAULT_TENANT);

            var quota = new TenantQuota(-1000)
            {
                ActiveUsers   = Constants.MaxEveryoneCount,
                MaxFileSize   = defaultQuota.MaxFileSize,
                MaxTotalSize  = defaultQuota.MaxTotalSize,
                Name          = "license",
                DocsEdition   = true,
                Customization = license.Customization,
                Update        = true,
                Trial         = license.Trial,
            };

            CoreContext.TenantManager.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = license.DueDate,
            };

            CoreContext.PaymentManager.SetTariff(-1, tariff);
        }
Ejemplo n.º 2
0
        public static TenantQuota GetRightQuota(bool year = false)
        {
            var         usedSpace      = TenantStatisticsProvider.GetUsedSize();
            var         needUsersCount = TenantStatisticsProvider.GetUsersCount();
            var         quotas         = GetTenantQuotas();
            TenantQuota result         = null;

            if (!year)
            {
                result = quotas.OrderBy(q => q.Price).FirstOrDefault(q => !q.Free);
                if (result != null && result.DocsEdition && result.ActiveUsers > needUsersCount && result.MaxTotalSize > usedSpace)
                {
                    return(result);
                }
            }

            result = quotas.OrderBy(r => r.ActiveUsers)
                     .FirstOrDefault(quota =>
                                     quota.ActiveUsers > needUsersCount &&
                                     quota.MaxTotalSize > usedSpace &&
                                     quota.DocsEdition &&
                                     quota.Year == year &&
                                     !quota.Free);
            if (year || result != null)
            {
                return(result);
            }
            return(GetRightQuota(true));
        }
Ejemplo n.º 3
0
        protected string GetShoppingUri(TenantQuota quota)
        {
            var uri = string.Empty;

            if (quota != null &&
                quota.ActiveUsers >= TenantStatisticsProvider.GetUsersCount() &&
                quota.MaxTotalSize >= TenantStatisticsProvider.GetUsedSize())
            {
                if (Partner == null)
                {
                    var link = CoreContext.PaymentManager.GetShoppingUri(TenantProvider.CurrentTenantID, quota.Id);
                    if (link == null)
                    {
                        LogManager.GetLogger("ASC.Web.Billing").Error(string.Format("GetShoppingUri return null for tenant {0} and quota {1}", TenantProvider.CurrentTenantID, quota == null ? 0 : quota.Id));
                    }
                    else
                    {
                        uri = link.ToString();
                    }
                }
                else if (Partner.PaymentMethod == PartnerPaymentMethod.External)
                {
                    uri = (Partner.PaymentUrl ?? "")
                          .ToLower()
                          .Replace("{partnerid}", Partner.Id)
                          .Replace("{tariffid}", quota.ActiveUsers + (quota.Year ? "year" : "month"))
                          .Replace("{portal}", CoreContext.TenantManager.GetCurrentTenant().TenantAlias)
                          .Replace("{currency}", Region.ISOCurrencySymbol)
                          .Replace("{price}", ((int)quota.Price).ToString());
                }
            }
            return(uri);
        }
Ejemplo n.º 4
0
        public TenantQuota SaveTenantQuota(TenantQuota quota)
        {
            if (quota == null)
            {
                throw new ArgumentNullException("quota");
            }

            var dbQuota = new DbQuota
            {
                Tenant       = quota.Id,
                Name         = quota.Name,
                MaxFileSize  = GetInMBytes(quota.MaxFileSize),
                MaxTotalSize = GetInMBytes(quota.MaxTotalSize),
                ActiveUsers  = quota.ActiveUsers,
                Features     = quota.Features,
                Price        = quota.Price,
                Price2       = quota.Price2,
                AvangateId   = quota.AvangateId,
                Visible      = quota.Visible
            };

            CoreDbContext.AddOrUpdate(r => r.Quotas, dbQuota);
            CoreDbContext.SaveChanges();

            return(quota);
        }
Ejemplo n.º 5
0
        public void QuotaMethod()
        {
            var quota1 = new TenantQuota(Tenant)
            {
                MaxFileSize  = 3,
                MaxTotalSize = 4,
                ActiveUsers  = 30,
            };

            Service.SaveTenantQuota(quota1);
            CompareQuotas(quota1, Service.GetTenantQuota(quota1.Id));

            Service.RemoveTenantQuota(Tenant);
            Assert.IsNull(Service.GetTenantQuota(quota1.Id));

            var row = new TenantQuotaRow {
                Tenant = this.Tenant, Path = "path", Counter = 1000, Tag = "tag"
            };

            Service.SetTenantQuotaRow(row, false);

            var rows = Service.FindTenantQuotaRows(Tenant).ToList();

            CompareQuotaRows(row, rows.Find(r => r.Tenant == row.Tenant && r.Tag == row.Tag));

            Service.SetTenantQuotaRow(row, true);
            row.Counter += 1000;
            rows         = Service.FindTenantQuotaRows(Tenant).ToList();
            CompareQuotaRows(row, rows.Find(r => r.Tenant == row.Tenant && r.Tag == row.Tag));

            //DeleteQuotaRow(row);
        }
 protected TenantQuota GetQuotaMonth(TenantQuota quota)
 {
     return(_quotaList.FirstOrDefault(r =>
                                      r.ActiveUsers == quota.ActiveUsers &&
                                      (!r.Year || quota.Free) &&
                                      !r.Year3));
 }
Ejemplo n.º 7
0
        private string GetShoppingLink(TenantQuota quota, string currency, string language, string customerId, int quantity)
        {
            var link = string.Empty;

            if (quota != null)
            {
                try
                {
                    var uri = CoreContext.PaymentManager.GetShoppingUri(quota.Id, true, null, currency, language, customerId, quantity.ToString());
                    if (uri == null)
                    {
                        var message = string.Format("GetShoppingLink: return null for tenant {0} quota {1} currency {2} language {3} customerId {4} quantity {5}", TenantProvider.CurrentTenantID, quota.Id, currency, language, customerId, quantity);
                        Log.Info(message);
                    }
                    else
                    {
                        link = uri.ToString();
                    }
                }
                catch (Exception ex)
                {
                    var message = string.Format("GetShoppingLink: {0} tenant {1} quota {2} currency {3} language {4} customerId {5} quantity {6}", ex.Message, TenantProvider.CurrentTenantID, quota.Id, currency, language, customerId, quantity);
                    Log.Info(message, ex);
                }
            }
            return(link);
        }
Ejemplo n.º 8
0
        public IActionResult SetTariff(TariffModel model)
        {
            if (!CommonMethods.GetTenant(model, out Tenant tenant))
            {
                Log.Error("Model without tenant");

                return(BadRequest(new
                {
                    error = "portalNameEmpty",
                    message = "PortalName is required"
                }));
            }

            if (tenant == null)
            {
                Log.Error("Tenant not found");

                return(BadRequest(new
                {
                    error = "portalNameNotFound",
                    message = "Portal not found"
                }));
            }

            var quota = new TenantQuota(tenant.TenantId)
            {
                ActiveUsers  = 10000,
                Features     = model.Features ?? "",
                MaxFileSize  = 1024 * 1024 * 1024,
                MaxTotalSize = 1024L * 1024 * 1024 * 1024 - 1,
                Name         = "api",
            };

            if (model.ActiveUsers != default)
            {
                quota.ActiveUsers = model.ActiveUsers;
            }

            if (model.MaxTotalSize != default)
            {
                quota.MaxTotalSize = model.MaxTotalSize;
            }

            if (model.MaxFileSize != default)
            {
                quota.MaxFileSize = model.MaxFileSize;
            }

            HostedSolution.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = model.DueDate != default ? model.DueDate : DateTime.MaxValue,
            };

            HostedSolution.SetTariff(tenant.TenantId, tariff);

            return(GetTariff(tenant));
        }
Ejemplo n.º 9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            UsersCount    = TenantStatisticsProvider.GetUsersCount();
            UsedSize      = TenantStatisticsProvider.GetUsedSize();
            CurrentTariff = TenantExtra.GetCurrentTariff();
            CurrentQuota  = TenantExtra.GetTenantQuota();

            var partner = CoreContext.PaymentManager.GetApprovedPartner();

            if (partner != null)
            {
                Partner = partner;

                _quotaList = CoreContext.PaymentManager.GetPartnerTariffs(Partner.Id);

                if (!string.IsNullOrEmpty(Partner.Currency))
                {
                    Region = new RegionInfo(Partner.Currency);
                }

                var control = (TariffPartner)LoadControl(TariffPartner.Location);
                control.CurPartner        = Partner;
                control.TariffNotPaid     = CurrentTariff.State >= TariffState.NotPaid;
                control.TariffProlongable = CurrentTariff.Prolongable;
                PaymentsCodeHolder.Controls.Add(control);
            }

            if (_quotaList == null || !_quotaList.Any())
            {
                _quotaList = TenantExtra.GetTenantQuotas();
            }
            else if (!CurrentQuota.Trial)
            {
                CurrentQuota = _quotaList.FirstOrDefault(q => q.Id == CurrentQuota.Id) ?? CurrentQuota;
            }
            _quotaList = _quotaList.OrderBy(r => r.ActiveUsers).ToList().Where(r => !r.Trial);
            QuotasYear = _quotaList.Where(r => r.Year).ToList();

            HideBuyRecommendation = CurrentTariff.Autorenewal || TariffSettings.GetTariffSettings() || Partner != null;

            downgradeInfoContainer.Options.IsPopup     = true;
            buyRecommendationContainer.Options.IsPopup = true;
            AjaxPro.Utility.RegisterTypeForAjax(GetType());

            if (StudioSmsNotificationSettings.IsVisibleSettings &&
                (SettingsManager.Instance.LoadSettings <StudioSmsNotificationSettings>(TenantProvider.CurrentTenantID).EnableSetting ||
                 CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID)) &&
                Partner == null)
            {
                SmsEnable = true;
                var smsBuy = (SmsBuy)LoadControl(SmsBuy.Location);
                smsBuy.ShowLink = !SettingsManager.Instance.LoadSettings <StudioSmsNotificationSettings>(TenantProvider.CurrentTenantID).EnableSetting;
                SmsBuyHolder.Controls.Add(smsBuy);
            }

            if (Partner == null)
            {
                RegisterScript();
            }
        }
Ejemplo n.º 10
0
        private string GetShoppingUri(TenantQuota quota)
        {
            var uri = string.Empty;

            if (quota != null)
            {
                try
                {
                    var link = CoreContext.PaymentManager.GetShoppingUri(quota.Id, true, null, CurrentRegion.ISOCurrencySymbol, Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName, CurrentOwnerId);
                    if (link == null)
                    {
                        LogManager.GetLogger("ASC.Web.Billing").Info(string.Format("GetShoppingUri return null for tenant {0} and quota {1}", TenantProvider.CurrentTenantID, quota.Id));
                    }
                    else
                    {
                        uri = link.ToString();
                    }
                }
                catch (Exception ex)
                {
                    LogManager.GetLogger("ASC").Info(string.Format("GetShoppingUri: {0} tenant {1} quota {2} currency {3} Language {4}",
                                                                   ex.Message, TenantProvider.CurrentTenantID, quota.Id, CurrentRegion.ISOCurrencySymbol, Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName),
                                                     ex);
                }
            }
            return(uri);
        }
Ejemplo n.º 11
0
        private static void LicenseToDB(License license)
        {
            Validate(license);

            CustomerId = license.CustomerId;

            var defaultQuota = CoreContext.TenantManager.GetTenantQuota(Tenant.DEFAULT_TENANT);

            var quota = new TenantQuota(-1000)
            {
                ActiveUsers    = license.ActiveUsers,
                MaxFileSize    = defaultQuota.MaxFileSize,
                MaxTotalSize   = defaultQuota.MaxTotalSize,
                Name           = "license",
                DocsEdition    = true,
                HasDomain      = true,
                Audit          = true,
                ControlPanel   = true,
                HealthCheck    = true,
                Ldap           = true,
                Sso            = true,
                Customization  = license.Customization,
                WhiteLabel     = license.WhiteLabel || license.Customization,
                Branding       = license.Branding,
                SSBranding     = license.SSBranding,
                Update         = true,
                Support        = true,
                Trial          = license.Trial,
                CountPortals   = license.PortalCount,
                DiscEncryption = true,
                PrivacyRoom    = true,
            };

            if (defaultQuota.Name != "overdue" && !defaultQuota.Trial)
            {
                quota.WhiteLabel |= defaultQuota.WhiteLabel;
                quota.Branding   |= defaultQuota.Branding;
                quota.SSBranding |= defaultQuota.SSBranding;

                quota.CountPortals = Math.Max(defaultQuota.CountPortals, quota.CountPortals);
            }

            CoreContext.TenantManager.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = license.DueDate,
            };

            CoreContext.PaymentManager.SetTariff(-1, tariff);

            if (!string.IsNullOrEmpty(license.AffiliateId))
            {
                var tenant = CoreContext.TenantManager.GetCurrentTenant();
                tenant.AffiliateId = license.AffiliateId;
                CoreContext.TenantManager.SaveTenant(tenant);
            }
        }
Ejemplo n.º 12
0
        public TenantQuota SaveTenantQuota(TenantQuota quota)
        {
            quota = service.SaveTenantQuota(quota);
            var store = GetTenantQuotasInernal();

            store[quota.Id] = quota;
            return(quota);
        }
        protected decimal GetSaleValue(decimal priceMonth, TenantQuota quota)
        {
            var price = GetPrice(quota);

            var period = quota.Year ? 12 : 36;

            return(priceMonth * period - price);
        }
Ejemplo n.º 14
0
        public TenantQuota SaveTenantQuota(TenantQuota quota)
        {
            var q = Service.SaveTenantQuota(quota);

            CacheNotify.Publish(new QuotaCacheItem {
                Key = QuotaServiceCache.KEY_QUOTA
            }, CacheNotifyAction.Any);
            return(q);
        }
        protected Tuple <string, string, string> GetBuyAttr(TenantQuota quota)
        {
            var cssList = new List <string>();
            var getHref = true;
            var text    = Resource.TariffButtonBuy;

            if (quota != null)
            {
                cssList.Add(CurrentTariff.State >= TariffState.NotPaid ? "red" : "blue");

                if (quota.ActiveUsers < UsersCount || quota.MaxTotalSize < UsedSize)
                {
                    cssList.Add("disable");
                    getHref = false;
                }
                else if (Equals(quota.Id, CurrentQuota.Id))
                {
                    text = Resource.TariffButtonExtend;
                    if (!CurrentTariff.Prolongable)
                    {
                        cssList.Add("disable");
                        getHref = false;
                    }
                    else if (CurrentTariff.Autorenewal)
                    {
                        cssList.Add("disable");
                        getHref = false;
                        text    = Resource.TariffEnabledAutorenew + SetStar(Resource.TariffRemarkProlongEnable);
                    }
                }
                else if (CurrentTariff.Prolongable)
                {
                    text = Resource.TariffButtonBuy + SetStar(Resource.TariffRemarkProlongDisable);
                }

                if (!quota.Year3)
                {
                    if (quota.Year && YearIsDisable || !quota.Year && MonthIsDisable)
                    {
                        cssList.Add("disable");
                        getHref = false;
                        text    = Resource.TariffButtonBuy;
                    }
                }
            }
            else
            {
                cssList.Add("disable");
                getHref = false;
            }

            var href     = getHref ? GetShoppingUri(quota) : string.Empty;
            var cssClass = string.Join(" ", cssList.Distinct());
            var result   = new Tuple <string, string, string>(cssClass, href, text);

            return(result);
        }
Ejemplo n.º 16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page
            .RegisterBodyScripts("~/usercontrols/management/tariffsettings/js/tariffusage.js",
                                 "~/js/asc/plugins/countries.js",
                                 "~/js/asc/plugins/phonecontroller.js")
            .RegisterStyle(
                "~/skins/default/phonecontroller.css",
                "~/usercontrols/management/tariffsettings/css/tariff.less",
                "~/usercontrols/management/tariffsettings/css/tariffusage.less")
            .RegisterClientScript(new CountriesResources());

            CurrentRegion = RegionDefault;
            Regions.Add(CurrentRegion);

            UsersCount    = TenantStatisticsProvider.GetUsersCount();
            UsedSize      = TenantStatisticsProvider.GetUsedSize();
            CurrentTariff = TenantExtra.GetCurrentTariff();
            CurrentQuota  = TenantExtra.GetTenantQuota();

            if (_quotaList == null || !_quotaList.Any())
            {
                _quotaList = TenantExtra.GetTenantQuotas();
            }
            else if (!CurrentQuota.Trial)
            {
                CurrentQuota = _quotaList.FirstOrDefault(q => q.Id == CurrentQuota.Id) ?? CurrentQuota;
            }
            _quotaList = _quotaList.OrderBy(r => r.ActiveUsers).ToList().Where(r => !r.Trial);
            QuotasYear = _quotaList.Where(r => r.Year).ToList();

            MonthIsDisable = !CurrentQuota.Free && (CurrentQuota.Year || CurrentQuota.Year3) && CurrentTariff.State == TariffState.Paid;
            YearIsDisable  = !CurrentQuota.Free && CurrentQuota.Year3 && CurrentTariff.State == TariffState.Paid;

            var minYearQuota = QuotasYear.FirstOrDefault(q => q.ActiveUsers >= UsersCount && q.MaxTotalSize >= UsedSize);

            MinActiveUser = minYearQuota != null ? minYearQuota.ActiveUsers : (QuotasYear.Count > 0 ? QuotasYear.Last().ActiveUsers : 0 + 1);

            HideBuyRecommendation = CurrentTariff.Autorenewal || TariffSettings.HideRecommendation;

            downgradeInfoContainer.Options.IsPopup     = true;
            buyRecommendationContainer.Options.IsPopup = true;
            AjaxPro.Utility.RegisterTypeForAjax(GetType());

            if (StudioSmsNotificationSettings.IsVisibleSettings &&
                (SettingsManager.Instance.LoadSettings <StudioSmsNotificationSettings>(TenantProvider.CurrentTenantID).EnableSetting ||
                 CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID)))
            {
                SmsEnable = true;
                var smsBuy = (SmsBuy)LoadControl(SmsBuy.Location);
                smsBuy.ShowLink = !SettingsManager.Instance.LoadSettings <StudioSmsNotificationSettings>(TenantProvider.CurrentTenantID).EnableSetting;
                SmsBuyHolder.Controls.Add(smsBuy);
            }

            RegisterScript();
            CurrencyCheck();
        }
Ejemplo n.º 17
0
        public TenantQuota SaveTenantQuota(TenantQuota quota)
        {
            var q = service.SaveTenantQuota(quota);

            cacheNotify.Publish(new QuotaCacheItem {
                Key = KEY_QUOTA
            }, CacheNotifyAction.Remove);
            return(q);
        }
Ejemplo n.º 18
0
 protected string GetTypeLink(TenantQuota quota)
 {
     return(quota.ActiveUsers >= UsersCount &&
            quota.MaxTotalSize >= UsedSize
                ? (CurrentQuota.Trial || Equals(quota.Id, CurrentQuota.Id))
                      ? "pay"
                      : "change"
                : "limit");
 }
Ejemplo n.º 19
0
        private static void LicenseToDB(string licenseJsonString)
        {
            string   customerId;
            DateTime dueDate;
            int      activeUsers;
            int      countPortals;
            var      licenseJson = Validate(licenseJsonString, out customerId, out dueDate, out activeUsers, out countPortals);

            CustomerId = customerId;

            var defaultQuota = CoreContext.TenantManager.GetTenantQuota(Tenant.DEFAULT_TENANT);

            var quota = new TenantQuota(-1000)
            {
                ActiveUsers  = activeUsers,
                MaxFileSize  = defaultQuota.MaxFileSize,
                MaxTotalSize = defaultQuota.MaxTotalSize,
                Name         = "license",
                HasDomain    = true,
                Audit        = true,
                ControlPanel = true,
                HealthCheck  = true,
                Ldap         = true,
                //Sso = true,
                WhiteLabel   = true,
                Update       = true,
                Support      = true,
                Trial        = licenseJson.Value <string>("trial") != null && licenseJson.Value <bool>("trial"),
                CountPortals = countPortals,
            };

            CoreContext.TenantManager.SaveTenantQuota(quota);

            if (defaultQuota.CountPortals != countPortals)
            {
                defaultQuota.CountPortals = countPortals;
                CoreContext.TenantManager.SaveTenantQuota(defaultQuota);
            }

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = dueDate,
            };

            CoreContext.PaymentManager.SetTariff(-1, tariff);

            var affiliateId = licenseJson.Value <string>("affiliate_id");

            if (!string.IsNullOrEmpty(affiliateId))
            {
                var tenant = CoreContext.TenantManager.GetCurrentTenant();
                tenant.AffiliateId = affiliateId;
                CoreContext.TenantManager.SaveTenant(tenant);
            }
        }
Ejemplo n.º 20
0
        public bool ActivateTrial()
        {
            if (!CoreContext.Configuration.Standalone)
            {
                throw new NotSupportedException();
            }
            if (!CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsAdmin())
            {
                throw new SecurityException();
            }

            var curQuota = TenantExtra.GetTenantQuota();

            if (curQuota.Id != Tenant.DEFAULT_TENANT)
            {
                return(false);
            }
            if (curQuota.Trial)
            {
                return(false);
            }

            var curTariff = TenantExtra.GetCurrentTariff();

            if (curTariff.DueDate.Date != DateTime.MaxValue.Date)
            {
                return(false);
            }

            var quota = new TenantQuota(-1000)
            {
                Name         = "apirequest",
                ActiveUsers  = curQuota.ActiveUsers,
                MaxFileSize  = curQuota.MaxFileSize,
                MaxTotalSize = curQuota.MaxTotalSize,
                Features     = curQuota.Features
            };

            quota.Trial = true;

            CoreContext.TenantManager.SaveTenantQuota(quota);

            var DEFAULT_TRIAL_PERIOD = 30;

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = DateTime.Today.AddDays(DEFAULT_TRIAL_PERIOD)
            };

            CoreContext.PaymentManager.SetTariff(-1, tariff);

            MessageService.Send(HttpContext.Current.Request, MessageAction.LicenseKeyUploaded);

            return(true);
        }
Ejemplo n.º 21
0
        public int GetPrevUsersCount(TenantQuota quota)
        {
            var prevQuota = GetPrevQuota(quota);

            if (prevQuota == null || prevQuota.Trial)
            {
                return(1);
            }
            return(prevQuota.ActiveUsers + 1);
        }
Ejemplo n.º 22
0
        public TenantQuota SaveTenantQuota(TenantQuota quota)
        {
            if (!CoreContext.Configuration.Standalone)
            {
                throw new NotImplementedException();
            }

            quota = quotaService.SaveTenantQuota(quota);
            return(quota);
        }
Ejemplo n.º 23
0
 protected string GetTypeLink(TenantQuota quota)
 {
     return(quota.ActiveUsers >= UsersCount &&
            quota.MaxTotalSize >= UsedSize
                ? (CurrentQuota.Trial ||
                   CoreContext.Configuration.Standalone && CurrentTariff.QuotaId.Equals(Tenant.DEFAULT_TENANT) ||
                   Equals(quota.Id, CurrentQuota.Id))
                      ? "pay"
                      : "change"
                : "limit");
 }
Ejemplo n.º 24
0
        protected Tuple <string, string, string> GetShoppingData(TenantQuota quota, string currency, int quantity)
        {
            var getLink    = true;
            var buttonText = Resource.TariffButtonBuy;
            var infoText   = string.Empty;

            var currentUsersCount    = TenantStatisticsProvider.GetUsersCount();
            var currentVisitorsCount = TenantStatisticsProvider.GetVisitorsCount();
            var currentUsedSize      = TenantStatisticsProvider.GetUsedSize();
            var currentTariff        = TenantExtra.GetCurrentTariff();
            var currentQuota         = TenantExtra.GetTenantQuota();
            var language             = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
            var customerId           = CoreContext.TenantManager.GetCurrentTenant().OwnerId.ToString();

            var quotaActiveUsers  = quota.ActiveUsers == -1 ? quantity : quota.ActiveUsers;
            var quotaMaxTotalSize = quota.ActiveUsers == -1 ? quota.MaxTotalSize * quantity : quota.MaxTotalSize;

            if (quotaActiveUsers < currentUsersCount ||
                quotaMaxTotalSize < currentUsedSize ||
                (!currentQuota.Free && (quotaActiveUsers * Constants.CoefficientOfVisitors) < currentVisitorsCount))
            {
                getLink = false;
            }
            else if (Equals(quota.Id, currentQuota.Id) &&
                     quantity == currentTariff.Quantity)
            {
                buttonText = Resource.TariffButtonExtend;
                if (!currentTariff.Prolongable)
                {
                    getLink = false;
                }
                else if (currentTariff.Autorenewal)
                {
                    getLink    = false;
                    buttonText = Resource.TariffEnabledAutorenew;
                    infoText   = Resource.TariffRemarkProlongEnable;
                }
            }
            else if (currentTariff.Prolongable)
            {
                buttonText = Resource.TariffButtonBuy;
                infoText   = Resource.TariffRemarkProlongDisable;
            }
            else if (currentTariff.State == TariffState.Paid && quotaActiveUsers < currentQuota.ActiveUsers)
            {
                getLink    = false;
                buttonText = Resource.TariffButtonBuy;
                infoText   = currentQuota.Year3 ? Resource.TariffRemarkDisabledYear : Resource.TariffRemarkDisabledMonth;
            }

            var link = getLink ? GetShoppingLink(quota, currency, language, customerId, quantity) : string.Empty;

            return(new Tuple <string, string, string>(buttonText, infoText, link));
        }
Ejemplo n.º 25
0
 public QuotaWrapper(TenantQuota quota, IList <TenantQuotaRow> quotaRows)
 {
     StorageSize  = (ulong)Math.Max(0, quota.MaxTotalSize);
     MaxFileSize  = (ulong)Math.Max(0, quota.MaxFileSize);
     UsedSize     = (ulong)Math.Max(0, quotaRows.Sum(r => r.Counter));
     StorageUsage =
         quotaRows.Select(x => new QuotaUsage()
     {
         Path = x.Path.TrimStart('/').TrimEnd('/'), Size = x.Counter,
     }).
         ToList();
 }
Ejemplo n.º 26
0
 private object ToTariffWrapper(Tariff t, TenantQuota q)
 {
     return(new
     {
         t.DueDate,
         t.State,
         q.MaxTotalSize,
         q.MaxFileSize,
         q.ActiveUsers,
         q.Features
     });
 }
Ejemplo n.º 27
0
 private static object ToTariffWrapper(Tariff t, TenantQuota q)
 {
     return(new
     {
         activeUsers = q.ActiveUsers,
         dueDate = t == null ? DateTime.MaxValue : t.DueDate,
         features = q.Features,
         maxFileSize = q.MaxFileSize,
         maxTotalSize = q.MaxTotalSize,
         state = t == null ? TariffState.Paid : t.State,
     });
 }
Ejemplo n.º 28
0
 private void CompareQuotas(TenantQuota q1, TenantQuota q2)
 {
     Assert.AreEqual(q1.Id, q2.Id);
     Assert.AreEqual(q1.Name, q2.Name);
     Assert.AreEqual(q1.Desc, q2.Desc);
     Assert.AreEqual(q1.MaxFileSize, q2.MaxFileSize);
     Assert.AreEqual(q1.MaxTotalSize, q2.MaxTotalSize);
     Assert.AreEqual(q1.ActiveUsers, q2.ActiveUsers);
     Assert.AreEqual(q1.Features, q2.Features);
     Assert.AreEqual(q1.Price, q2.Price);
     Assert.AreEqual(q1.AvangateId, q2.AvangateId);
 }
Ejemplo n.º 29
0
 protected string GetPriceString(TenantQuota quota)
 {
     if (!string.IsNullOrEmpty(quota.AvangateId) && _priceInfo.ContainsKey(quota.AvangateId))
     {
         var prices = _priceInfo[quota.AvangateId];
         if (prices.ContainsKey(CurrentRegion.ISOCurrencySymbol))
         {
             return(GetPriceString(prices[CurrentRegion.ISOCurrencySymbol], false));
         }
         return(GetPriceString(quota.Price, false, RegionDefault.CurrencySymbol));
     }
     return(GetPriceString(quota.Price));
 }
Ejemplo n.º 30
0
 protected decimal GetPrice(TenantQuota quota)
 {
     if (!string.IsNullOrEmpty(quota.AvangateId) && _priceInfo.ContainsKey(quota.AvangateId))
     {
         var prices = _priceInfo[quota.AvangateId];
         if (prices.ContainsKey(CurrentRegion.ISOCurrencySymbol))
         {
             return(prices[CurrentRegion.ISOCurrencySymbol]);
         }
         return(quota.Price);
     }
     return(quota.Price);
 }