281 lines
9.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gehGassiApp.Core.Common
{
/// <summary>
/// Hilfskonstanten für das Projekt
/// </summary>
public static class Constants
{
#region Navigation
/// <summary>
/// Gibt an ob bei einem Seitenwechsel dieser animiert stattfinden soll, oder nicht
/// </summary>
public static bool AnimateNavigation = false;
#endregion
#region DetailViews
/// <summary>
/// Maximale Höhe des Bildes in einer Sliding-View
/// </summary>
public static double SlidingMaxImageHeight = 400;
/// <summary>
/// Minimale Höhe des Bildes in einer Sliding-View
/// </summary>
public static double SlidingMinImageHeight = 0;
#endregion
#region Lists
/// <summary>
/// Wie viele Items sollen in Listen auf einmal geladen werden - Standard
/// </summary>
public const int ListPageSizeDefault = 20;
/// <summary>
/// Wie viele Items sollen in Listen auf einmal geladen werden - wenige Daten
/// </summary>
public const int ListPageSizeSmall = 10;
/// <summary>
/// Wie viele Items sollen in Listen auf einmal geladen werden - viele Daten
/// </summary>
public const int ListPageSizeBig = 50;
#endregion
#region Delays
/// <summary>
/// Delay für den loading-Screen, damit man das Logo des Sponsors sieht
/// </summary>
public static TimeSpan LoadingDelay = TimeSpan.FromSeconds(3);
/// <summary>
/// Delay für die Abfrage des Online-Status
/// </summary>
public static TimeSpan CheckOnlineTokenDelay = TimeSpan.FromSeconds(30);
/// <summary>
/// Delay für die Abfrage des Refreshtokens
/// </summary>
public static TimeSpan RefreshTokenDelay = TimeSpan.FromMinutes(2);
/// <summary>
/// Einstellung als Abzug für die Gültigkeit eines Accesstokens für dessen Prüfung in Minuten
/// Es wird geprüft ob die Gültiglkeit des Accesstokens Jetzt-Wert überschreitet.
/// Wenn ja, sollte ein neues geholt werden. Gilt ein AccessToken z.B. 60 Minuten, sollte bei 55 Minuten ein neues geholt werden.
/// </summary>
public static int AccessTokenExpiresModifier = 20;
/// <summary>
/// Delay für die Synchronisierung
/// </summary>
public static TimeSpan SyncDelay = TimeSpan.FromMinutes(2);
/// <summary>
/// Delay für die Systemnachrichten
/// </summary>
public static TimeSpan SystemMessageDelay = TimeSpan.FromMinutes(2);
/// <summary>
/// Delay für Prüfung SignalR
/// </summary>
public static TimeSpan SignalRDelay = TimeSpan.FromMinutes(1);
/// <summary>
/// Delay für das Prüfen ob der Server erreichbar ist.
/// Je länger, desto weniger oft wird dies durchgeführt
/// </summary>
public static int OnlineCheckDelay = 15;
/// <summary>
/// Delay für die prüfung auf eine neue App-Version
/// </summary>
public static TimeSpan AppVersionDelay = TimeSpan.FromMinutes(60);
#if ANDROID
/// <summary>
/// Delay für Animationen beim Laden einer Seite mit Listen
/// </summary>
public static TimeSpan AnimationDelayList = TimeSpan.FromMilliseconds(350);
/// <summary>
/// Delay für Animationen beim Laden einer Seite mit Details
/// </summary>
public static TimeSpan AnimationDelayDetails = TimeSpan.FromMilliseconds(350);
#endif
#if IOS
/// <summary>
/// Delay für Animationen beim Laden einer Seite mit Listen
/// </summary>
public static TimeSpan AnimationDelayList = TimeSpan.FromMilliseconds(50);
/// <summary>
/// Delay für Animationen beim Laden einer Seite mit Details
/// </summary>
public static TimeSpan AnimationDelayDetails = TimeSpan.FromMilliseconds(50);
#endif
#endregion
#region Timeouts
/// <summary>
/// Timeout für die Prüfung ab online oder nicht
/// </summary>
public static TimeSpan IsConnectedTimeout = TimeSpan.FromSeconds(10);
/// <summary>
/// Timeout für das Anlegen von Daten
/// </summary>
public static TimeSpan CreateTimeout = TimeSpan.FromSeconds(30);
/// <summary>
/// Timeout für das abrufen von Listen
/// </summary>
public static TimeSpan ListTimeout = TimeSpan.FromSeconds(15);
/// <summary>
/// Timeout für das abrufen von Refreshtokens
/// </summary>
public static TimeSpan RefreshTokenTimeout = TimeSpan.FromSeconds(30);
/// <summary>
/// Timeout für das Abrufen von Bannern
/// </summary>
public static TimeSpan BannerTimeout = TimeSpan.FromSeconds(15);
/// <summary>
/// Timeout für die Prüfung ab online oder nicht
/// </summary>
public static TimeSpan PushPullTimeout = TimeSpan.FromSeconds(45);
/// <summary>
/// Timeout für die Abfrage von Echtzeit GPS-Daten
/// </summary>
public static TimeSpan GpsRealtimeTimout = TimeSpan.FromSeconds(5);
/// <summary>
/// Gibt an wie lange eine Location gecached bleiben soll
/// </summary>
public static TimeSpan LocationCacheTimeout = TimeSpan.FromSeconds(15);
/// <summary>
/// Session-Timeout für die MangoPay-Zahlungs-Session
/// </summary>
public static TimeSpan MangoPaySessionTimeout = TimeSpan.FromMinutes(20);
#endregion
#region API Kommunikation
public const string HasHeader = "ggApp";
public const string HasHeaderValue = "{FCBF0361-E7C3-4267-A3F1-8FE1092B8696}";
#endregion
#region External Login
public const string ExternalAuth_CallbackUrl = "gehgassiapp://";
public const string ExternalAuth_Provider_Google = "Google";
public const string ExternalAuth_Provider_Apple = "Apple";
#endregion
#region Pushnotifications
public const string Pushnotifications_Channel_General = "gehgassihub";
public const string Pushnotifications_Channel_Important = "gehgassipush.important";
#endregion
#region Text-Seiten
public const string PageTerms = "TAC";
public const string PageFAQ = "FAQ";
public const string PageImprint = "IMPRINT";
public const string PagePrivacy = "PRIVACY";
public const string PagePublicRequestPrice = "PUBLICREQUESTPRICE";
public const string PageTermsMangoPay = "TACMANGO";
public const string PageCompetitionWalkerMonthly = "CWM";
public const string PageCompetitioOwnerYearly = "COY";
#endregion
#region Favoriten
public const string FavouriteCategory_Advertisement = "Advertisement";
public const string FavouriteCategory_Partner = "Listing";
public const string FavouriteCategory_Walker = "Walker";
public const string FavouriteCategory_Dog = "Dog";
#endregion
#region localPushNorifications
public const int LocalPush_Walk_ToStart = 1000;
public const int LocalPush_Walk_ToComplete = 2000;
public const int LocalPush_RemoveOutdated_Minutes = 1440;
public const int LocalPush_NotificationExists_Cancel_Minutes = 5;
public const int LocalPush_AddCompleteReminder_Cancel_Minutes = 5;
public const int LocalPush_AddCompleteReminder_Notify_Minutes = 60;
#endregion
#region AppVersion - Updates
/// <summary>
/// Link zum AppStore für Android
/// </summary>
public const string StoreUrl_Android = "https://play.google.com/store/apps/details?id=com.gehgassi.gehgassi";
/// <summary>
/// Link zum AppStore für IOS
/// </summary>
public const string StoreUrl_iOS = "https://apps.apple.com/at/app/gehgassi/id1662116305";
/// <summary>
/// Wie lange soll die Anzeige, dass ein neues Update verfügbar ist in der Snackbar angezeigt werden?
/// </summary>
public static TimeSpan ShowUpdateAvailableDelay = TimeSpan.FromSeconds(20);
#endregion
#region Subscriptions
/// <summary>
/// Wie viele öffentliche Anfragen bein Hundebesitzer maximal ohne Abo erstellen kann
/// </summary>
public const int Subscription_Max_PublicWalkRequests = 3;
/// <summary>
/// Prefix für die Subscription-Codes für Hundebesitzer
/// </summary>
public const string Subscription_Owner_Prefix = "do_";
/// <summary>
/// Code für die Subscription für Hundebesitzer - 1 Jahr
/// </summary>
public const string Subscription_Owner_Year = "do_oneyear";
/// <summary>
/// Code für die Subscription für Hundebesitzer - 1 Monat
/// </summary>
public const string Subscription_Owner_Month = "do_onemonth";
#endregion
}
}