// WTM默认页面 Wtm buidin page using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; namespace WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkUserVms { public class FrameworkUserVM : BaseCRUDVM { [JsonIgnore] public List AllRoles { get; set; } [JsonIgnore] public List AllGroups { get; set; } [Display(Name = "_Admin.Role")] public List SelectedRolesCodes { get; set; } [Display(Name = "_Admin.Group")] public List SelectedGroupCodes { get; set; } public FrameworkUserVM() { } public override DuplicatedInfo SetDuplicatedCheck() { var rv = CreateFieldsInfo(SimpleField(x => x.ITCode)); return rv; } protected override void InitVM() { AllRoles = DC.Set().GetSelectListItems(Wtm, y => y.RoleName, y => y.RoleCode); AllGroups = DC.Set().GetSelectListItems(Wtm, y => y.GroupName, y => y.GroupCode); SelectedRolesCodes = DC.Set().Where(x => x.UserCode == Entity.ITCode).Select(x => x.RoleCode).ToList(); SelectedGroupCodes = DC.Set().Where(x => x.UserCode == Entity.ITCode).Select(x => x.GroupCode).ToList(); } protected override void ReInitVM() { AllRoles = DC.Set().GetSelectListItems(Wtm, y => y.RoleName, y => y.RoleCode); AllGroups = DC.Set().GetSelectListItems(Wtm, y => y.GroupName, y => y.GroupCode); } public override async Task DoAddAsync() { using (var trans = DC.BeginTransaction()) { if (SelectedRolesCodes != null) { foreach (var rolecode in SelectedRolesCodes) { FrameworkUserRole r = new FrameworkUserRole { RoleCode = rolecode, UserCode = Entity.ITCode }; DC.AddEntity(r); } } if (SelectedGroupCodes != null) { foreach (var groupcode in SelectedGroupCodes) { FrameworkUserGroup g = new FrameworkUserGroup { GroupCode = groupcode, UserCode = Entity.ITCode }; DC.AddEntity(g); } } Entity.IsValid = true; Entity.Password = Utils.GetMD5String(Entity.Password); await base.DoAddAsync(); if (MSD.IsValid) { trans.Commit(); } else { trans.Rollback(); } } } public override async Task DoEditAsync(bool updateAllFields = false) { if (FC.ContainsKey("Entity.ITCode")) { FC.Remove("Entity.ITCode"); } using (var trans = DC.BeginTransaction()) { if (SelectedRolesCodes != null) { List todelete = new List(); todelete.AddRange(DC.Set().AsNoTracking().Where(x => x.UserCode == Entity.ITCode).Select(x => x.ID)); foreach (var item in todelete) { DC.DeleteEntity(new FrameworkUserRole { ID = item }); } } if (SelectedGroupCodes != null) { List todelete = new List(); todelete.AddRange(DC.Set().AsNoTracking().Where(x => x.UserCode == Entity.ITCode).Select(x => x.ID)); foreach (var item in todelete) { DC.DeleteEntity(new FrameworkUserGroup { ID = item }); } } if (SelectedRolesCodes != null) { foreach (var rolecode in SelectedRolesCodes) { FrameworkUserRole r = new FrameworkUserRole { RoleCode = rolecode, UserCode = Entity.ITCode }; DC.AddEntity(r); } } if (SelectedGroupCodes != null) { foreach (var groupcode in SelectedGroupCodes) { FrameworkUserGroup g = new FrameworkUserGroup { GroupCode = groupcode, UserCode = Entity.ITCode }; DC.AddEntity(g); } } await base.DoEditAsync(updateAllFields); if (MSD.IsValid) { trans.Commit(); await Wtm.RemoveUserCache(Entity.ITCode.ToString()); } else { trans.Rollback(); } } } public override async Task DoDeleteAsync() { using (var tran = DC.BeginTransaction()) { try { await base.DoDeleteAsync(); var ur = DC.Set().Where(x => x.UserCode == Entity.ITCode); DC.Set().RemoveRange(ur); var ug = DC.Set().Where(x => x.UserCode == Entity.ITCode); DC.Set().RemoveRange(ug); DC.SaveChanges(); tran.Commit(); } catch { tran.Rollback(); } } await Wtm.RemoveUserCache(Entity.ITCode.ToString()); } public void ChangePassword() { Entity.Password = Utils.GetMD5String(Entity.Password); DC.UpdateProperty(Entity, x => x.Password); DC.SaveChanges(); } } }