protected void Application_Start(object sender, EventArgs e) { ThreadPool.SetMinThreads(Environment.ProcessorCount * 2, Environment.ProcessorCount * 10); ThreadPool.SetMaxThreads(Environment.ProcessorCount * 4, Environment.ProcessorCount * 16); // Log LogicCore.Utility.ThirdPartyLog.Log4Net.Initialize(); // Mysql Repository.RepositoryStatic.Init_Mysql(); // Register Singleton Singleton.Register <CryptoFacade>(); Singleton.Register <FootballFixtureDetailConverter>(); Singleton.Register <FootballStandingsDetailConverter>(); Singleton.Register <FootballLeagueDetailConverter>(); Singleton.Register <FootballTeamDetailConverter>(); Singleton.Register <FootballOddsDetailConverter>(); Singleton.Register <FootballPredictionDetailConverter>(); Singleton.Register <FootballVIPFixtureDetailConverter>(); // Register Comparer Singleton.Register <FootballFixtureEqualityComparer>(); // Load Table string tableRootPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"); TableLoader.Init(tableRootPath); }
public override async void OnAppearing(params object[] datas) { IsLoaded = false; while (!await WebApiService.CheckInternetConnection()) { } // Check Exist Latest Version await UpdateChecker.Execute(); // Table Loader TableLoader.Init(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); // Check Language { LocalStorage.Storage.GetValueOrDefault <string>(LocalStorageKey.UserLanguageId, out string userLanguageId); if (userLanguageId == null) { userLanguageId = CultureInfo.CurrentUICulture.Name.Split('-')[0]; if (!CoverageLanguage.CoverageLanguages.ContainsKey(userLanguageId)) { // Default Language : EN userLanguageId = AppConfig.DEFAULT_LANGUAGE; } LocalStorage.Storage.AddOrUpdateValue <string>(LocalStorageKey.UserLanguageId, userLanguageId); } CultureInfo.CurrentCulture = new CultureInfo(userLanguageId); CultureInfo.CurrentUICulture = new CultureInfo(userLanguageId); } // Check Timezone { LocalStorage.Storage.GetValueOrDefault <string>(LocalStorageKey.UserTimeZoneId, out string userTimeZoneId); // Delete ExpiredCachedData if (TimeZoneInfo.Local.Id.Equals(userTimeZoneId)) { await _cacheService.DeleteExpiredCachedDataAsync(); } else { await _cacheService.DeleteAllCachedDataAsync(); } LocalStorage.Storage.AddOrUpdateValue <string>(LocalStorageKey.UserTimeZoneId, TimeZoneInfo.Local.Id); } string serverPubKey = await _webApiService.RequestAsync <string>(new WebRequestContext { SerializeType = SerializeType.MessagePack, MethodType = WebMethodType.GET, BaseUrl = AppConfig.PoseWebBaseUrl, ServiceUrl = AuthProxy.ServiceUrl, SegmentGroup = AuthProxy.P_PUBLISH_KEY, }); if (!string.IsNullOrEmpty(serverPubKey)) { CryptoFacade.Instance.RSA_FromXmlString(serverPubKey); ClientContext.eSignature = CryptoFacade.Instance.GetEncryptedSignature(); ClientContext.eSignatureIV = CryptoFacade.Instance.GetEncryptedSignatureIV(); } // Prepare SingletonPage ShinyHost.Resolve <AppMasterViewModel>(); // Notify Init //await _notificationService.Initialize(); // InAppBilling Item Init bool isBillingSystemInit = false; do { isBillingSystemInit = await ShinyHost.Resolve <InAppBillingService>().InitializeProduct(); if (!isBillingSystemInit) { await MaterialDialog.Instance.AlertAsync(LocalizeString.BillingSystem_Not_Available, LocalizeString.App_Title, LocalizeString.Ok, DialogConfiguration.AppTitleAlterDialogConfiguration); } } while (!isBillingSystemInit); var deviceInfoHelper = DependencyService.Resolve <IDeviceInfoHelper>(); if (!deviceInfoHelper.IsLicensed.HasValue || !deviceInfoHelper.IsLicensed.Value) { await MaterialDialog.Instance.AlertAsync(LocalizeString.Service_Not_Available, LocalizeString.App_Title, LocalizeString.Ok, DialogConfiguration.AppTitleAlterDialogConfiguration); } else if (!await _OAuthService.IsAuthenticatedAndValid() || !await ShinyHost.Resolve <LoginViewModel>().PoseLogin(true)) { await _OAuthService.Logout(); await ShinyHost.Resolve <LoginViewModel>().GuestLogin(); } IsLoaded = true; OnPropertyChanged("IsLoaded"); MessagingCenter.Send(this, "LoadingComplete"); }