PmsTaskInfoViewModel.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using DbCommon.BusinessCore.BaseCore;
  2. using DbCommon.Enties.DbModels;
  3. using Prism.Commands;
  4. using Prism.Events;
  5. using ProjectManagementSystem.Common.Extenions;
  6. using ProjectManagementSystem.Common.Logger;
  7. using ProjectManagementSystem.Language;
  8. using ProjectManagementSystemView.Infrastructure.Events;
  9. using ProjectManagementSystemView.Infrastructure.Extensions;
  10. using ProjectManagementSystemView.Infrastructure.Models;
  11. using PropertyChanged;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Collections.ObjectModel;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. using System.Windows;
  19. namespace ProjectManagementSystemView.ViewModels
  20. {
  21. [AddINotifyPropertyChangedInterface]
  22. public class PmsTaskInfoViewModel
  23. {
  24. private PmsTaskInfoManager pmsTaskInfoManager = new PmsTaskInfoManager();
  25. public bool IsVisible { get; set; }
  26. public VmPmsTaskInfo SelectedVmData { get; set; }
  27. public ObservableCollection<VmPmsTaskInfo> VmDatas { get; set; } = new ObservableCollection<VmPmsTaskInfo>();
  28. public DelegateCommand<object> TaskDeleteCommand { get; set; }
  29. public PmsTaskInfoViewModel(IEventAggregator eventAggregator)
  30. {
  31. TaskDeleteCommand = new DelegateCommand<object>(arg =>
  32. {
  33. TaskOpreate(arg, pmsTaskInfoManager.Delete);
  34. });
  35. eventAggregator.GetEvent<UpdateViewEvent>().Subscribe(UpdateView);
  36. }
  37. private void UpdateView()
  38. {
  39. if (!IsVisible) return;
  40. var dataList = pmsTaskInfoManager.GetList();
  41. VmDatas.Update(dataList, (s, v) => s.TaskID == v.TaskID);
  42. }
  43. private void TaskOpreate(object sender, Predicate<string> predicate)
  44. {
  45. string taskId = SelectedVmData?.TaskID;
  46. if (string.IsNullOrEmpty(taskId)) return;
  47. string allWarehouse = $"({SelectedVmData.WareHouseCode} {SelectedVmData.LocationCode} {SelectedVmData.MaterialId}) => ({SelectedVmData.TargetWareHouseCode} {SelectedVmData.TargetLocationCode})";
  48. string text = $"{sender} {taskId}? {allWarehouse}";
  49. var dialogResult = MessageBox.Show(text, Langs.Prompt, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
  50. if (dialogResult != MessageBoxResult.OK)
  51. {
  52. return;
  53. }
  54. bool result = predicate(taskId);
  55. CLog.Instance.TaskLog.WriteInfo(Langs.PmsTaskInfoViewManualOperation, $"{taskId},{sender}{result.ToChineseString()}");
  56. }
  57. }
  58. }