using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; using Microsoft.EntityFrameworkCore; using cy_scdz.Model; namespace cy_scdz.ViewModel._Admin.FrameworkUserVMs { public partial class FrameworkUserVM : BaseCRUDVM { public List _AdminFrameworkUserFTempSelected { get; set; } [Display(Name = "_Model.FrameworkRole")] public List SelectedFrameworkUserRolesIDs { get; set; } [Display(Name = "_Model.FrameworkGroup")] public List SelectedFrameworkUserGroupsIDs { get; set; } public FrameworkUserVM() { } protected override void InitVM() { SelectedFrameworkUserRolesIDs = DC.Set().Where(x => x.UserCode == Entity.ITCode).Select(x => x.RoleCode).ToList(); SelectedFrameworkUserGroupsIDs = DC.Set().Where(x => x.UserCode == Entity.ITCode).Select(x => x.GroupCode).ToList(); } public override DuplicatedInfo SetDuplicatedCheck() { var rv = CreateFieldsInfo(SimpleField(x => x.ITCode)); return rv; } public override async Task DoAddAsync() { if (SelectedFrameworkUserRolesIDs != 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 }); } foreach (var id in SelectedFrameworkUserRolesIDs) { FrameworkUserRole r = new FrameworkUserRole { RoleCode = id, UserCode = Entity.ITCode, TenantCode = LoginUserInfo.CurrentTenant }; DC.AddEntity(r); } } if (SelectedFrameworkUserGroupsIDs != 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 }); } foreach (var id in SelectedFrameworkUserGroupsIDs) { FrameworkUserGroup g = new FrameworkUserGroup { GroupCode = id, UserCode = Entity.ITCode, TenantCode = LoginUserInfo.CurrentTenant }; DC.AddEntity(g); } } await base.DoAddAsync(); } public override async Task DoEditAsync(bool updateAllFields = false) { if (SelectedFrameworkUserRolesIDs != 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 }); } foreach (var id in SelectedFrameworkUserRolesIDs) { FrameworkUserRole r = new FrameworkUserRole { RoleCode = id, UserCode = Entity.ITCode, TenantCode = LoginUserInfo.CurrentTenant }; DC.AddEntity(r); } } if (SelectedFrameworkUserGroupsIDs != 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 }); } foreach (var id in SelectedFrameworkUserGroupsIDs) { FrameworkUserGroup g = new FrameworkUserGroup { GroupCode = id, UserCode = Entity.ITCode, TenantCode = LoginUserInfo.CurrentTenant }; DC.AddEntity(g); } } await base.DoEditAsync(); await Wtm.RemoveUserCache(Entity.ITCode); } public override async Task DoDeleteAsync() { await base.DoDeleteAsync(); } } }