Example #1
0
        private async Task<bool> importCompanies(FuncClasses.FastXML bdb)
        {
            foreach (var company in bdb.GetAllCompanys())
            {
                var newCompany = new Models.CompanyInformation();
                newCompany.CompanyName = company.CompanyName;
                newCompany.GenerateNewID();
                Database.AddCompany(newCompany);
                await Database.ChangeCompany(newCompany);

                var companySettings = new Models.CompanySettings();
                companySettings.SalesTaxID = company.TradeID;
                companySettings.TaxID = company.TaxID;

                companySettings.MainAddress.CompanyName = company.CompanyName;
                companySettings.MainAddress.Addition = company.ToAddress().Addition;
                companySettings.MainAddress.Forename = company.ToAddress().Forname;
                companySettings.MainAddress.Surname = company.ToAddress().Surname;
                companySettings.MainAddress.Title = company.ToAddress().Title;
                companySettings.MainAddress.Salutation = company.ToAddress().Salutation;
                companySettings.MainAddress.Street = company.ToAddress().Street;
                companySettings.MainAddress.HouseNumber = company.ToAddress().No;
                companySettings.MainAddress.Zip = company.ToAddress().ZipCode;
                companySettings.MainAddress.City = company.ToAddress().City;
                companySettings.MainAddress.Country = company.ToAddress().Country;
                await Database.SaveOrUpdateStorageableItem(companySettings);
                Database.SaveOrUpdateSettings(new Utils.KeyValueStore());
            }
            return true;
        }
        private bool Initialize()
        {
            IsFirstLoad = false;
            AdditionalPreviewParsers = new List<Interfaces.DocumentParser>();
            if (String.IsNullOrEmpty(DatabasePath))
                DatabasePath = "Data//";

            if (!Directory.Exists(DatabasePath))
            { 
                try
                {
                    Directory.CreateDirectory(DatabasePath);
                }
                catch (Exception e)
                {
                    logger.Fatal("Could not create data directory", e);
                    return false;
                }
            }
                

            if (!File.Exists(DatabasePath + "Settings.xml"))
            {
                logger.Debug(DatabasePath + "Settings.xml" + " didn't exist -> First load");
                IsFirstLoad = true;
                return false;
            }

            try
            {
                CurrentCompany = new Models.CompanyInformation();
                CurrentCompany.ParseFromXElement(XElement.Parse(File.ReadAllText(DatabasePath + "Settings.xml")).Element("CurrentCompany").Element(CurrentCompany.XElementName));
            }
            catch (Exception e)
            {
                logger.Fatal("Parsing LastCompany failed!", e);
                return false;
            }

            try
            {
                //Orders
                if (!File.Exists(DatabasePath + CurrentCompany.CompanyID + "\\Documents.xml"))
                    using (StreamWriter writer = File.CreateText(DatabasePath + CurrentCompany.CompanyID + "\\Documents.xml"))
                        writer.Write(new XElement(new XElement("Documents")).ToString());
                using (StreamReader reader = File.OpenText(DatabasePath + CurrentCompany.CompanyID + "\\Documents.xml"))
                    DocumentDB = XElement.Load(reader);
                logger.Debug("OrderDB successfully loaded");
            }
            catch (Exception e)
            {
                logger.Fatal("Initializing DocumentDB failed!", e);
                return false;
            }

            try
            {
                // Articles
                if (!File.Exists(DatabasePath + CurrentCompany.CompanyID + "\\Articles.xml"))
                    using (StreamWriter writer = File.CreateText(DatabasePath + CurrentCompany.CompanyID + "\\Articles.xml"))
                        writer.Write(new XElement(new XElement("Articles")).ToString());
                using (StreamReader reader = File.OpenText(DatabasePath + CurrentCompany.CompanyID + "\\Articles.xml"))
                    ArticleDB = XElement.Load(reader);
                logger.Debug("ArticleDB successfully loaded");
            }
            catch (Exception e)
            {
                logger.Fatal("Initializing ArticleDB failed!", e);
                return false;
            }

            try
            {
                // Customers
                if (!File.Exists(DatabasePath + CurrentCompany.CompanyID + "\\Customers.xml"))
                    using (StreamWriter writer = File.CreateText(DatabasePath + CurrentCompany.CompanyID + "\\Customers.xml"))
                        writer.Write(new XElement(new XElement("Customers")).ToString());
                using (StreamReader reader = File.OpenText(DatabasePath + CurrentCompany.CompanyID + "\\Customers.xml"))
                    CustomerDB = XElement.Load(reader);
                logger.Debug("CustomerDB successfully loaded");
            }
            catch (Exception e)
            {
                logger.Fatal("Initializing CustomerDB failed!", e);
                return false;
            }

            try
            {
                // Others
                if (!File.Exists(DatabasePath + CurrentCompany.CompanyID + "\\Others.xml"))
                    using (StreamWriter writer = File.CreateText(DatabasePath + CurrentCompany.CompanyID + "\\Others.xml"))
                        writer.Write(new XElement(new XElement("Settings")).ToString());
                using (StreamReader reader = File.OpenText(DatabasePath + CurrentCompany.CompanyID + "\\Others.xml"))
                    SettingsDB = XElement.Load(reader);
                logger.Debug("SettingsDB successfully loaded");
            }
            catch (Exception e)
            {
                logger.Fatal("Initializing SettingsDB failed!", e);
                return false;
            }

            OtherDBs = new List<XElement>();
            if (RegisteredAdditionalDBs == null)
                RegisteredAdditionalDBs = new List<Interfaces.IXMLStorageable>();
            else
            {
                foreach (var item in RegisteredAdditionalDBs)
                    registerStorageableItem(item, false);
            }
            logger.Info("XDatabase connected");
            return true;
        }
 private IEnumerable<Models.CompanyInformation> getCompanyList()
 {
     logger.Trace("Start getting company list");
     XElement CompanySettings;
     var temp = new ObservableCollection<Models.CompanyInformation>();
     foreach (string dir in System.IO.Directory.GetDirectories(DatabasePath))
     {
         logger.Trace("Parsing " + dir + "\\Others.xml");
         try 
         {
             using (StreamReader reader = File.OpenText(dir + "\\Others.xml"))
                 CompanySettings = XElement.Load(reader);
         }
         catch (Exception e)
         {
             logger.Trace("Error parsing " + dir + "\\Others.xml", e);
             continue;
         }
         var item = new Models.CompanyInformation();
         item.ParseFromXElement(CompanySettings.Element(item.XElementName));
         try { temp.Add(item); }
         catch (Exception e) { logger.Trace("Error creating CompanyInformation", e); }
     }
     logger.Trace("Finished creating company list with " + temp.Count.ToString() + " items");
     return temp;
 }