Exemplo n.º 1
0
        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");
            }
        }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
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);
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        /* 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");
                }
            }
        }
Exemplo n.º 8
0
        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);
                         *  }
                         * }*/
                    }
                }
            });
        }