Exemplo n.º 1
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.º 2
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();
        }