using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BodyshopPartner.Utils.Growls;
using BodyshopPartner.Models;
using System.Reflection;

namespace BodyshopPartner.ViewModels
{
    public partial class MainViewModel : BaseViewModel
    {
        public GrowlNotification Growler;
        private System.Timers.Timer _updateCheckTimer = new System.Timers.Timer(60 * 1000 * 60);

        private ObservableCollection<Monitor> _monitoringPaths = new ObservableCollection<Monitor>();
        public ObservableCollection<Monitor> MonitoringPaths
        {
            get { return _monitoringPaths; }
            set { SetProperty(ref _monitoringPaths, value); }
        }

        private ObservableCollection<Bodyshop> _shopData;
        public ObservableCollection<Bodyshop> ShopData
        {
            get { return _shopData; }
            set { SetProperty(ref _shopData, value); }
        }

        private int _progress;
        public int Progress
        {
            get { return _progress; }
            set { SetProperty(ref _progress, value); }
        }

        private bool _indeterminateLoading;
        public bool IndeterminateLoading
        {
            get { return _indeterminateLoading; }
            set { SetProperty(ref _indeterminateLoading, value); }
        }

        private Bodyshop _activeShop;
        public Bodyshop ActiveShop
        {
            get { return _activeShop; }
            set { SetProperty(ref _activeShop, value); Task.Run(async () => await SetActiveBodyshop()); }
        }

        private string _httpServerLog = "";
        public string HttpServerLog
        {
            get { return _httpServerLog; }
            set { SetProperty(ref _httpServerLog, value); }
        }

        private string _appVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        public string AppVersion
        {
            get { return _appVersion; }
            set { SetProperty(ref _appVersion, value); }
        }

        private bool _updateAvailable = false;
        public bool UpdateAvailable
        {
            get { return _updateAvailable; }
            set { SetProperty(ref _updateAvailable, value); }
        }

        private int _updateProgress;
        public int UpdateProgress
        {
            get { return _updateProgress; }
            set { SetProperty(ref _updateProgress, value); }
        }
    }
}
