|
@@ -0,0 +1,210 @@
|
|
|
+using AutoMapper;
|
|
|
+using BizService;
|
|
|
+using Microsoft.Extensions.Logging;
|
|
|
+using Microsoft.VisualBasic.ApplicationServices;
|
|
|
+using Model;
|
|
|
+using Model.Entities;
|
|
|
+using PLCTool.Models;
|
|
|
+using Prism.Commands;
|
|
|
+using Prism.Events;
|
|
|
+using Prism.Mvvm;
|
|
|
+using Prism.Services.Dialogs;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Collections.ObjectModel;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using System.Windows;
|
|
|
+
|
|
|
+namespace PLCTool.ViewModels.SystemManageViewModel.Dialogs
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ public class UserWithDeviceViewModel : BindableBase, IDialogAware
|
|
|
+ {
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+ private readonly ILogger _logger;
|
|
|
+ private readonly IUserService _iUserService;
|
|
|
+ private readonly IUserRoleService _iUserRoleService;
|
|
|
+ private readonly IUserDeviceService _iUserDeviceService;
|
|
|
+ private readonly IBasicProjectService _iBasicProjectService;
|
|
|
+ private readonly IRoleProjectService _iRoleProjectService;
|
|
|
+ private readonly IBasicDeviceService _iBasicDeviceService;
|
|
|
+ private string tyepName = String.Empty;
|
|
|
+ private int userId;
|
|
|
+
|
|
|
+ public UserWithDeviceViewModel(IEventAggregator aggregator, IUserService iUserService, IUserDeviceService iUserDeviceService, IUserRoleService iUserRoleService, IBasicProjectService iBasicProjectService, IRoleProjectService iRoleProjectService, IBasicDeviceService iBasicDeviceService, IMapper mapper, ILogger logger)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ _mapper = mapper;
|
|
|
+ _logger = logger;
|
|
|
+ _iUserDeviceService = iUserDeviceService;
|
|
|
+ _iBasicProjectService = iBasicProjectService;
|
|
|
+ _iUserService = iUserService;
|
|
|
+ _iUserRoleService = iUserRoleService;
|
|
|
+ _iRoleProjectService = iRoleProjectService;
|
|
|
+ _iBasicDeviceService = iBasicDeviceService;
|
|
|
+ SureCommand = new DelegateCommand<string>(Sure);
|
|
|
+
|
|
|
+ SelectAllCommand = new DelegateCommand<object>(SelectAll);
|
|
|
+ UnSelectAllCommand = new DelegateCommand<object>(UnSelecttAll);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void GetAllDevicesByRole()
|
|
|
+ {
|
|
|
+ var userRo = _iUserRoleService.FindByUserID(userId);
|
|
|
+ if (userRo != null)
|
|
|
+ {
|
|
|
+ int roleId = (int)userRo.RoleId;
|
|
|
+ var roleProjects= _iRoleProjectService.FindAllByRoleId(roleId);
|
|
|
+ //找到项目
|
|
|
+ foreach(var pro in roleProjects)
|
|
|
+ {
|
|
|
+ string projectName = _iBasicProjectService.Find((int)pro.ProjectId).project_name;
|
|
|
+ //项目对应的设备
|
|
|
+ var devices=_iBasicDeviceService.FindAllDeviceByPrj((int)pro.ProjectId);
|
|
|
+ foreach(var device in devices)
|
|
|
+ {
|
|
|
+ //查找用户是否带有这个设备
|
|
|
+ bool isSelect = false;
|
|
|
+
|
|
|
+ var findDevice = _iUserDeviceService.FindAllByUserId(userId).FirstOrDefault(x => x.DeviceId == device.device_id);
|
|
|
+ if (findDevice != null)
|
|
|
+ {
|
|
|
+ isSelect = true;
|
|
|
+ }
|
|
|
+ UserWithDeviceList.Add(new SelectUserDeviceModel()
|
|
|
+ {
|
|
|
+ DeviceName = device.device_name,
|
|
|
+ ProjectName= projectName,
|
|
|
+ Describe = device.remark,
|
|
|
+ IsSelected = isSelect,
|
|
|
+ UserId=userId,
|
|
|
+ DeviceId= (int)device.device_id
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UnSelecttAll(object obj)
|
|
|
+ {
|
|
|
+ UserWithDeviceList.ToList().FindAll(p => p.IsSelected = false);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void SelectAll(object obj)
|
|
|
+ {
|
|
|
+ UserWithDeviceList.ToList().FindAll(p => p.IsSelected = true);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private void Sure(string obj)
|
|
|
+ {
|
|
|
+ //查找是否有这个测试方案
|
|
|
+
|
|
|
+ var findSelect = UserWithDeviceList.FirstOrDefault(x => x.IsSelected == true);
|
|
|
+ if (findSelect == null)
|
|
|
+ {
|
|
|
+ MessageBoxResult boxResult = MessageBox.Show("请勾选测试项!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //查找的信息
|
|
|
+ //删除这个用户以前的设备
|
|
|
+ var findDevices =_iUserDeviceService.FindAllByUserId(userId);
|
|
|
+ foreach (var item in findDevices)
|
|
|
+ {
|
|
|
+ _iUserDeviceService.Delete(item.Id);
|
|
|
+ }
|
|
|
+ //添加用户关联的设备到数据库
|
|
|
+ var roleProjectss = UserWithDeviceList.ToList().FindAll(x => x.IsSelected).OrderBy(y => y.DeviceId);
|
|
|
+ foreach (var item in roleProjectss)
|
|
|
+ {
|
|
|
+ _iUserDeviceService.Add(new UserDevice
|
|
|
+ {
|
|
|
+ UserId=item.UserId,
|
|
|
+ DeviceId=item.DeviceId,
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
|
|
+ }
|
|
|
+
|
|
|
+ public string Title { set; get; } = "授权用户设备项";
|
|
|
+
|
|
|
+ public event Action<IDialogResult> RequestClose;
|
|
|
+
|
|
|
+ public bool CanCloseDialog()
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void OnDialogClosed()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void OnDialogOpened(IDialogParameters parameters)
|
|
|
+ {
|
|
|
+
|
|
|
+ //设备类型
|
|
|
+ var getMsg = parameters.GetValues<int>("Key");
|
|
|
+
|
|
|
+ if (getMsg != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ foreach (var item in getMsg)
|
|
|
+ {
|
|
|
+
|
|
|
+ userId = item;
|
|
|
+ GetAllDevicesByRole();
|
|
|
+ UserName=_iUserService.Find(userId)?.UserName;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ #region 命令绑定
|
|
|
+ public DelegateCommand<string> SureCommand { set; get; }
|
|
|
+
|
|
|
+
|
|
|
+ public DelegateCommand<object> SelectAllCommand { set; get; }
|
|
|
+ public DelegateCommand<object> UnSelectAllCommand { set; get; }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ #region 数据绑定
|
|
|
+ /// <summary>
|
|
|
+ /// 用户名
|
|
|
+ /// </summary>
|
|
|
+ private string userName;
|
|
|
+ public string UserName
|
|
|
+ {
|
|
|
+ get { return userName; }
|
|
|
+ set { userName = value; RaisePropertyChanged(); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private ObservableCollection<SelectUserDeviceModel> userWithDeviceList = new ObservableCollection<SelectUserDeviceModel>();
|
|
|
+ public ObservableCollection<SelectUserDeviceModel> UserWithDeviceList
|
|
|
+ {
|
|
|
+ get { return userWithDeviceList; }
|
|
|
+ set { SetProperty(ref userWithDeviceList, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ }
|
|
|
+}
|