示例#1
0
        public async Task <bool> SyncAllAsync(bool syncUserSpecific)
        {
            if (!IsInitialized)
            {
                await InitializeAsync();
            }

            Device.BeginInvokeOnMainThread(async() =>
            {
                await ToastService.Show(Resources.AppResources.AppSyncing);
            });


            here :  var taskList = new List <Task <bool> >();

            taskList.Add(UserStore.SyncAsync());
            taskList.Add(CustomerStore.SyncAsync());
            taskList.Add(PartnerCategoryStore.SyncAsync());
            taskList.Add(CheckinStore.SyncAsync());
            taskList.Add(PartnerGradeStore.SyncAsync());
            taskList.Add(PartnerTitleStore.SyncAsync());
            taskList.Add(CurrencyStore.SyncAsync());
            taskList.Add(CountryStore.SyncAsync());
            taskList.Add(SaleOrderStore.SyncAsync());
            taskList.Add(SaleOrderLineStore.SyncAsync());
            taskList.Add(MessageStore.SyncAsync());
            taskList.Add(DocumentStore.SyncAsync());
            taskList.Add(CompanyStore.SyncAsync());
            taskList.Add(AccountTaxStore.SyncAsync());
            taskList.Add(SaddleStore.SyncAsync());
            taskList.Add(ServiceStore.SyncAsync());
            taskList.Add(AccessoryStore.SyncAsync());
            taskList.Add(StateStore.SyncAsync());
            taskList.Add(ContractStore.SyncAsync());

            var successes = await Task.WhenAll(taskList).ConfigureAwait(false);

            if (successes.Any(x => x == false))
            {
                if (await Plugin.Connectivity.CrossConnectivity.Current.IsRemoteReachable("https://www.google.com"))
                {
                    goto here;
                }
            }

            if (syncUserSpecific)
            {
                await ContractStore.GetContractTemplate();

                //Syncs the Delivery Fee api data
                await SaleOrderStore.GetDeliveryFees(true);

                // add stores that are user specific data
                await DocumentStore.OfflineUploadSync();

                await SyncLegalFiles();
            }

            Device.BeginInvokeOnMainThread(async() =>
            {
                await ToastService.Hide();
            });

            return(successes.Any(x => !x)); //if any were a failure.
        }