using Esoft.Pages;
using Esoft;
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
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.Navigation;
using System.Windows.Shapes;

namespace Esoft.Pages
{
    /// <summary>
    /// Логика взаимодействия для TaskList.xaml
    /// </summary>
    public partial class TaskList : System.Windows.Controls.Page
    {
        private user6Entities _context = new user6Entities();
        //private List<string> listUsers = new List<string>();
        public TaskList()
        {
            InitializeComponent();

            CmbStatusSort.ItemsSource = Status.FillStatus();
            //CmbExecutorSort.ItemsSource = user6Entities.GetContext().Executor.ToList();


            DGTasks.ItemsSource = user6Entities.GetContext().Task.ToList();

            //foreach (var user in _context.User.ToList())
            //{
            //    listUsers.Add(user.getFamilia());
            //}
            //CmbExecutorSort.ItemsSource = listUsers;

        }

        private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AddEditPage(null));
        }

        private void BtnEdit_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new AddEditPage((sender as Button).DataContext as Task));
        }

        private void BtnDelTask_Click(object sender, RoutedEventArgs e)
        {
            var taskIsForRemoving = DGTasks.SelectedItems.Cast<Task>().ToList();
            if (MessageBox.Show($"Вы точно хотите удалить выбранные задачи?",
                "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                try
                {
                    user6Entities.GetContext().Task.RemoveRange(taskIsForRemoving);
                    user6Entities.GetContext().SaveChanges();
                    MessageBox.Show("Данные удалены");
                    DGTasks.ItemsSource = user6Entities.GetContext().Task.ToList();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
            }
        }

        //сортировка по названию
        private void TBoxSearch_TextChanged(object sender, TextChangedEventArgs e)
        {
            UpdateTasks();
        }

        //Очистка фильтров
        private void ClearFilters_Click(object sender, RoutedEventArgs e)
        {
            //CmbExecutorSort.SelectedIndex = -1;
            CmbStatusSort.SelectedIndex = -1;
            TBoxSearch.Clear();
        }
        private void UpdateTasks()
        {
            var searchText = TBoxSearch.Text.ToLower();
            var tasks = user6Entities.GetContext().Task.ToList();

            //сортировка по статусу
            //if (CmbStatusSort.SelectedIndex == -1 || CmbStatusSort.Text == null)
            //    DGTasks.ItemsSource = tasks.OrderBy(p => p.Status).ToList();

            //сортировка по поиску
            DGTasks.ItemsSource = tasks.Where(p => p.Title.ToLower().Contains(searchText)
            || p.Executor.User.MiddleName.ToLower().Contains(searchText)).ToList();

        }

        //Сортировка по статусу
        private void CmbStatusSort_LostFocus(object sender, RoutedEventArgs e)
        {
            var tasks = user6Entities.GetContext().Task.ToList();
            if (CmbStatusSort.SelectedIndex != -1)
                DGTasks.ItemsSource = tasks.Where(p => p.Status == CmbStatusSort.Text).ToList();
            if (CmbStatusSort.SelectedIndex == -1 || CmbStatusSort.Text == null)
                DGTasks.ItemsSource = tasks.OrderBy(p => p.Status).ToList();
        }
        private void CmbStatusSort_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            UpdateTasks();
        }
    }
}
