|
@@ -0,0 +1,243 @@
|
|
|
|
+using Microsoft.Win32;
|
|
|
|
+using rkismvvm.Views;
|
|
|
|
+using System;
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
+using System.Collections.ObjectModel;
|
|
|
|
+using System.ComponentModel;
|
|
|
|
+using System.Linq;
|
|
|
|
+using System.Runtime.CompilerServices;
|
|
|
|
+using System.Text;
|
|
|
|
+using System.Threading.Tasks;
|
|
|
|
+using Excel = Microsoft.Office.Interop.Excel;
|
|
|
|
+using Word = Microsoft.Office.Interop.Word;
|
|
|
|
+
|
|
|
|
+namespace rkismvvm.ViewsModels
|
|
|
|
+{
|
|
|
|
+ public class MainMenuViewModel : BaseViewModel
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ private RelayCommand _opentasks;
|
|
|
|
+ public RelayCommand OpenTasks
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ return _opentasks ??
|
|
|
|
+ (_opentasks = new RelayCommand(obj =>
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ Tasks tasks = new Tasks();
|
|
|
|
+ tasks.Show();
|
|
|
|
+ foreach (var win in App.Current.Windows)
|
|
|
|
+ {
|
|
|
|
+ if (win is MenuWindow mw)
|
|
|
|
+ {
|
|
|
|
+ mw.Close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private RelayCommand _openusers;
|
|
|
|
+ public RelayCommand OpenUsers
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ return _openusers ??
|
|
|
|
+ (_openusers = new RelayCommand(x =>
|
|
|
|
+ {
|
|
|
|
+ ListUsers listUsers = new ListUsers();
|
|
|
|
+ listUsers.Show();
|
|
|
|
+ foreach (var win in App.Current.Windows)
|
|
|
|
+ {
|
|
|
|
+ if (win is MenuWindow mw)
|
|
|
|
+ {
|
|
|
|
+ mw.Close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private RelayCommand _openprofile;
|
|
|
|
+ public RelayCommand OpenProfile
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ return _openprofile ??
|
|
|
|
+ (_openprofile = new RelayCommand(x =>
|
|
|
|
+ {
|
|
|
|
+ Profile profile = new Profile();
|
|
|
|
+ profile.Show();
|
|
|
|
+ foreach (var win in App.Current.Windows)
|
|
|
|
+ {
|
|
|
|
+ if (win is MenuWindow mw)
|
|
|
|
+ {
|
|
|
|
+ mw.Close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ private RelayCommand _openmytask;
|
|
|
|
+ public RelayCommand OpenMyTask
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ return _openmytask ??
|
|
|
|
+ (_openmytask = new RelayCommand(x =>
|
|
|
|
+ {
|
|
|
|
+ MyTasks myTasks = new MyTasks();
|
|
|
|
+ myTasks.Show();
|
|
|
|
+ foreach (var win in App.Current.Windows)
|
|
|
|
+ {
|
|
|
|
+ if (win is MenuWindow mw)
|
|
|
|
+ {
|
|
|
|
+ mw.Close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ private RelayCommand _opentaskhistory;
|
|
|
|
+ public RelayCommand OpenTaskHistory
|
|
|
|
+ {
|
|
|
|
+ get
|
|
|
|
+ {
|
|
|
|
+ return _opentaskhistory ??
|
|
|
|
+ (_opentaskhistory = new RelayCommand(x =>
|
|
|
|
+ {
|
|
|
|
+ TaskHistory history = new TaskHistory();
|
|
|
|
+ history.Show();
|
|
|
|
+ foreach (var win in App.Current.Windows)
|
|
|
|
+ {
|
|
|
|
+ if (win is MenuWindow mw)
|
|
|
|
+ {
|
|
|
|
+ mw.Close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private ObservableCollection<Task> _tasks;
|
|
|
|
+ public ObservableCollection<Task> Tasks
|
|
|
|
+ {
|
|
|
|
+ get => _tasks;
|
|
|
|
+ set
|
|
|
|
+ {
|
|
|
|
+ _tasks = value;
|
|
|
|
+ OnPropertyChanged();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ public MainMenuViewModel()
|
|
|
|
+ {
|
|
|
|
+ TaskHelpContext context = new TaskHelpContext();
|
|
|
|
+ Tasks = new ObservableCollection<Task>(context.Tasks);
|
|
|
|
+ }
|
|
|
|
+ private RelayCommand _createreport;
|
|
|
|
+ public RelayCommand CreateReport
|
|
|
|
+ {
|
|
|
|
+ get => _createreport ??
|
|
|
|
+ (_createreport = new RelayCommand((x) =>
|
|
|
|
+ {
|
|
|
|
+ SaveFileDialog saveFile = new SaveFileDialog();
|
|
|
|
+ saveFile.FileName = "report";
|
|
|
|
+ saveFile.Filter = "Excel files (.xlsx)|*.xlsx|Word files (.docx)|*.docx|Pdf files (.pdf)|*.pdf";
|
|
|
|
+ if (saveFile.ShowDialog() == true)
|
|
|
|
+ {
|
|
|
|
+ switch (saveFile.FilterIndex)
|
|
|
|
+ {
|
|
|
|
+ case 1:
|
|
|
|
+ Excel.Application app = new Excel.Application();
|
|
|
|
+ Excel.Workbook workbook = app.Workbooks.Add();
|
|
|
|
+ Excel.Worksheet worksheet = app.Worksheets[1];
|
|
|
|
+ worksheet.Name = "Задачи";
|
|
|
|
+ worksheet.Range["A1"].Value = "Номер";
|
|
|
|
+ worksheet.Range["B1"].Value = "Наименование";
|
|
|
|
+ worksheet.Range["C1"].Value = "Описание";
|
|
|
|
+ worksheet.Range["D1"].Value = "Дата публикации";
|
|
|
|
+ worksheet.Range["E1"].Value = "Создатель";
|
|
|
|
+ worksheet.Range["F1"].Value = "Исполнитель";
|
|
|
|
+ worksheet.Range["G1"].Value = "Статус";
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < _tasks.Count; i++)
|
|
|
|
+ {
|
|
|
|
+ if (_tasks[i] != null)
|
|
|
|
+ {
|
|
|
|
+ var task = _tasks[i];
|
|
|
|
+ worksheet.Range[$"A{i + 2}"].Value = task.TaskId;
|
|
|
|
+ worksheet.Range[$"B{i + 2}"].Value = task.TaskName;
|
|
|
|
+ worksheet.Range[$"C{i + 2}"].Value = task.TaskDescrip;
|
|
|
|
+ worksheet.Range[$"D{i + 2}"].Value = task.TaskDate;
|
|
|
|
+ worksheet.Range[$"E{i + 2}"].Value = task.UserGive.LastName + " " + task.UserGive.Name + " " + task.UserGive.MiddleName;
|
|
|
|
+ worksheet.Range[$"F{i + 2}"].Value = task.UserTake.LastName + " " + task.UserTake.Name + " " + task.UserTake.MiddleName;
|
|
|
|
+ worksheet.Range[$"G{i + 2}"].Value = task.StatusTask.StatusName;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ workbook.SaveAs(saveFile.FileName);
|
|
|
|
+ workbook.Close();
|
|
|
|
+ app.Quit();
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ case 3:
|
|
|
|
+ Word.Application wordApp = new Word.Application();
|
|
|
|
+ Word.Document document = wordApp.Documents.Add();
|
|
|
|
+ Word.Paragraph paragraph = document.Paragraphs.Add();
|
|
|
|
+ Word.Range range = paragraph.Range;
|
|
|
|
+ Word.Table table = document.Tables.Add(range, _tasks.Count + 1, 7);
|
|
|
|
+ Word.Range cellRange;
|
|
|
|
+ cellRange = table.Cell(1, 1).Range;
|
|
|
|
+ cellRange.Text = "Номер";
|
|
|
|
+ cellRange = table.Cell(1, 2).Range;
|
|
|
|
+ cellRange.Text = "Наименование";
|
|
|
|
+ cellRange = table.Cell(1, 3).Range;
|
|
|
|
+ cellRange.Text = "Описание";
|
|
|
|
+ cellRange = table.Cell(1, 4).Range;
|
|
|
|
+ cellRange.Text = "Дата публикации";
|
|
|
|
+ cellRange = table.Cell(1, 5).Range;
|
|
|
|
+ cellRange.Text = "Создатель";
|
|
|
|
+ cellRange = table.Cell(1, 6).Range;
|
|
|
|
+ cellRange.Text = "Исполнитель";
|
|
|
|
+ cellRange = table.Cell(1, 7).Range;
|
|
|
|
+ cellRange.Text = "Статус";
|
|
|
|
+ for (int i = 0; i < _tasks.Count; i++)
|
|
|
|
+ {
|
|
|
|
+ var task = _tasks[i];
|
|
|
|
+ cellRange = table.Cell(i + 2, 1).Range;
|
|
|
|
+ cellRange.Text = task.TaskId.ToString();
|
|
|
|
+ cellRange = table.Cell(i + 2, 2).Range;
|
|
|
|
+ cellRange.Text = task.TaskName;
|
|
|
|
+ cellRange = table.Cell(i + 2, 3).Range;
|
|
|
|
+ cellRange.Text = task.TaskDescrip;
|
|
|
|
+ cellRange = table.Cell(i + 2, 4).Range;
|
|
|
|
+ cellRange.Text = task.TaskDate.ToString("d");
|
|
|
|
+ cellRange = table.Cell(i + 2, 5).Range;
|
|
|
|
+ cellRange.Text = task.UserGive.LastName + " " + task.UserGive.Name + " " + task.UserGive.MiddleName;
|
|
|
|
+ cellRange = table.Cell(i + 2, 6).Range;
|
|
|
|
+ cellRange.Text = task.UserTake.LastName + " " + task.UserTake.Name + " " + task.UserTake.MiddleName;
|
|
|
|
+ cellRange = table.Cell(i + 2, 7).Range;
|
|
|
|
+ cellRange.Text = task.StatusTask.StatusName;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if (saveFile.FilterIndex == 2)
|
|
|
|
+ {
|
|
|
|
+ document.SaveAs2(saveFile.FileName);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ document.SaveAs2(saveFile.FileName, Word.WdSaveFormat.wdFormatPDF);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|