Ejemplo n.º 1
0
        public async void AddProduct(string productCode)
        {
            try
            {
                if (!await DataAccessHandler.DataAccess.IsValidKey(productCode))
                {
                    await DisplayAlert("Produktcode ungültiger", "Es wurde ein ungültiger Produktcode eingegeben. Bitte anderen code eingeben.", "Neue Eingabe");
                    return;
                }
                localFileSystem file = new localFileSystem();
                String userPath = file.AdjustPath(file.GetUser().user_Email);

                //Gets the Serveradress 
                DataAccessHandler accessHandler = new DataAccessHandler();
                string serverAdress = accessHandler.ServerAdress;

                IFtpClient client = DependencyService.Get<IFtpClient>();
                Product product = await DataAccessHandler.DataAccess.GetProductByKey(productCode);

                List<Product> listUserProducts = await DataAccessHandler.DataAccess.GetUserProducts(file.GetUser());
                foreach (var userProducts in listUserProducts)
                {
                    if (userProducts.product_ID == product.product_ID)
                    {
                        await DisplayAlert("Produkt bereits vorhanden!", "Sie besitzen dieses Produkt bereits", "OK");
                        return;
                    }
                }
                //Loads the List<PContent> of the Product from the server
                List<PContent> listPContents = await DataAccessHandler.DataAccess.GetPContent(product.product_ID);
                //Loads the List<PContent> of the Product from the the User-Folder
                List<PContent> newlistPContents = file.loadContentList(userPath);

                foreach (PContent pcontent in listPContents)
                {                    
                    //stops if the pcontent is empty
                    if (pcontent.content_ID == 0) break;
                    //adds new Pcontent if necessary
                    while (newlistPContents.Count <= pcontent.content_ID)
                    {
                        newlistPContents.Add(null);
                    }
                    //updates PContent
                    newlistPContents[pcontent.content_ID] = pcontent;
                    if (pcontent.content_Kind!=0) {
                        client.DownloadFile(@"Thumbnail/" + pcontent.content_ID + ".png",
                        DependencyService.Get<ISaveAndLoad>().Getpath(file.GetUser().user_Email + @"/Thumbnail/") + pcontent.content_ID + ".png", serverAdress, accessHandler.FtpName,
                        accessHandler.FtpPassword);
                    }

                    List<string> contentPath =
                        await DataAccessHandler.DataAccess.GetFileServerPath(pcontent.content_ID);                   

                    //creates a new p folder for the content_Kind if not exists
                    DependencyService.Get<ISaveAndLoad>().CreateFolder(DependencyService.Get<ISaveAndLoad>().PathCombine(
                    DependencyService.Get<ISaveAndLoad>().Getpath(userPath), "p" + pcontent.content_ID));

                    foreach (var path in contentPath)
                    {
                        if (pcontent.content_ID == 0) break;
                        //Download for each PContent its Files
                        DependencyService.Get<ISaveAndLoad>().CreateFolder(userPath + @"/p" + pcontent.content_ID);
                        client.DownloadFile(path,
                            DependencyService.Get<ISaveAndLoad>().Getpath(file.GetUser().user_Email) + @"/p" +
                            pcontent.content_ID + @"/" + Path.GetFileName(path), serverAdress, accessHandler.FtpName,
                            accessHandler.FtpPassword);
                    }
                }
                //Adds the Product to the Product-File from the User
                List<Product> newUserProducts = file.LoadProductList();
                //newUserProducts.Add(product);
                file.SaveModelsLocal(userPath, newUserProducts, newlistPContents);
                //Adds the Product to the User in the Database
                DataAccessHandler.DataAccess.AddProductToUser(product.product_ID, file.GetUser());
                DataAccessHandler.DataAccess.SetProductKeyInvalid(productCode);
                await DisplayAlert("Produkt aktiviert!", "Das Produkt wurde erfolgreiche aktiviert!", "OK");
                await Navigation.PushModalAsync(new NavigationPage(new MainMenuPage(file.GetUser())));
            }
            catch (Exception e)
            {
                Debug.WriteLine("Fehler beim hinzufügen von Produkt: " + e);
                await DisplayAlert("Fehler beim Downloaden", "Es gab einen Fehler beim Downloaden, bitte erneut versuchen", "OK");
            }
        }
Ejemplo n.º 2
0
        public async Task DownloadInitialContent(User user)
        {
            try
            {
                localFileSystem files = new localFileSystem();
                String userPath = files.AdjustPath(user.user_Email);
                //A newly created User cant have a folder with the same name in the folder so no check must be implemented
                files.CreateInitalFolders(userPath);

                DataAccessHandler accessHandler = new DataAccessHandler();
                string serverAdress = accessHandler.ServerAdress;

                IFtpClient client = DependencyService.Get<IFtpClient>();

                //Download all Products from the database
                List<Product> listAllProducts = await DataAccessHandler.DataAccess.GetAllProducts();
                
                List<PContent> newEmptyContent = new List<PContent>();
                foreach (var productAll in listAllProducts)
                {

                    if (productAll.product_ID == 0) break;
                    //Download Thumbnail in Produkte Folder
                    client.DownloadFile(@"Produkte/" + productAll.product_Thumbnail,
                    DependencyService.Get<ISaveAndLoad>().Getpath(@"Produkte/") + productAll.product_Thumbnail, serverAdress, accessHandler.FtpName,
                    accessHandler.FtpPassword);
                }
                files.SaveUser(user);
                files.SaveModelsLocal(userPath, listAllProducts, newEmptyContent);

                //Hier GetALLProducts ansttt nur user products
                List<Product> listUserProducts = await DataAccessHandler.DataAccess.GetUserProducts(user);
                List<PContent> newlistPContents = new List<PContent>();
                foreach (var product in listUserProducts)
                {
                    //loads the PContent from the server
                    List<PContent> listUserPContents =
                        await DataAccessHandler.DataAccess.GetPContent(product.product_ID);

                    if (product.product_ID == 0) break;

                    foreach (var pcontent in listUserPContents)
                    {
                        if (pcontent.content_ID == 0) break;
                        //creates a new p folder if not exists for content_Kind
                        DependencyService.Get<ISaveAndLoad>().CreateFolder(DependencyService.Get<ISaveAndLoad>().PathCombine(
                            DependencyService.Get<ISaveAndLoad>().Getpath(userPath), "p" + pcontent.content_ID));

                        List<string> contentPath = await DataAccessHandler.DataAccess.GetFileServerPath(pcontent.content_ID);
                        foreach (var path in contentPath)
                        {
                            //loads every content from PContent 
                            client.DownloadFile(path,
                            DependencyService.Get<ISaveAndLoad>().Getpath(files.GetUser().user_Email) + @"/p" + pcontent.content_ID + @"/" + Path.GetFileName(path), serverAdress, accessHandler.FtpName,
                            accessHandler.FtpPassword);
                        }

                        while (newlistPContents.Count <= pcontent.content_ID)
                        {
                            newlistPContents.Add(null);
                        }

                        //updates Pcontent
                        newlistPContents[pcontent.content_ID] = pcontent;
                        if (pcontent.content_Kind != 0)
                        {
                            client.DownloadFile(@"Thumbnail/" + pcontent.content_ID + ".png",
                            DependencyService.Get<ISaveAndLoad>().Getpath(files.GetUser().user_Email + @"/Thumbnail/") + pcontent.content_ID + ".png", serverAdress, accessHandler.FtpName,
                            accessHandler.FtpPassword);
                        }
                    }
                }
                //Saves User, Products and PContent XML
                files.SaveUser(user);
                files.SaveModelsLocal(userPath, listAllProducts, newlistPContents);
            }
            catch (Exception e)
            {
                Debug.WriteLine("catched DL Exception: " + e);
                await DisplayAlert("Fehler beim Downloaden", "Es gab einen Fehler beim Downloaden, bitte erneut versuchen", "OK");
            }
        }