using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.IO;
using System.Diagnostics;
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;
using System.Data.SqlClient;
using Xceed.Words.NET;
using Xceed.Document.NET;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using System.Threading;
namespace ZooMail.EmployeeSpravochnik
{
    /// <summary>
    /// Логика взаимодействия для EmployeeSpravochnik.xaml
    /// </summary>
    public partial class EmployeeSpravochnik : Window
    {
        List<Models.ModelEmployee> Employees;
        public string extension = string.Empty;
        private string QR = "";
        public EmployeeSpravochnik()
        {
            InitializeComponent();
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            Employees = (new DBManager()).getEmployeeList();
            dataGridEmployeeSpravichnic.ItemsSource = Employees;
        }
        private void ButtonEdit_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridEmployeeSpravichnic.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран сотрудник для редактирования");
                return;
            }
            var ap = new DBManager().getEmployeeList();
            Models.ModelEmployee modelEmployee = null;
            foreach (var it in ap)
            {
                if (it.ID_Authorization == Employees[selectedIndex].ID_Authorization)
                {
                    modelEmployee = it;
                    break;
                }
            }
            var ce = new EmployeeSpravochnikEdit(modelEmployee);
            ce.ShowDialog();
        }
        private void ButtonAdd_Click(object sender, RoutedEventArgs e)
        {
            var ce = new EmployeeSpravochnikEdit(null);
            ce.ShowDialog();
        }using ZooMail.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Xceed.Words.NET;
using Xceed.Document.NET;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using System.Threading;
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;
using System.Diagnostics;
using System.IO;
using ZooMail.PersonalAccounting;
namespace ZooMail
{
    /// <summary>
    /// Логика взаимодействия для ClientListWindow.xaml
    /// </summary>
    public partial class ClientListWindow : Window
    {
        public ClientListWindow()
        {
            InitializeComponent();
        }
        List<Models.ModelClientDetail> listClient;
        public string extension = string.Empty;
        private void updateData()
        {
            listClient = (new DBManager()).getClientListDetail();
            dataGridClients.ItemsSource = listClient;
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            updateData();
        }
        private void ButtonDetail_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridClients.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран клиент");
                return;
            }
            var ap = new DBManager().getClientList();
            Models.ModelClient modelClient = null;
            foreach (var it in ap)
            {
                if (it.ID_Authorization == listClient[selectedIndex].ID_Authorization)
                {
                    modelClient = it;
                    break;
                }
            }
            var ce = new RegistrationWindow(modelClient, true);
            ce.ShowDialog();
        }using ZooMail.Models;
using System;
using Microsoft.Win32;
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;
using ZooMail.PersonalAccounting;
namespace ZooMail
{
    /// <summary>
    /// Логика взаимодействия для AuthorizationWindow.xaml
    /// </summary>
    public partial class AuthorizationWindow : Window
    {
        public AuthorizationWindow()
        {
            InitializeComponent();
        }
        private void Button_Test_Click(object sender, RoutedEventArgs e)
        {
            Session.currentUser = null;
            var users = new DBManager().getAuthorizationList();
            foreach (var user in users)
            {
                if (user.Login == txtBoxLog.Text && user.Password == txtBoxPas.Password)
                {
                    Session.currentUser = user;
                    PersonalAccountWindow clientPersonal = new PersonalAccountWindow();
                    clientPersonal.Show();
                    if (Session.mainWindow != null)
                    {
                        Session.mainWindow.Close();
                    }
                    Close();
                    return;
                }
            }
            MessageBox.Show("Ошибка в логине или пароле!");
        }
        private void Button_Registarion_Click(object sender, RoutedEventArgs e)
        {
            new RegistrationWindow(null).ShowDialog();
        }
    }
}using ZooMail.Models;
using ZooMail.AnimalAccounting;
using System;
using System.IO;
using System.Diagnostics;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows;
using Xceed.Words.NET;
using Xceed.Document.NET;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using System.Threading;
using System.Windows.Controls;
namespace ZooMail.AnimalAccounting
{
    /// <summary>
    /// Логика взаимодействия для AnimalAccountingWindow.xaml
    /// </summary>
    public partial class AnimalAccountingWindow : Window
    {
        async Task<bool> Symb(string str)
        {
            bool znach = false;
            await Task.Run(() =>
            {
                if (
                str.Contains("?") || str.Contains("!") || str.Contains("@") ||
                str.Contains("#") || str.Contains("№") || str.Contains("~") ||
                str.Contains(";") || str.Contains("%") || str.Contains("$") ||
                str.Contains("^") || str.Contains("&") || str.Contains(":") ||
                str.Contains("*") || str.Contains("(") || str.Contains(")") ||
                str.Contains("_") || str.Contains("=") || str.Contains("+") ||
                str.Contains("/") || str.Contains("|") || str.Contains("[") ||
                str.Contains("]") || str.Contains("{") || str.Contains("}") ||
                str.Contains("<") || str.Contains(">") || str.Contains("-") ||
                str.Contains(",") || str.Contains("`") || str.Contains("."))
                    znach = true;
            });
            return znach;
        }
        bool IsValidEmail(string email)
        {
            try
            {
                var addr = new System.Net.Mail.MailAddress(email);
                return addr.Address == email;
            }
            catch
            {
                return false;
            }
        }
        List<Models.ModelAnimalparkDetail> listAnimal;
        public string extension = string.Empty;
        public AnimalAccountingWindow()
        {
            InitializeComponent();
        }
        private void ButtonEdit_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridCars.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран товар для редактирования");
                return;
            }
            var ap = new DBManager().getAnimalparkList();
            Models.ModelAnimalpark modelAnimalpark = null;
            foreach (var it in ap)
            {
                if (it.ID_animalpark == listAnimal[selectedIndex].ID_animalpark)
                {
                    modelAnimalpark = it;
                    break;
                }
            }
            var ce = new AnimalEdit(modelAnimalpark);
            ce.ShowDialog();
        }
        private void ButtonAdd_Click(object sender, RoutedEventArgs e)
        {
            var ce = new AnimalEdit(null);
            ce.ShowDialog();
        }
        private void ButtonClose_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            listAnimal = (new DBManager()).getAnimalparkListDetail();
            dataGridCars.ItemsSource = listAnimal;
        }
        private void ButtonDelete_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridCars.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран товар для редактирования");
                return;
            }
            if (MessageBox.Show("Вы уверены?", "", MessageBoxButton.YesNo) == MessageBoxResult.No)
            {
                return;
            }
            new DBManager().deleteAnimalpark(listAnimal[selectedIndex].ID_animalpark);
            MessageBox.Show("Операция выполнена");
            listAnimal = (new DBManager()).getAnimalparkListDetail();
            dataGridCars.ItemsSource = listAnimal;
        }
        private void createExportDoc()
        {
            try
            {
                DBManager con = new DBManager();
                var modelAnimalpark = con.getAnimalparkList();
                if (extension == string.Empty)
                {
                    MessageBox.Show("Не выбран тип экспортруемого файла");
                    return;
                }
                switch (extension)
                {
                    case (".docx"):
                        string pathDocumentDOCX = Session.baseDir + "Учет товар" + extension;
                        DocX document = DocX.Create(pathDocumentDOCX);
                        Xceed.Document.NET.Paragraph paragraph = document.InsertParagraph();
                        paragraph.
                            AppendLine("Документ '" + "Отчет о учете автомобилей" + "' создан " + DateTime.Now.ToShortDateString()).
                            Font("Time New Roman").
                            FontSize(16).Bold().Alignment = Alignment.left;
                        paragraph.AppendLine();
                        Xceed.Document.NET.Table doctable = document.AddTable(modelAnimalpark.Count + 1, 2);
                        doctable.Design = TableDesign.TableGrid;
                        doctable.TableCaption = "учет товара";
                        doctable.Rows[0].Cells[0].Paragraphs[0].Append("Учет товара").Font("Times New Roman").FontSize(14);
                        for (int i = 0; i < modelAnimalpark.Count; i++)
                        {
                            doctable.Rows[i + 1].Cells[0].Paragraphs[0].Append(modelAnimalpark[i].Number).Font("Times New Roman").FontSize(14);
                        }
                        document.InsertParagraph().InsertTableAfterSelf(doctable);
                        document.Save();
                        MessageBox.Show("Отчет успешно сформирован!");
                        Process.Start(pathDocumentDOCX);
                        break;
                    case (".xlsx"):
                        Excel.Application excel;
                        Excel.Workbook worKbooK;
                        Excel.Worksheet worKsheeT;
                        Excel.Range celLrangE;
                        string pathDocumentXLSX = Session.baseDir + "Учет о животных" + extension;
                        try
                        {
                            excel = new Excel.Application();
                            excel.Visible = false;
                            excel.DisplayAlerts = false;
                            worKbooK = excel.Workbooks.Add(Type.Missing);
                            worKsheeT = (Microsoft.Office.Interop.Excel.Worksheet)worKbooK.ActiveSheet;
                            worKsheeT.Name = "Учет о животных";
                            worKsheeT.Range[worKsheeT.Cells[1, 1], worKsheeT.Cells[1, 8]].Merge();
                            worKsheeT.Cells[1, 1] = "Учет о животных";
                            worKsheeT.Cells.Font.Size = 15;
                            for (int i = 0; i < modelAnimalpark.Count; i++)
                            {
                                worKsheeT.Cells[i + 3, 1] = modelAnimalpark[i].Number;
                            }
                            worKbooK.SaveAs(pathDocumentXLSX); ;
                            worKbooK.Close();
                            excel.Quit();
                            MessageBox.Show("Отчет успешно сформирован!");
                            Process.Start(pathDocumentXLSX);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                        finally
                        {
                            worKsheeT = null;
                            celLrangE = null;
                            worKbooK = null;
                        }
                        break;
                    case (".pdf"):
                        string pathDocumentPDF = Session.baseDir + "Учет о животных" + extension;
                        if (File.Exists(Session.baseDir + "Учет о животных.docx"))
                        {
                            Word.Application appWord = new Word.Application();
                            var wordDocument = appWord.Documents.Open(Session.baseDir + "Учет о животных.docx");
                            wordDocument.ExportAsFixedFormat(pathDocumentPDF, Word.WdExportFormat.wdExportFormatPDF);
                            MessageBox.Show("Отчет успешно сформирован!");
                            wordDocument.Close();
                            Process.Start(pathDocumentPDF);
                        }
                        else
                            MessageBox.Show("Сначала сформируйте отчет .docx");
                        break;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Отсутсвие Ms Office на компьютере. Пожалуйста скачайте его.");
                Process.Start("https://www.microsoft.com/ru-ru/microsoft-365/compare-all-microsoft-365-products?tab=1&rtc=1");
            }
        }
        private void ButtonExport_Click(object sender, RoutedEventArgs e)
        {
            Thread t = new Thread(new ThreadStart(createExportDoc));
            t.Start();
        }
        private void ComboBoxExport_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBoxItem typeItem = (ComboBoxItem)comboBoxExport.SelectedItem;
            extension = typeItem.Content.ToString();
        }
    }
}using ZooMail.Models;
using ZooMail.AnimalAccounting;
using System;
using System.IO;
using System.Diagnostics;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows;
using Xceed.Words.NET;
using Xceed.Document.NET;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using System.Threading;
using System.Windows.Controls;
namespace ZooMail.AnimalAccounting
{
    /// <summary>
    /// Логика взаимодействия для AnimalAccountingWindow.xaml
    /// </summary>
    public partial class AnimalAccountingWindow : Window
    {
        async Task<bool> Symb(string str)
        {
            bool znach = false;
            await Task.Run(() =>
            {
                if (
                str.Contains("?") || str.Contains("!") || str.Contains("@") ||
                str.Contains("#") || str.Contains("№") || str.Contains("~") ||
                str.Contains(";") || str.Contains("%") || str.Contains("$") ||
                str.Contains("^") || str.Contains("&") || str.Contains(":") ||
                str.Contains("*") || str.Contains("(") || str.Contains(")") ||
                str.Contains("_") || str.Contains("=") || str.Contains("+") ||
                str.Contains("/") || str.Contains("|") || str.Contains("[") ||
                str.Contains("]") || str.Contains("{") || str.Contains("}") ||
                str.Contains("<") || str.Contains(">") || str.Contains("-") ||
                str.Contains(",") || str.Contains("`") || str.Contains("."))
                    znach = true;
            });
            return znach;
        }
        bool IsValidEmail(string email)
        {
            try
            {
                var addr = new System.Net.Mail.MailAddress(email);
                return addr.Address == email;
            }
            catch
            {
                return false;
            }
        }
        List<Models.ModelAnimalparkDetail> listAnimal;
        public string extension = string.Empty;
        public AnimalAccountingWindow()
        {
            InitializeComponent();
        }
        private void ButtonEdit_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridCars.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран товар для редактирования");
                return;
            }
            var ap = new DBManager().getAnimalparkList();
            Models.ModelAnimalpark modelAnimalpark = null;
            foreach (var it in ap)
            {
                if (it.ID_animalpark == listAnimal[selectedIndex].ID_animalpark)
                {
                    modelAnimalpark = it;
                    break;
                }
            }
            var ce = new AnimalEdit(modelAnimalpark);
            ce.ShowDialog();
        }
        private void ButtonAdd_Click(object sender, RoutedEventArgs e)
        {
            var ce = new AnimalEdit(null);
            ce.ShowDialog();
        }
        private void ButtonClose_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            listAnimal = (new DBManager()).getAnimalparkListDetail();
            dataGridCars.ItemsSource = listAnimal;
        }
        private void ButtonDelete_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridCars.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбран товар для редактирования");
                return;
            }
            if (MessageBox.Show("Вы уверены?", "", MessageBoxButton.YesNo) == MessageBoxResult.No)
            {
                return;
            }
            new DBManager().deleteAnimalpark(listAnimal[selectedIndex].ID_animalpark);
            MessageBox.Show("Операция выполнена");
            listAnimal = (new DBManager()).getAnimalparkListDetail();
            dataGridCars.ItemsSource = listAnimal;
        }
        private void createExportDoc()
        {
            try
            {
                DBManager con = new DBManager();
                var modelAnimalpark = con.getAnimalparkList();
                if (extension == string.Empty)
                {
                    MessageBox.Show("Не выбран тип экспортруемого файла");
                    return;
                }
                switch (extension)
                {
                    case (".docx"):
                        string pathDocumentDOCX = Session.baseDir + "Учет товар" + extension;
                        DocX document = DocX.Create(pathDocumentDOCX);
                        Xceed.Document.NET.Paragraph paragraph = document.InsertParagraph();
                        paragraph.
                            AppendLine("Документ '" + "Отчет о учете автомобилей" + "' создан " + DateTime.Now.ToShortDateString()).
                            Font("Time New Roman").
                            FontSize(16).Bold().Alignment = Alignment.left;
                        paragraph.AppendLine();
                        Xceed.Document.NET.Table doctable = document.AddTable(modelAnimalpark.Count + 1, 2);
                        doctable.Design = TableDesign.TableGrid;
                        doctable.TableCaption = "учет товара";
                        doctable.Rows[0].Cells[0].Paragraphs[0].Append("Учет товара").Font("Times New Roman").FontSize(14);
                        for (int i = 0; i < modelAnimalpark.Count; i++)
                        {
                            doctable.Rows[i + 1].Cells[0].Paragraphs[0].Append(modelAnimalpark[i].Number).Font("Times New Roman").FontSize(14);
                        }
                        document.InsertParagraph().InsertTableAfterSelf(doctable);
                        document.Save();
                        MessageBox.Show("Отчет успешно сформирован!");
                        Process.Start(pathDocumentDOCX);
                        break;
                    case (".xlsx"):
                        Excel.Application excel;
                        Excel.Workbook worKbooK;
                        Excel.Worksheet worKsheeT;
                        Excel.Range celLrangE;
                        string pathDocumentXLSX = Session.baseDir + "Учет о животных" + extension;
                        try
                        {
                            excel = new Excel.Application();
                            excel.Visible = false;
                            excel.DisplayAlerts = false;
                            worKbooK = excel.Workbooks.Add(Type.Missing);
                            worKsheeT = (Microsoft.Office.Interop.Excel.Worksheet)worKbooK.ActiveSheet;
                            worKsheeT.Name = "Учет о животных";
                            worKsheeT.Range[worKsheeT.Cells[1, 1], worKsheeT.Cells[1, 8]].Merge();
                            worKsheeT.Cells[1, 1] = "Учет о животных";
                            worKsheeT.Cells.Font.Size = 15;
                            for (int i = 0; i < modelAnimalpark.Count; i++)
                            {
                                worKsheeT.Cells[i + 3, 1] = modelAnimalpark[i].Number;
                            }
                            worKbooK.SaveAs(pathDocumentXLSX); ;
                            worKbooK.Close();
                            excel.Quit();
                            MessageBox.Show("Отчет успешно сформирован!");
                            Process.Start(pathDocumentXLSX);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                        finally
                        {
                            worKsheeT = null;
                            celLrangE = null;
                            worKbooK = null;
                        }
                        break;
                    case (".pdf"):
                        string pathDocumentPDF = Session.baseDir + "Учет о животных" + extension;
                        if (File.Exists(Session.baseDir + "Учет о животных.docx"))
                        {
                            Word.Application appWord = new Word.Application();
                            var wordDocument = appWord.Documents.Open(Session.baseDir + "Учет о животных.docx");
                            wordDocument.ExportAsFixedFormat(pathDocumentPDF, Word.WdExportFormat.wdExportFormatPDF);
                            MessageBox.Show("Отчет успешно сформирован!");
                            wordDocument.Close();
                            Process.Start(pathDocumentPDF);
                        }
                        else
                            MessageBox.Show("Сначала сформируйте отчет .docx");
                        break;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Отсутсвие Ms Office на компьютере. Пожалуйста скачайте его.");
                Process.Start("https://www.microsoft.com/ru-ru/microsoft-365/compare-all-microsoft-365-products?tab=1&rtc=1");
            }
        }
        private void ButtonExport_Click(object sender, RoutedEventArgs e)
        {
            Thread t = new Thread(new ThreadStart(createExportDoc));
            t.Start();
        }
        private void ComboBoxExport_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBoxItem typeItem = (ComboBoxItem)comboBoxExport.SelectedItem;
            extension = typeItem.Content.ToString();
        }
    }
}using ZooMail.Models;
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.Shapes;
namespace ZooMail.AddAnimal
{
    /// <summary>
    /// Логика взаимодействия для AddAnimalsWindow.xaml
    /// </summary>
    public partial class AddAnimalWindow : Window
    {
        public AddAnimalWindow()
        {
            InitializeComponent();
        }
        List<Models.ModelSupplierDetail> listSupplier;
        private void updateData()
        {
            listSupplier = (new DBManager()).getSupplierListDetail();
            dataGridAddAnimals.ItemsSource = listSupplier;
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            updateData();
        }
        private void ButtonEdit_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridAddAnimals.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбрано животное для редактирования");
                return;
            }
            var ap = new DBManager().getSupplierList();
            Models.ModelSupplier modelSupplier = null;
            foreach (var it in ap)
            {
                if (it.Id_Supplier == listSupplier[selectedIndex].Id_Supplier)
                {
                    modelSupplier = it;
                    break;
                }
            }
            var ce = new AddAnimalEditWindow(modelSupplier);
            ce.ShowDialog();
        }
        private void ButtonAdd_Click(object sender, RoutedEventArgs e)
        {
            var ce = new AddAnimalEditWindow(null);
            ce.ShowDialog();
        }
        private void ButtonClose_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }
        private void ButtonDelete_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = dataGridAddAnimals.SelectedIndex;
            if (selectedIndex < 0)
            {
                MessageBox.Show("Не выбрано животное для редактирования");
                return;
            }
            if (MessageBox.Show("Вы уверены?", "", MessageBoxButton.YesNo) == MessageBoxResult.No)
            {
                return;
            }
            new DBManager().deleteSupplier(listSupplier[selectedIndex].Id_Supplier);
            MessageBox.Show("Операция выполнена");
            updateData();
        }
    }
}