private async void syncCustomer() { var serverDb = new ServerDatabaseService(); //get new customers from server, then compares to the local list later on List <Models.Customer> CustomerListToList = new List <Models.Customer>(); Models.Customer temp; foreach (Services.Customer customerItem in CustomerList) { temp = new Models.Customer(); temp.CustomerId = customerItem.CustomerId; temp.Name = customerItem.Name; temp.Address = customerItem.Address; temp.Phone = customerItem.Phone; CustomerListToList.Add(temp); } var fetchedCustomers = await serverDb.getAllCustomers(); if (fetchedCustomers != null) { //compare with local List <Models.Customer> fetchedData = new List <Models.Customer>(fetchedCustomers); List <Models.Customer> newData = fetchedData.Except <Models.Customer>(CustomerListToList).ToList(); List <Models.Customer> deletedData = CustomerListToList.Except <Models.Customer>(fetchedData).ToList(); if (newData != null) { //insert new data to local db 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); } } loadCustomers(); } }
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); } } } } }
/* Function: funcLogin * input: username and password * This function performs validation of user and password with the database * if the login credential correct, this method leads to showing sales screen * otherwise, it is still in login page */ private async void funcLogin(string username, string password) { if (username == "warehouse" && password == "warehouse") { var serverDb = new ServerDatabaseService(); try { var deleteLocalSalesLines = await salesLineDb.DeleteAll(); var deleteLocalSales = await salesDb.DeleteAll(); var deleteLocalCustomer = await customerDb.DeleteAll(); var deleteLocalItem = await itemDb.DeleteAll(); var allSales = await serverDb.getAllSales(); var allSalesLines = await serverDb.getAllSalesLines(); var allCustomer = await serverDb.getAllCustomers(); var allItem = await serverDb.getAllItems(); await salesDb.InsertAllSales(allSales); await salesLineDb.InsertSalesLines(allSalesLines); await customerDb.InsertAllCustomers(allCustomer); await itemDb.InsertItems(allItem); //go to shipment view ShowViewModel <ShipmentViewModel>(); Close(this); } catch (Exception e) { await dialog.Show(e.Message, "Error"); } } else { //integrate with server database to check username and password var serverDb = new ServerDatabaseService(); int isLogged = await serverDb.checkLogin(username, password); if (isLogged == 1) { loggingIn(); } else if (isLogged == 0) { //login fail, send notification to user await dialog.Show("Username or password is incorrect. Please try again.", "Login Failed"); } else if (isLogged == 3) { //network error await dialog.Show("Please check your network and try again later", "Network Error"); } } }