123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using WpfApp29.Models;
- using WpfApp29.Pages;
- using WpfApp29.UserControls;
- using WpfApp29.UserControls.Base;
- namespace WpfApp29.ViewModels
- {
- internal class MainPageViewModel : BaseViewModel
- {
- public MainPageViewModel()
- {
- UpadeRepeat();
- }
- public WrapPanel? WpTasks => (AppHelper.GetWindowAtType<UserWindow>()?.FramePages.Content as MainPage)?.WpTasks;
-
- private Filter _filter = new Filter();
- public Filter Filter
- {
- get
- {
- return _filter;
- }
- set
- {
- _filter = value;
- OnPropertyChanged();
- }
- }
- private string _userLoginString = "";
- public string UserLoginString
- {
- get
- {
- return _userLoginString;
- }
- set
- {
- _userLoginString = value;
- OnPropertyChanged();
- }
- }
- public RelayCommand? _commandAddTask;
- public RelayCommand CommandAddTask
- {
- get
- {
- return _commandAddTask ??= new RelayCommand(
- x =>
- {
- new TaskCreationWindow().Show();
- });
- }
- }
- public void UpdateWpTasks()
- {
- if (WpTasks == null) return;
- WpTasks.Children.Clear();
- MainContext ctx = new MainContext();
- List<Models.Task> tasks = ctx.Tasks.ToList();
- if (Filter.WhereTaskUserLogin)
- {
- tasks = tasks.Where(task => task.UserCreator?.Login.Contains(UserLoginString) ?? false).ToList();
- tasks = tasks.OrderByDescending(task => task.UserCreator?.Equals(UserLoginString)).ToList();
- }
- if (Filter.DateUp)
- {
- tasks = tasks.OrderBy(task => task.Date).ToList();
- }
- else if (Filter.DateDown)
- {
- tasks = tasks.OrderByDescending(task => task.Date).ToList();
- }
- int row = 0;
- tasks.ForEach(task =>
- {
- UIElement children;
- if (task.StatusId == 4 && task.UserCreatorId == User.CurrentUser?.Id && Filter.WhereTaskDelete)
- {
- children = new TaskDeleteUserControl();
- }
- else if (task.StatusId == 4)
- {
- return;
- }
- else if (task.StatusId == 3 && Filter.WhereTaskDone && (task.UserCreatorId == User.CurrentUser?.Id || task.UserDoerId == User.CurrentUser?.Id || Filter.WhereTaskSomeone))
- {
- children = new TaskDoneUserControl();
- }
- else if (task.UserDoerId == User.CurrentUser?.Id && task.StatusId == 2 && Filter.WhereTaskDoing)
- {
- children = new TaskDoerUserControl();
- }
- else if (task.UserCreatorId == User.CurrentUser?.Id && Filter.WhereTaskCreator)
- {
- children = new TaskCreatorUserControl();
- }
- else if (task.StatusId == 1 && Filter.WhereTaskAccess)
- {
- children = new TaskEmptyUserControl();
- }
- else
- {
- return;
- }
- (children as ITaskUserControl)?.HasTask(task);
- Grid.SetRow(children, row);
- WpTasks.Children.Add(children);
- row++;
- });
- }
- private async void UpadeRepeat()
- {
- while (true)
- {
- UpdateWpTasks();
- OnPropertyChanged();
- await System.Threading.Tasks.Task.Delay(200);
- }
- }
- }
- }
|