UserAddOrEditVM.cs 3.46 KB
using HandyControl.Controls;
using HHECS.Application.Enums;
using HHECS.BllModel;
using HHECS.Infrastructure.CommonHelper;
using HHECS.Model.Dtos;
using HHECS.Model.Entities;
using HHECS.WinCommon.ViewModel;
using Newtonsoft.Json;
using System;
using System.Collections.ObjectModel;
using System.Linq;


namespace HHECS.WinClient.View.UserPermission
{
    public class UserAddOrEditVM : VMBase
    {
        public bool CanEnable { get; set; } = true;

        public bool IsReadOnly { get; set; } = true;

        public string Title { get; set; }

        public User User { get; set; }

        public ObservableCollection<RoleDto> RoleDtos { get; set; } = new ObservableCollection<RoleDto>();

        public UserAddOrEditVM(string userCode)
        {
            Init(userCode);
        }

        private void Init(string userCode)
        {
            var result = App.PermissionService.GetAllRole();
            if (!result.Success)
            {
                MessageBox.Show("获取角色信息出错");
                CanEnable = false;
                return;
            }
            result.Data.ForEach(x =>
            {
                RoleDtos.Add(ObjectHelper.TransReflection<Role, RoleDto>(x));
            });
            if (userCode?.Length > 0)
            {
                Title = "编辑";
                var userResult = App.PermissionService.GetUserWithRoles(userCode);
                if (userResult.Success)
                {
                    foreach (var item in RoleDtos)
                    {
                        item.IsSelected = userResult.Data.Roles.Exists(t => t.Id == item.Id);
                    }
                }
                else
                {
                    MessageBox.Show($"获取用户角色失败:{userResult.Msg}");
                    CanEnable = false;
                }
            }
            else
            {
                Title = "新增";
                IsReadOnly = false;
                User = new User();
            }
        }

        public void Save()
        {
            //用户名、编码、密码和角色必要
            if (String.IsNullOrWhiteSpace(User.UserName) || String.IsNullOrWhiteSpace(User.UserCode) || String.IsNullOrWhiteSpace(User.Password) || !RoleDtos.Any(t => t.IsSelected == true))
            {
                MessageBox.Show("要求必须提供用户名、用户编码、密码和至少一种角色");
                return;
            }
            var title = User.Id == 0 ? Application.Enums.Title.UserAdd : Application.Enums.Title.UserEdit;
            var a = new
            {
                UserCode = User.UserCode,
                UserName = User.UserName,
            };
            BllResult<User> result = App.PermissionService.InsertOrUpdateUserWithRoles(User, RoleDtos.Where(t => t.IsSelected == true).MapListTo<RoleDto, Role>().ToList());
            if (result.Success)
            {
                App.LogService.LogOperation(title, ModuleConst.User, $"用户保存成功.数据:{JsonConvert.SerializeObject(a)}", result.Code.ToString(), App.User.UserCode);
                MessageBox.Show("保存成功");
                User.Id = result.Data.Id;
            }
            else
            {
                App.LogService.LogOperation(title, ModuleConst.User, $"用户保存失败.数据:{JsonConvert.SerializeObject(a)},详情:{result.Msg}", result.Code.ToString(), App.User.UserCode);
                MessageBox.Show($"保存失败:{result.Msg}");
            }
        }
    }
}