using System.Threading.Tasks;
using Windows.Storage;

namespace AsystentZakupówUA.Model
{
    public static class Ustawienia
    {
        private const string kluczLimitu = "Limit";
        private const string kluczSumy = "Suma";

        private static ApplicationDataContainer ustawienia
        {
            get
            {
                return ApplicationData.Current.LocalSettings;
            }
        }

        public static void ZapiszStanModelu(SumowanieKwot model)
        {
            ustawienia.Values[kluczLimitu] = model.Limit.ToString();
            ustawienia.Values[kluczSumy] = model.Suma.ToString();
        }

        public static SumowanieKwot OdczytajStanModelu(decimal domyślnyLimit, decimal domyślnaSuma = 0)
        {
            decimal limit = domyślnyLimit, suma = domyślnaSuma;
            if (ustawienia.Values.ContainsKey(kluczLimitu)) limit = decimal.Parse((string)ustawienia.Values[kluczLimitu]);
            if (ustawienia.Values.ContainsKey(kluczSumy)) suma = decimal.Parse((string)ustawienia.Values[kluczSumy]);
            return new SumowanieKwot(limit, suma);
        }

        public static Task ZapiszStanModeluAsync(SumowanieKwot model)
        {
            return Task.Run(
                () =>
                {
                    ZapiszStanModelu(model);
                });
        }

        public static Task<SumowanieKwot> OdczytajStanModeluAsync(decimal domyślnyLimit, decimal domyślnaSuma = 0)
        {
            return Task<SumowanieKwot>.Run(
                () =>
                {
                    return OdczytajStanModelu(domyślnyLimit, domyślnaSuma);
                });
        }
    }
}
