using System.Collections.Specialized;
using System.Windows.Input;

namespace ZadaniaWPF.ModelWidoku
{
    public class ZadaniaZapis
    {
        //private Model.Zadania modelZapis;
        Model.DyspozytorPoleceńDlaZadań szynaPoleceńModelu;

        public ZadaniaZapis(Model.DyspozytorPoleceńDlaZadań szynaPoleceńModelu)
        {
            //this.modelZapis = modelZapis;
            this.szynaPoleceńModelu = szynaPoleceńModelu;
        }

        private ICommand usuńZadanie;

        public ICommand UsuńZadanie
        {
            get
            {
                if (usuńZadanie == null)
                    usuńZadanie = new RelayCommand(
                        o =>
                        {
                            int idZadania = (int)o;
                            //modelZapis.UsuńZadanie(idZadania);
                            szynaPoleceńModelu.Send(new Model.PolecenieUsunięciaZadania() { IdZadania = idZadania });
                        },
                        o =>
                        {
                            return o != null;
                        });
                return usuńZadanie;
            }
        }

        private ICommand dodajZadanie;

        public ICommand DodajZadanie
        {
            get
            {
                if (dodajZadanie == null)
                    dodajZadanie = new RelayCommand(
                        o =>
                        {
                            Zadanie zadanie = o as Zadanie;
                            //if (zadanie != null) modelZapis.DodajZadanie(zadanie.GetModel();
                            if (zadanie != null) szynaPoleceńModelu.Send(new Model.PolecenieDodaniaZadania() { Zadanie = zadanie.GetModel() });
                        },
                        o =>
                        {
                            return (o as Zadanie) != null;
                        });
                return dodajZadanie;
            }
        }

        private ICommand sortujZadania;

        public ICommand SortujZadania
        {
            get
            {
                if (sortujZadania == null)
                    sortujZadania = new RelayCommand(
                        o =>
                        {
                            bool porównywaniePriorytetówCzyPlanowanychTerminówRealizacji =
                                bool.Parse((string)o);
                            //modelZapis.SortujZadania(porównywaniePriorytetówCzyPlanowanychTerminówRealizacji);
                            szynaPoleceńModelu.Send(new Model.PolecenieSortowaniaZadań() { PorównywaniePriorytetówCzyPlanowanychTerminówRealizacji = porównywaniePriorytetówCzyPlanowanychTerminówRealizacji });
                        });
                return sortujZadania;
            }
        }
    }
}