liaoxujun@qq.com
2024-02-18 b73ffe97fc885b652b20328c1c3d079a9124fb89
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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<FrameworkUser>
    {
        
        public List<string> _AdminFrameworkUserFTempSelected { get; set; }
        [Display(Name = "_Model.FrameworkRole")]
        public List<string> SelectedFrameworkUserRolesIDs { get; set; }
        [Display(Name = "_Model.FrameworkGroup")]
        public List<string> SelectedFrameworkUserGroupsIDs { get; set; }
 
        public FrameworkUserVM()
        {
            
 
        }
 
        protected override void InitVM()
        {
            
            SelectedFrameworkUserRolesIDs = DC.Set<FrameworkUserRole>().Where(x => x.UserCode == Entity.ITCode).Select(x => x.RoleCode).ToList();
            SelectedFrameworkUserGroupsIDs =  DC.Set<FrameworkUserGroup>().Where(x => x.UserCode == Entity.ITCode).Select(x => x.GroupCode).ToList();
 
        }
 
        public override DuplicatedInfo<FrameworkUser> SetDuplicatedCheck()
        {
            var rv = CreateFieldsInfo(SimpleField(x => x.ITCode));
            return rv;
 
        }
 
        public override async Task DoAddAsync()        
        {
            
            if (SelectedFrameworkUserRolesIDs != null)
            {
                List<Guid> todelete = new List<Guid>();
                todelete.AddRange(DC.Set<FrameworkUserRole>().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<Guid> todelete = new List<Guid>();
                todelete.AddRange(DC.Set<FrameworkUserGroup>().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<Guid> todelete = new List<Guid>();
                todelete.AddRange(DC.Set<FrameworkUserRole>().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<Guid> todelete = new List<Guid>();
                todelete.AddRange(DC.Set<FrameworkUserGroup>().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();
 
        }
    }
}