public static UserInfo ParseFrom(DataRow dr) { dr.ThrowIfNull(nameof(dr)); string userId = dr.Get <string>("UserID"); var permGroup = UserPermissionGroup.ParseFrom(dr.Get <string>("PermissionGroup")); // 시스템 그룹에 속한다면 시스템 그룹으로 분류한다. // NOTE(jhlee): 리스트 단위로 유저 정보 조회시, SP로 시스템 그룹에 해당하는 유저 ID 리스트를 전달하기 때문에 // 반환되는 DataTable에는 system 그룹으로 표시되지만, 단 건 셀렉트 시에는 이 로직이 필요함. if (permGroup.GroupType != UserPermissionGroupType.System && AdminAccounts.Contains(userId, StringComparer.OrdinalIgnoreCase)) { permGroup = new UserPermissionGroup(UserPermissionGroupType.System); } return(new UserInfo(userId) { CompanyCode = dr.Get <string>("CompanyCode"), PermissionGroup = permGroup, IsReportEnabled = dr.Get <bool>("IsReportEnabled"), IsDeleted = dr.Get <bool>("IsDeleted"), CreatedDate = dr.Get <DateTimeOffset>("CreatedDate"), DeletedDate = dr.Get <DateTimeOffset?>("DeletedDate"), LastAccessDate = dr.Get <DateTimeOffset?>("LastAccessDate"), // merged --------------------------------- UserName = dr.Get <string>("UserName"), DeptCode = dr.Get <string>("DeptCode"), DeptName = dr.Get <string>("DeptName"), MobileTel = dr.Get <string>("MobileTel") }); }
public void Update(IUserInfoUpdatable fields, out List <UpdatedField> updated) { fields.ThrowIfNull(nameof(fields)); updated = new List <UpdatedField>(); if (PermissionGroup.GroupType != fields.PermissionGroup) { updated.Add(new UpdatedField { FieldName = nameof(PermissionGroup), OldValue = PermissionGroup, NewValue = fields.PermissionGroup }); PermissionGroup = new UserPermissionGroup(fields.PermissionGroup); } if (IsReportEnabled != fields.IsReportEnabled) { updated.Add(new UpdatedField { FieldName = nameof(IsReportEnabled), OldValue = IsReportEnabled, NewValue = fields.IsReportEnabled }); IsReportEnabled = fields.IsReportEnabled; } if (updated.Any()) { Validate(); } }