using FLY.Thick.Base.Server;
using FlyADBase;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace FLY.Thick.FilmCasting.UI.Server
{
    /// <summary>
    /// WdSetup.xaml 的交互逻辑
    /// </summary>
    public partial class WdSetup : Window
    {
        WdSetupVm viewModel;
        public WdSetup()
        {
            InitializeComponent();
        }
        public void Init(SysParam sysParam,FlyAD7 flyAd, InitParam initParam) 
        {
            viewModel = new WdSetupVm();
            viewModel.Init(sysParam, flyAd, initParam);
            this.DataContext = viewModel;
        }
    }
    public class WdSetupVm : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public string Addr { get; set; }
        public string FlyAdAddr { get; set; }
        
        public int DbKeepMonth { get; set; }
        public string DbDirPath { get; set; }


        public RelayCommand OkCmd { get; private set; }

        SysParam sysParam;
        FlyAD7 flyAd;
        InitParam initParam;
        public WdSetupVm() 
        {
            OkCmd = new RelayCommand(Ok);
        }



        public void Init(SysParam sysParam, FlyAD7 flyAd, InitParam initParam) 
        {
            this.sysParam = sysParam;
            this.flyAd = flyAd;
            this.initParam = initParam;
            Addr = sysParam.Addr;
            FlyAdAddr = flyAd.Addr;

            DbKeepMonth = initParam.DBKeepMonth;
            if (DbKeepMonth > 0 && DbKeepMonth < 12)
                DbKeepMonth = 12;

            DbDirPath = initParam.DbDirPath;
        }

        private void Ok()
        {

            if (DbKeepMonth>0 && DbKeepMonth < 12) 
            {
                if (MessageBox.Show($"数据库容量 最小值为12个月", "提示") == MessageBoxResult.No)
                {
                    DbKeepMonth = 12;
                    return;
                }
            }

            if (MessageBox.Show($"程序必须重启才能执行新的参数, 是否重启?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
            {
                return;
            }

            sysParam.Addr = Addr;
            sysParam.Save();

            flyAd.Addr = FlyAdAddr;
            flyAd.Save();

            initParam.DbDirPath = DbDirPath;
            initParam.DBKeepMonth = DbKeepMonth;

            System.Environment.CurrentDirectory = "../";
            AppHelper.AppJustOne.Restart();
        }
    }
}