using KlassenBIB;
using Microsoft.Win32;
using SanShared;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SanSystem
{
    class Global
    {
        public static readonly Global instance = new Global();

        const string userroot = "HKEY_CURRENT_USER\\Software";
        const string firmkey = "Cosysda";
        const string subkey = "SanManager";
        const string speicherpfad_to_projekts = "projekte";

        string projektpfad = "18-850";
        
        public string ProjektNummer
        {
            get
            {
                return projektpfad;
            }
            set
            {
                projektpfad = value;
            }
        }

        internal void SetProjekt(Projekt projekt)
        {
            Database.Datenbank.Instance.SaveProjekt();
            this.ProjektNummer = projekt.Nummer;
            Database.Datenbank.Instance.loadedProjekt = null;

            if (!Directory.Exists(Projektpfad)) Directory.CreateDirectory(Projektpfad);
            Database.Datenbank.Instance.InitProjekt(projekt, Projektpfad);
        }

        public string Projektpfad
        {
            get
            {
                return Path.Combine(speicherpfad_to_projekts, projektpfad);
            }
        }
        public ILanguage language = null;

        public static Global Instance
        {
            get
            {
                return instance;
            }
        }

        public void ChangeProjekt(string projektnummer)
        {
            Database.Datenbank.Instance.SaveProjekt();
            this.ProjektNummer = projektnummer;
            Database.Datenbank.Instance.loadedProjekt = null;

            string pfad = Path.Combine(Projektpfad);
            if (!Directory.Exists(pfad)) Directory.CreateDirectory(pfad);
            Database.Datenbank.Instance.LoadProjekt(ProjektNummer, Projektpfad);
        }

        void LadeRegistry()
        {
            
            string keyName = userroot + "\\" + firmkey + "\\" + subkey;

            string lastProjektNummer = "";

            try
            {
                lastProjektNummer = Registry.GetValue(keyName, "LastProjekt", "").ToString();
                ProjektNummer = lastProjektNummer;
            }
            catch
            { }
        }

        void SpeicherInRegistry()
        {
            string keyName = userroot + "\\" + firmkey + "\\" + subkey;
            Registry.SetValue(keyName, "LastProjekt", ProjektNummer);
        }



        public void LoadLanguage()
        {
            language = Language.Language.GetLanguage(Language.BUILTINLANGUAGES.GERMAN);
        }

        public Global()
        {
            LadeRegistry();
        }

        ~Global()
        {
            SpeicherInRegistry();
        }
    }
}
