@using System.Globalization; @using Leica.Spider.BusinessCenter.Frontend.FeatureManager; @using Leica.Spider.BusinessCenter.Frontend.Utils @using Leica.Spider.BusinessCenter.WCFInterfaces @using Microsoft.AspNetCore.Html @model Tuple, List, List> @functions { static string FormatDate(DateTime? date) { return date?.ToString(Leica.Spider.BusinessCenter.Core.Model.DateFormats.Date); } string FormatDuration(long seconds, string resourceKey, QuotaCode? code) { if (code == QuotaCode.ConnectionTime) { return $"{seconds / 3600:0} {Lang.Raw(resourceKey)}"; } return $"{seconds:0} {Lang.Raw("IDS_PACKAGES_VIEW_DF_UNIT_EPOCHS_LABEL")}"; } string FormatDurationToHoursMinutes(long seconds) { var hoursAndMinutes = $"{Math.Floor((decimal)Math.Abs(seconds / 3600)):00}:{Math.Floor((decimal)Math.Abs(seconds % 3600 / 60)):00}"; return seconds < 0 ? $"-{hoursAndMinutes}" : hoursAndMinutes; } static string FormatPercent(double value) { return string.Format(CultureInfo.InvariantCulture, "{0:F1}%", value); } string FormatEpochs(long seconds) { return $"{seconds} {Lang.Raw("IDS_PACKAGES_VIEW_DF_UNIT_EPOCHS_LABEL")}"; } string GetQuotaTextByCode(QuotaCode? code) { var quotaText = string.Empty; switch (code) { case QuotaCode.ConnectionTime: quotaText = Lang.Html("IDS_UNIT_HOURS_AND_MINUTES").ToString(); break; case QuotaCode.XposRinexAndVRinexEpochs: quotaText = $"[{Lang.Html("IDS_PACKAGES_VIEW_DF_UNIT_EPOCHS_LABEL")}]"; break; } return quotaText; } }
@foreach (var subscription in Model.Item1) { /* Single Subscription item */
@* Title *@
@subscription.PackageName @if (subscription.ArticleConsumptionLimit > 0) { @FormatDuration(subscription.ArticleConsumptionLimit, "IDS_SUBSCRIPTIONS_MOBILE_UNIT_CONSUMPTION_HOURS", subscription.QuotaCode) } else { @Lang.Html("IDS_SUBSCRIPTIONS_MOBILE_VIEW_DF_UNLIMITED") }
@* Sub title *@
@subscription.SubscriptionId
@* Article No *@ @* Status *@
@Lang.Html("IDS_PACKAGES_VIEW_DF_LIFETIME_LABEL")
@* Start Date *@ @* Renewal Date *@
@if (subscription.SubscriptionConsumptionLimit > 0) {
@Lang.Html(subscription.QuotaCode == QuotaCode.ConnectionTime ? "IDS_SUBSCRIPTIONS_VIEW_CONSUMPTION_RTK_CHART" : "IDS_SUBSCRIPTIONS_VIEW_CONSUMPTION_XPOS_RINEX_CHART")
@* Total *@ @* Consumed *@ @* Remaining *@ if (subscription.Status != SubscriptionStatus.Pending) { var usagePercentage = 1.0 - (double) (subscription.SubscriptionConsumptionLimit - subscription.Remaining) / subscription.SubscriptionConsumptionLimit; if (usagePercentage <= 0) { usagePercentage = 1; }
1 ? 1.0 : usagePercentage)">
@(subscription.QuotaCode == QuotaCode.ConnectionTime ? FormatDurationToHoursMinutes(0) : FormatEpochs(0))
@if (subscription.Remaining < 1) { @Lang.Html(subscription.QuotaCode == QuotaCode.ConnectionTime ? "IDS_SUBSCRIPTIONS_VIEW_ALL_HOURS_CONSUMED" : "IDS_SUBSCRIPTIONS_VIEW_ALL_EPOCHS_CONSUMED") } else { @(subscription.QuotaCode == QuotaCode.ConnectionTime ? $"{FormatDurationToHoursMinutes(subscription.Remaining)} {Lang.Raw("IDS_SUBSCRIPTIONS_MOBILE_VIEW_DF_REMAINING_LABEL")}" : $"{subscription.Remaining} {Lang.Raw("IDS_PACKAGES_VIEW_DF_UNIT_EPOCHS_LABEL")} {Lang.Raw("IDS_SUBSCRIPTIONS_MOBILE_VIEW_DF_REMAINING_LABEL")}") }
@(subscription.QuotaCode == QuotaCode.ConnectionTime ? FormatDurationToHoursMinutes(subscription.SubscriptionConsumptionLimit) : FormatEpochs(subscription.SubscriptionConsumptionLimit))
} } @if (subscription.InstallationQuotaHistory != null && subscription.InstallationQuotaHistory.Count > 0) {
@{ var installationQuotaHistory = subscription.InstallationQuotaHistory .Select(x => x.Value.Last()) .OrderByDescending(x => x.ConsumptionQuota); foreach (var consumption in installationQuotaHistory) { if (consumption.Id > 0) { } } }
@Lang.Html("IDS_SUBSCRIPTIONS_CONSUMPTION_GRID_COLUMN_HEADER_COUNTRY_FIELD_NAME") @Lang.Html("IDS_SUBSCRIPTIONS_PROGRESSBAR_CONSUMPTION_LABEL")
@GetQuotaTextByCode(subscription.QuotaCode)
@consumption.RegionName @(subscription.QuotaCode == QuotaCode.ConnectionTime ? FormatDurationToHoursMinutes(consumption.ConsumptionQuota) : consumption.ConsumptionQuota.ToString())

}
@if (subscription.RegionsIds.Length > 0) { var regions = subscription.AllRegions.Where(s => subscription.RegionsIds.Contains(s.Item2.Id)).Select(x => x.Item2.Name).ToList(); if (regions.Count > 0) {
@Lang.Html("IDS_MOBILE_VIEW_REGIONAL_RESTRICTION")
foreach (var reg in regions) { } } }
}