public async void syncSales(string docno, ObservableCollection <SalesLineTable> SalesLineTableInsert) { var salesToBeTransferred = await salesDb.GetNotTransferredSales(); var serverDb = new ServerDatabaseService(); var result = await serverDb.insertSales(salesToBeTransferred); if (result == 1) { //continue by inserting sales lines var sltresult = await serverDb.insertSalesLines(SalesLineTableInsert); if (sltresult == 1) { var updateresult = await salesDb.UpdateTransferred(docno); } else if (sltresult == 0) { await dialog.Show("Insert Sales Lines to server database failed", "Insert to Server Failed"); } } else { await dialog.Show("Insert Sales to server database failed", "Insert to Server Failed"); } }
public async void loggingIn() { //set globalvars, request detail from database, load previous transactions (sales and salesline) done by salesman var serverDb = new ServerDatabaseService(); try { Models.Salesman tmp = await serverDb.getDetail(Username); if (tmp != null) { var mySales = await serverDb.getMySales(tmp.SalesmanId); ISharedPreferences mysettings = Application.Context.GetSharedPreferences("mysetting", FileCreationMode.Private); var myExistingSales = await salesDb.GetAllSalesWhere(tmp.SalesmanId); List <Models.SalesTable> mySalesToBeAdded; if (myExistingSales != null) { mySalesToBeAdded = mySales.Except(myExistingSales.ToList()).ToList(); } else { mySalesToBeAdded = new List <Models.SalesTable>(); } if (mySalesToBeAdded != null) { await salesDb.InsertAllSales(new ObservableCollection <Models.SalesTable>((mySalesToBeAdded.Select(x => { x.Transferred(); return(x); })).ToList())); } var listOfDocNo = mySalesToBeAdded.Select(x => x.DocumentNo).ToList(); var mySalesLines = await serverDb.getMySalesLines(tmp.SalesmanId); var mySalesLinesToBeAdded = mySalesLines.Where(x => listOfDocNo.Contains(x.DocumentNo)).ToList(); if (mySalesLinesToBeAdded != null) { await salesLineDb.InsertSalesLines(new ObservableCollection <Models.SalesLineTable>(mySalesLinesToBeAdded)); } GlobalVars.myDetail = new Models.Salesman(tmp.SalesmanId, tmp.Name, tmp.Address, tmp.Phone, tmp.Username); ShowViewModel <PromotionViewModel>(); Close(this); } } catch (Exception e) { await dialog.Show(e.Message, "Error"); } }
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(); } }
private async void downloadItemList() { var serverDb = new ServerDatabaseService(); List <Models.Item> itemList = new List <Models.Item>(); if (ItemCatalogue == null) { ItemCatalogue = new ObservableCollection <SalesItemSelection>(); } Models.Item temp; foreach (SalesItemSelection item in ItemCatalogue) { temp = new Models.Item(item.ItemId, item.Name, item.Price, item.UnitMeasurement, item.Barcode); itemList.Add(temp); } var fetchedItem = await serverDb.getAllItems(); if (fetchedItem != null) { //compare with local List <Models.Item> fetchedData = new List <Models.Item>(fetchedItem); List <Models.Item> newData = fetchedData.Except(itemList).ToList(); List <Models.Item> deletedData = itemList.Except(fetchedData).ToList(); if (newData != null) { //insert new data to local db await itemDb.InsertItems(new ObservableCollection <Models.Item>(newData)); } if (deletedData != null) { //delete deleted data in local db foreach (Models.Item data in deletedData) { await itemDb.DeleteItem(data); } } loadItemCatalogue(); } }
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); } } } } }
public async Task syncSales() { var serverDb = new ServerDatabaseService(); var salesToBeTransferred = await salesDb.GetNotTransferredSales(); if (salesToBeTransferred.Count() > 0) { var result = await serverDb.insertSales(salesToBeTransferred); if (result == 1) { //continue by inserting sales lines foreach (SalesTable x in salesToBeTransferred) { var saleslines = await salesLineDb.GetAllSalesLinesWhere(x.DocumentNo); var sltresult = await serverDb.insertSalesLines(saleslines); if (sltresult == 1) { var updateresult = await salesDb.UpdateTransferred(x.DocumentNo); x.Transferred(); } else if (sltresult == 0) { await dialog.Show("Insert Sales Lines to server database failed", "Insert to Server Failed"); } } } else { await dialog.Show("There is something wrong with uploading sales to the server", "Upload Failed"); } } //get deleted data from server var fetchedData = await serverDb.getMySales(GlobalVars.myDetail.SalesmanId); if (fetchedData != null) { var mysales = await salesDb.GetAllSalesWhere(GlobalVars.myDetail.SalesmanId); List <SalesTable> mySalesList = new List <SalesTable>(mysales); var filteredData = mySalesList.Where(x => x.isTransferred == true).ToList(); var deletedData = filteredData.Except(fetchedData.ToList()).ToList(); if (deletedData != null) { if (deletedData.Count() > 0) { try { foreach (SalesTable deletedSales in deletedData) { await salesLineDb.DeleteSalesLineWhere(deletedSales.DocumentNo); await salesDb.DeleteSales(deletedSales); } } catch (System.Exception e) { await dialog.Show(e.Message, "Delete Failed"); } } } } await loadSales(); }
/* 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"); } } }
public PromotionViewModel(IPromotionDatabase ipd, ISalesDatabase isd, ISalesLineDatabase isld, IDialogService ids) { promotionDb = ipd; salesDb = isd; salesLineDb = isld; dialog = ids; Task.Run(async() => { var initTemp = await promotionDb.GetAllPromotions(); PromotionList = new ObservableCollection <PromotionItem>(); foreach (Models.Promotion promotion in initTemp) { PromotionList.Add(new PromotionItem(promotion.PromotionId, promotion.PromotionTitle, promotion.PromotionDetail, promotion.PeriodStart, promotion.PeriodEnd, promotion.ImageName)); } RaisePropertyChanged(() => PromotionList); if (CrossConnectivity.Current.IsConnected) { if (await CrossConnectivity.Current.IsRemoteReachable(Services.ServerDatabaseApi.ipAddress, int.Parse(ServerDatabaseApi.port))) { var serverDb = new ServerDatabaseService(); var deleteLocal = await promotionDb.DeleteAll(); var downloadFromServer = await serverDb.getAllPromotions(); var insertToLocal = promotionDb.InsertAll(downloadFromServer); var PromotionTemp = downloadFromServer; PromotionList = new ObservableCollection <PromotionItem>(); foreach (Models.Promotion promotion in PromotionTemp) { //var x = new PromotionItem(promotion.PromotionId, promotion.PromotionTitle, promotion.PromotionDetail, // promotion.PeriodStart, promotion.PeriodEnd, promotion.ImageName); PromotionList.Add(new PromotionItem(promotion.PromotionId, promotion.PromotionTitle, promotion.PromotionDetail, promotion.PeriodStart, promotion.PeriodEnd, promotion.ImageName)); /*if (await rootFolder.CheckExistsAsync(promotion.ImageName) == ExistenceCheckResult.NotFound) * { * //download * byte[] buffer = await client.GetByteArrayAsync(x.ImageURL); * temp = await rootFolder.CreateFileAsync(x.ImageName, CreationCollisionOption.FailIfExists); * }*/ } RaisePropertyChanged(() => PromotionList); //download and save /*HttpClient client = new HttpClient(); * IFolder rootFolder = FileSystem.Current.LocalStorage; * IFile temp; * foreach (Models.Promotion promotion in PromotionTemp) * { * if (await rootFolder.CheckExistsAsync(promotion.ImageName) == ExistenceCheckResult.NotFound) * { * var x = new PromotionItem(promotion.PromotionId, promotion.PromotionTitle, promotion.PromotionDetail, * promotion.PeriodStart, promotion.PeriodEnd, promotion.ImageName); * //download * byte[] buffer = await client.GetByteArrayAsync(x.ImageURL); * temp = await rootFolder.CreateFileAsync(promotion.ImageName, CreationCollisionOption.FailIfExists); * } * }*/ } } }); }