protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(BackupAjaxHandler), Page);

            Page.RegisterStyleControl(ResolveUrl("~/usercontrols/management/backup/css/backup.less"));
            Page.RegisterBodyScripts(ResolveUrl("~/usercontrols/management/backup/js/backup.js"));

            FolderSelectorHolder.Controls.Add(LoadControl(CommonLinkUtility.ToAbsolute("~/products/files/controls/fileselector/fileselector.ascx")));

            BackupTimePeriod.Controls.Add(LoadControl(ChooseTimePeriod.Location));
            RestoreHolder.Controls.Add(LoadControl(Restore.Location));

            var size = CoreContext.TenantManager.FindTenantQuotaRows(new TenantQuotaRowQuery(TenantProvider.CurrentTenantID))
                       .Where(r => !string.IsNullOrEmpty(r.Tag) && new Guid(r.Tag) != Guid.Empty && !new Guid(r.Tag).Equals(_mailStorageTag))
                       .Sum(r => r.Counter);

            if (size > AvailableZipSize)
            {
                AvailableStatus = BackupAvailableSize.NotAvailable;
            }
            else
            {
                size = TenantStatisticsProvider.GetUsedSize();
                if (size > AvailableZipSize)
                {
                    AvailableStatus = BackupAvailableSize.WithoutMail;
                }
            }
        }
Exemple #2
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);
        }
        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));
        }
        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();
            }
        }
        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();
        }
Exemple #6
0
        public static string GetTariffNotify()
        {
            var tariff = GetCurrentTariff();

            if (tariff.State == TariffState.Trial)
            {
                var count = tariff.DueDate.Subtract(DateTime.Today.Date).Days;
                if (count <= 0)
                {
                    return(Resource.TrialPeriodExpired);
                }

                string end;
                var    num = count % 100;

                if (num >= 11 && num <= 19)
                {
                    end = Resource.DaysTwo;
                }
                else
                {
                    var i = count % 10;
                    switch (i)
                    {
                    case (1):
                        end = Resource.Day;
                        break;

                    case (2):
                    case (3):
                    case (4):
                        end = Resource.DaysOne;
                        break;

                    default:
                        end = Resource.DaysTwo;
                        break;
                    }
                }
                return(string.Format(Resource.TrialPeriod, count, end));
            }

            if (tariff.State == TariffState.Paid)
            {
                var  quota = GetTenantQuota();
                long notifySize;
                long.TryParse(ConfigurationManager.AppSettings["web.tariff-notify.storage"] ?? "314572800", out notifySize); //300 MB
                if (notifySize > 0 && quota.MaxTotalSize - TenantStatisticsProvider.GetUsedSize() < notifySize)
                {
                    return(string.Format(Resource.TariffExceedLimit, FileSizeComment.FilesSizeToString(quota.MaxTotalSize)));
                }
            }

            return(string.Empty);
        }
Exemple #7
0
 public long MaxChunkedUploadSize(TenantExtra tenantExtra, TenantStatisticsProvider tenantStatisticsProvider)
 {
     var diskQuota = tenantExtra.GetTenantQuota();
     if (diskQuota != null)
     {
         var usedSize = tenantStatisticsProvider.GetUsedSize();
         var freeSize = Math.Max(diskQuota.MaxTotalSize - usedSize, 0);
         return Math.Min(freeSize, diskQuota.MaxFileSize);
     }
     return ChunkUploadSize;
 }
Exemple #8
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));
        }
Exemple #9
0
        public static TenantQuota GetRightQuota()
        {
            var usedSpace      = TenantStatisticsProvider.GetUsedSize();
            var needUsersCount = TenantStatisticsProvider.GetUsersCount();

            return(GetTenantQuotas().OrderBy(r => r.ActiveUsers)
                   .FirstOrDefault(quota =>
                                   quota.ActiveUsers > needUsersCount &&
                                   quota.MaxTotalSize > usedSpace &&
                                   quota.DocsEdition &&
                                   !quota.Year));
        }
        public AjaxResponse RequestPayPal(int qoutaId)
        {
            var res = new AjaxResponse();

            try
            {
                if (!HttpRuntime.Cache.Get(PartnerCache).Equals(DateTime.UtcNow))
                {
                    HttpRuntime.Cache.Insert(PartnerCache, DateTime.UtcNow);
                }

                var partnerId = CoreContext.TenantManager.GetCurrentTenant().PartnerId;
                var partner   = CoreContext.PaymentManager.GetPartner(partnerId);

                if (partner == null || partner.Status != PartnerStatus.Approved || partner.Removed || partner.PaymentMethod != PartnerPaymentMethod.PayPal)
                {
                    throw new MethodAccessException(Resource.PartnerPayPalExc);
                }

                var tenantQuota = TenantExtra.GetTenantQuota(qoutaId);

                var curruntQuota = TenantExtra.GetTenantQuota();
                if (TenantExtra.GetCurrentTariff().State == TariffState.Paid &&
                    tenantQuota.ActiveUsers < curruntQuota.ActiveUsers &&
                    tenantQuota.Year == curruntQuota.Year)
                {
                    throw new MethodAccessException(Resource.PartnerPayPalDowngrade);
                }

                if (tenantQuota.Price > partner.AvailableCredit)
                {
                    CoreContext.PaymentManager.RequestClientPayment(partnerId, qoutaId, false);
                    throw new Exception(Resource.PartnerRequestLimitInfo);
                }

                var usersCount = TenantStatisticsProvider.GetUsersCount();
                var usedSize   = TenantStatisticsProvider.GetUsedSize();

                if (tenantQuota.ActiveUsers < usersCount || tenantQuota.MaxTotalSize < usedSize)
                {
                    res.rs2 = "quotaexceed";
                    return(res);
                }

                res.rs1 = CoreContext.PaymentManager.GetButton(partner.Id, qoutaId);
            }
            catch (Exception e)
            {
                res.message = e.Message;
            }
            return(res);
        }
Exemple #11
0
 public override List <UsageSpaceStatItem> GetStatData()
 {
     return(WebItemManager.Instance.GetSubItems(CommunityProduct.ID, ItemAvailableState.All)
            .Select(webItem => new UsageSpaceStatItem
     {
         Name = webItem.Name,
         ImgUrl = webItem.GetIconAbsoluteURL(),
         SpaceUsage = TenantStatisticsProvider.GetUsedSize(webItem.ID),
         Url = VirtualPathUtility.ToAbsolute(webItem.StartURL)
     })
            .Where(statItem => statItem.SpaceUsage > 0)
            .ToList());
 }
Exemple #12
0
        public void GetFree()
        {
            var quota      = TenantExtra.GetTenantQuota();
            var usersCount = TenantStatisticsProvider.GetUsersCount();
            var usedSize   = TenantStatisticsProvider.GetUsedSize();

            if (!quota.Free &&
                quota.ActiveUsers >= usersCount &&
                quota.MaxTotalSize >= usedSize)
            {
                TenantExtra.FreeRequest();
            }
        }
Exemple #13
0
        public TenantQuota GetRightQuota()
        {
            var usedSpace      = TenantStatisticsProvider.GetUsedSize();
            var needUsersCount = TenantStatisticsProvider.GetUsersCount();
            var quotas         = GetTenantQuotas();

            return(quotas.OrderBy(q => q.ActiveUsers)
                   .ThenBy(q => q.Year)
                   .FirstOrDefault(q =>
                                   q.ActiveUsers > needUsersCount &&
                                   q.MaxTotalSize > usedSpace &&
                                   !q.Free &&
                                   !q.Trial));
        }
        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());

            RegisterScript();
            CurrencyCheck();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Page
            .RegisterBodyScripts("~/UserControls/Management/TariffSettings/js/tariffcustom.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",
                "~/UserControls/Management/TariffSettings/css/tariffcustom.less")
            .RegisterClientScript(new CountriesResources());

            CurrentRegion = RegionDefault;

            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);

            MonthPrice = Convert.ToInt32(ConfigurationManager.AppSettings["core.custom-mode.month-price"] ?? "290");
            YearPrice  = Convert.ToInt32(ConfigurationManager.AppSettings["core.custom-mode.year-price"] ?? "175");

            AjaxPro.Utility.RegisterTypeForAjax(GetType());

            CurrencyCheck();
        }
Exemple #16
0
        public override List <UsageSpaceStatItem> GetStatData()
        {
            var storage = GetStorage();

            if (storage == null)
            {
                return(WebItemManager.Instance.GetItemsAll()
                       .Where(webItem => webItem.ID == WebItemManager.TalkProductID)
                       .Select(webItem => new UsageSpaceStatItem
                {
                    Name = webItem.Name,
                    SpaceUsage = TenantStatisticsProvider.GetUsedSize(webItem.ID),
                    Url = VirtualPathUtility.ToAbsolute(webItem.StartURL)
                })
                       .ToList());
            }

            return(CoreContext.UserManager.GetUsers()
                   .Select(userInfo => ToUsageSpaceStatItem(storage, userInfo))
                   .Where(item => item != null)
                   .OrderByDescending(item => item.SpaceUsage)
                   .ToList());
        }
Exemple #17
0
        private static void SetQuota(TenantQuota quota)
        {
            if (quota == null)
            {
                throw new ArgumentNullException("quota");
            }

            if (TenantStatisticsProvider.GetUsersCount() > quota.ActiveUsers)
            {
                throw new Exception(string.Format(Resource.PortalAccessSettingsUserLimitException, quota.ActiveUsers));
            }

            if (TenantStatisticsProvider.GetUsedSize() > quota.MaxTotalSize)
            {
                throw new Exception(string.Format(Resource.PortalAccessSettingsDiscSpaceLimitException, FileSizeComment.FilesSizeToString(quota.MaxTotalSize)));
            }

            CoreContext.PaymentManager.SetTariff(TenantProvider.CurrentTenantID, new Tariff
            {
                QuotaId = quota.Id,
                DueDate = DateTime.MaxValue
            });
        }
        public static BackupAvailableSize GetAvailableSize()
        {
            if (CoreContext.Configuration.Standalone)
            {
                return(BackupAvailableSize.Available);
            }

            var size = CoreContext.TenantManager.FindTenantQuotaRows(new TenantQuotaRowQuery(TenantProvider.CurrentTenantID))
                       .Where(r => !string.IsNullOrEmpty(r.Tag) && new Guid(r.Tag) != Guid.Empty && !new Guid(r.Tag).Equals(mailStorageTag))
                       .Sum(r => r.Counter);

            if (size > AvailableZipSize)
            {
                return(BackupAvailableSize.NotAvailable);
            }

            size = TenantStatisticsProvider.GetUsedSize();
            if (size > AvailableZipSize)
            {
                return(BackupAvailableSize.WithoutMail);
            }

            return(BackupAvailableSize.Available);
        }
Exemple #19
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.RegisterBodyScripts(ResolveUrl("~/usercontrols/management/tariffsettings/js/tariffusage.js"));
            Page.RegisterStyleControl(VirtualPathUtility.ToAbsolute("~/usercontrols/management/tariffsettings/css/tariffusage.less"));

            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.HideRecommendation || Partner != null;

            AnnualDiscount          = QuotasYear.All(q => q.Price2 != decimal.Zero);
            HideAnnualRecomendation = !AnnualDiscount ||
                                      (CurrentQuota.Year && !CurrentQuota.Free && !CurrentQuota.Trial) ||
                                      TariffSettings.HideAnnualRecomendation ||
                                      CurrentQuota.NonProfit;
            if (!HideAnnualRecomendation)
            {
                AnnualQuotaForDisplay = QuotaForDisplay;
                if (AnnualQuotaForDisplay == null ||
                    AnnualQuotaForDisplay.Free ||
                    AnnualQuotaForDisplay.Trial ||
                    !AnnualQuotaForDisplay.Visible)
                {
                    HideAnnualRecomendation = true;
                }
                else if (!AnnualQuotaForDisplay.Year)
                {
                    AnnualQuotaForDisplay = _quotaList.FirstOrDefault(r =>
                                                                      r.ActiveUsers == AnnualQuotaForDisplay.ActiveUsers &&
                                                                      r.Year);
                    if (AnnualQuotaForDisplay == null)
                    {
                        HideAnnualRecomendation = true;
                    }
                }
            }

            downgradeInfoContainer.Options.IsPopup       = true;
            buyRecommendationContainer.Options.IsPopup   = true;
            annualRecomendationContainer.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 (VoipPaymentSettings.IsVisibleSettings &&
                CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID) &&
                Partner == null)
            {
                VoipEnable = true;
                var voipBuy = (VoipBuy)LoadControl(VoipBuy.Location);
                VoipBuyHolder.Controls.Add(voipBuy);
            }

            if (Partner == null)
            {
                RegisterScript();
            }

            if (Partner == null && Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == "ru")
            {
                _region   = new RegionInfo("RU");
                RateRuble = SetupInfo.ExchangeRateRuble;

                SetStar(string.Format(Resource.TariffsCurrencyRu, RateRuble));
            }
        }
Exemple #20
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.RegisterBodyScripts("~/usercontrols/management/tariffsettings/js/tariffusage.js");
            Page.RegisterStyle("~/usercontrols/management/tariffsettings/css/tariff.less");
            Page.RegisterStyle("~/usercontrols/management/tariffsettings/css/tariffusage.less");

            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();

            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.Last().ActiveUsers + 1);

            HideBuyRecommendation = CurrentTariff.Autorenewal || TariffSettings.HideRecommendation || 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 (VoipPaymentSettings.IsVisibleSettings &&
                CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID) &&
                Partner == null)
            {
                VoipEnable = true;
                var voipBuy = (VoipBuy)LoadControl(VoipBuy.Location);
                VoipBuyHolder.Controls.Add(voipBuy);
            }

            if (Partner == null)
            {
                RegisterScript();
            }

            if (Partner == null && Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == "ru")
            {
                _region         = new RegionInfo("RU");
                _currencyFormat = "{price}{currency}";
                RateRuble       = SetupInfo.ExchangeRateRuble;

                SetStar(string.Format(Resource.TariffsCurrencyRu, RateRuble));
            }
        }
        private static Tuple <string, string> GetTariffNotify()
        {
            var tariff = TenantExtra.GetCurrentTariff();

            var count = tariff.DueDate.Date.Subtract(DateTime.Today).Days;

            if (tariff.State == TariffState.Trial)
            {
                if (count <= 5)
                {
                    var text = String.Format(CoreContext.Configuration.Standalone ? Resource.TariffLinkStandalone : Resource.TrialPeriodInfoText,
                                             "<a href=\"" + TenantExtra.GetTariffPageLink() + "\">", "</a>");

                    if (count <= 0)
                    {
                        return(new Tuple <string, string>(Resource.TrialPeriodExpired, text));
                    }

                    var end = GetNumeralResourceByCount(count, Resource.Day, Resource.DaysOne, Resource.DaysTwo);
                    return(new Tuple <string, string>(string.Format(Resource.TrialPeriod, count, end), text));
                }

                if (CoreContext.Configuration.Standalone)
                {
                    return(new Tuple <string, string>(Resource.TrialPeriodInfoTextLicense, string.Empty));
                }
            }

            if (tariff.State == TariffState.Paid)
            {
                if (CoreContext.Configuration.Standalone && count < 10)
                {
                    var text = String.Format(Resource.TariffLinkStandalone,
                                             "<a href=\"" + TenantExtra.GetTariffPageLink() + "\">", "</a>");
                    if (count <= 0)
                    {
                        return(new Tuple <string, string>(Resource.PaidPeriodExpiredStandalone, text));
                    }

                    var end = GetNumeralResourceByCount(count, Resource.Day, Resource.DaysOne, Resource.DaysTwo);
                    return(new Tuple <string, string>(string.Format(Resource.PaidPeriodStandalone, count, end), text));
                }

                var  quota = TenantExtra.GetTenantQuota();
                long notifySize;
                long.TryParse(ConfigurationManager.AppSettings["web.tariff-notify.storage"] ?? "314572800", out notifySize); //300 MB
                if (notifySize > 0 && quota.MaxTotalSize - TenantStatisticsProvider.GetUsedSize() < notifySize)
                {
                    var head = string.Format(Resource.TariffExceedLimit, FileSizeComment.FilesSizeToString(quota.MaxTotalSize));
                    var text = String.Format(Resource.TariffExceedLimitInfoText, "<a href=\"" + TenantExtra.GetTariffPageLink() + "\">", "</a>");
                    return(new Tuple <string, string>(head, text));
                }
            }

            if (tariff.State == TariffState.Delay)
            {
                var text = String.Format(Resource.TariffPaymentDelayText,
                                         "<a href=\"" + TenantExtra.GetTariffPageLink() + "\">", "</a>",
                                         tariff.DelayDueDate.Date.ToLongDateString());
                return(new Tuple <string, string>(Resource.TariffPaymentDelay, text));
            }

            return(null);
        }
Exemple #22
0
        private bool CheckStartupEnabled(TenantQuota currentQuota, TenantQuota startupQuota, out string errorMessage)
        {
            errorMessage = string.Empty;

            if (!currentQuota.Trial)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorTrial;
                return(false);
            }

            if (TenantStatisticsProvider.GetUsersCount() > startupQuota.ActiveUsers)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorUsers, startupQuota.ActiveUsers);
                return(false);
            }

            if (TenantStatisticsProvider.GetVisitorsCount() > 0)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorGuests, 0);
                return(false);
            }

            var currentTenant = CoreContext.TenantManager.GetCurrentTenant();

            var admins = WebItemSecurity.GetProductAdministrators(Guid.Empty);

            if (admins.Any(admin => admin.ID != currentTenant.OwnerId))
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorAdmins, 1);
                return(false);
            }

            if (TenantStatisticsProvider.GetUsedSize() > startupQuota.MaxTotalSize)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorStorage, FileSizeComment.FilesSizeToString(startupQuota.MaxTotalSize));
                return(false);
            }

            var authServiceList = new AuthorizationKeys().AuthServiceList.Where(x => x.CanSet);

            foreach (var service in authServiceList)
            {
                if (service.Props.Any(r => !string.IsNullOrEmpty(r.Value)))
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorThirparty;
                    return(false);
                }
            }

            if (!TenantWhiteLabelSettings.Load().IsDefault)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorWhiteLabel;
                return(false);
            }

            if (!string.IsNullOrEmpty(currentTenant.MappedDomain))
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorDomain;
                return(false);
            }

            var accountLinker = new AccountLinker("webstudio");

            foreach (var user in CoreContext.UserManager.GetUsers(EmployeeStatus.All))
            {
                var linkedAccounts = accountLinker.GetLinkedProfiles(user.ID.ToString());

                if (linkedAccounts.Any())
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorOauth;
                    return(false);
                }
            }

            if (SsoSettingsV2.Load().EnableSso)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorSso;
                return(false);
            }

            if (ActiveDirectory.Base.Settings.LdapSettings.Load().EnableLdapAuthentication)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorLdap;
                return(false);
            }

            using (var service = new BackupServiceClient())
            {
                var scheduleResponse = service.GetSchedule(currentTenant.TenantId);

                if (scheduleResponse != null)
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorAutoBackup;
                    return(false);
                }
            }

            return(true);
        }