Exemple #1
0
        public async Task downloadCustomers()
        {
            var serverDb         = new ServerDatabaseService();
            var fetchedCustomers = await serverDb.getAllCustomers();

            if (fetchedCustomers != null)
            {
                var countCustomer = await customerDb.Count();

                int insertCustomers;
                if (countCustomer == 0)
                {
                    insertCustomers = await customerDb.InsertAllCustomers(fetchedCustomers);
                }
                else
                {
                    //compare against local
                    var localCustomers = await customerDb.GetAllCustomers();

                    List <Models.Customer> fetchedData = new List <Models.Customer>(fetchedCustomers);
                    List <Models.Customer> newData     = fetchedData.Except <Models.Customer>(localCustomers).ToList();
                    List <Models.Customer> deletedData = localCustomers.Except <Models.Customer>(fetchedData).ToList();
                    if (newData != null)
                    {
                        //insert new data to local db
                        insertCustomers = await customerDb.InsertAllCustomers(new ObservableCollection <Models.Customer>(newData));
                    }
                    if (deletedData != null)
                    {
                        //delete deleted data in local db
                        foreach (Models.Customer data in deletedData)
                        {
                            await customerDb.DeleteCustomer(data);
                        }
                    }
                }
            }
        }