private static void UpdateOrInsert( string loginId, DirectoryEntry entry, ParameterAccessor.Parts.Ldap ldap) { var deptCode = entry.Property(ldap.LdapDeptCode, ldap.LdapDeptCodePattern); var deptName = entry.Property(ldap.LdapDeptName, ldap.LdapDeptNamePattern); var deptExists = !deptCode.IsNullOrEmpty() && !deptName.IsNullOrEmpty(); var userCode = entry.Property(ldap.LdapUserCode, ldap.LdapUserCodePattern); var name = Name(loginId, entry, ldap); var mailAddress = entry.Property(ldap.LdapMailAddress, ldap.LdapMailAddressPattern); var statements = new List <SqlStatement>(); if (deptExists) { statements.Add(Rds.UpdateOrInsertDepts( param: Rds.DeptsParam() .TenantId(ldap.LdapTenantId) .DeptCode(deptCode) .DeptName(deptName), where : Rds.DeptsWhere().DeptCode(deptCode))); } statements.Add(Rds.UpdateOrInsertUsers( param: Rds.UsersParam() .TenantId(ldap.LdapTenantId) .LoginId(loginId) .UserCode(userCode) .Name(name) .DeptId( sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode)), _using: deptExists) .DeptId(0, _using: !deptExists), where : Rds.UsersWhere().LoginId(loginId))); if (!mailAddress.IsNullOrEmpty()) { statements.Add(Rds.PhysicalDeleteMailAddresses( where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))))); statements.Add(Rds.InsertMailAddresses( param: Rds.MailAddressesParam() .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))) .OwnerType("Users") .MailAddress(mailAddress))); } statements.Add(StatusUtilities.UpdateStatus( StatusUtilities.Types.DeptsUpdated, tenantId: ldap.LdapTenantId)); statements.Add(StatusUtilities.UpdateStatus( StatusUtilities.Types.UsersUpdated, tenantId: ldap.LdapTenantId)); Rds.ExecuteNonQuery( transactional: true, statements: statements.ToArray()); }
public Error.Types PhysicalDelete( SiteSettings ss, Sqls.TableTypes tableType = Sqls.TableTypes.Normal) { Rds.ExecuteNonQuery( transactional: true, statements: Rds.PhysicalDeleteDepts( tableType: tableType, param: Rds.DeptsParam().DeptId(DeptId))); return(Error.Types.None); }
public ErrorData PhysicalDelete( Context context, SiteSettings ss, Sqls.TableTypes tableType = Sqls.TableTypes.Normal) { Rds.ExecuteNonQuery( context: context, transactional: true, statements: Rds.PhysicalDeleteDepts( tableType: tableType, param: Rds.DeptsParam().DeptId(DeptId))); return(new ErrorData(type: Error.Types.None)); }
/// <summary> /// Fixed: /// </summary> private static void InitializeDepts(DemoModel demoModel, Dictionary <string, long> idHash) { Def.DemoDefinitionCollection .Where(o => o.Type == "Depts") .ForEach(demoDefinition => idHash.Add(demoDefinition.Id, Rds.ExecuteScalar_long(statements: Rds.InsertDepts( selectIdentity: true, param: Rds.DeptsParam() .TenantId(demoModel.TenantId) .DeptCode(demoDefinition.ClassA) .DeptName(demoDefinition.Title) .CreatedTime(demoDefinition.CreatedTime.DemoTime(demoModel)) .UpdatedTime(demoDefinition.UpdatedTime.DemoTime(demoModel)))))); }
private static void UpdateOrInsert(string loginId, DirectoryEntry entry) { var deptCode = entry.Property(Parameters.Authentication.LdapDeptCode); var deptName = entry.Property(Parameters.Authentication.LdapDeptName); var userCode = entry.Property(Parameters.Authentication.LdapUserCode); var firstName = entry.Property(Parameters.Authentication.LdapFirstName); var lastName = entry.Property(Parameters.Authentication.LdapLastName); var mailAddress = entry.Property(Parameters.Authentication.LdapMailAddress); Rds.ExecuteNonQuery(statements: new SqlStatement[] { Rds.UpdateOrInsertDepts( param: Rds.DeptsParam() .TenantId(Parameters.Authentication.LdapTenantId) .DeptCode(deptCode) .DeptName(deptName), where : Rds.DeptsWhere().DeptCode(deptCode)), Rds.UpdateOrInsertUsers( param: Rds.UsersParam() .TenantId(Parameters.Authentication.LdapTenantId) .LoginId(loginId) .UserCode(userCode) .Name(lastName + " " + firstName) .DeptId(sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode))), where : Rds.UsersWhere().LoginId(loginId)), Rds.UpdateOrInsertMailAddresses( param: Rds.MailAddressesParam() .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))) .OwnerType("Users") .MailAddress(mailAddress), where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId)))) }); }
public static void UpdateOrInsert( Context context, int tenantId, string loginId, string name, string mailAddress, DateTime synchronizedTime, SamlAttributes attributes) { var deptCode = attributes[nameof(UserModel.DeptCode)]; var deptName = attributes[nameof(UserModel.Dept)]; var deptSettings = !deptCode.IsNullOrEmpty() && !deptName.IsNullOrEmpty(); var isEmptyDeptCode = deptCode == string.Empty; var user = new UserModel().Get( context: context, ss: null, where: Rds.UsersWhere() .TenantId(tenantId) .LoginId(loginId) .Name(name) .TenantManager( attributes.TenantManager, _using: attributes[nameof(UserModel.TenantManager)] != null) .FirstName( attributes[nameof(UserModel.FirstName)], _using: attributes[nameof(UserModel.FirstName)] != null) .LastName( attributes[nameof(UserModel.LastName)], _using: attributes[nameof(UserModel.LastName)] != null) .FirstAndLastNameOrder( attributes[nameof(UserModel.FirstAndLastNameOrder)], _using: attributes[nameof(UserModel.FirstAndLastNameOrder)] != null) .UserCode( attributes[nameof(UserModel.UserCode)], _using: attributes[nameof(UserModel.UserCode)] != null) .Birthday( attributes[nameof(UserModel.Birthday)], _using: attributes[nameof(UserModel.Birthday)] != null) .Gender( attributes[nameof(UserModel.Gender)], _using: attributes[nameof(UserModel.Gender)] != null) .Language( attributes[nameof(UserModel.Language)], _using: attributes[nameof(UserModel.Language)] != null) .TimeZone( attributes[nameof(UserModel.TimeZone)], _using: attributes[nameof(UserModel.TimeZone)] != null) .DeptId( sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode)), _using: deptSettings) .Body( attributes[nameof(UserModel.Body)], _using: attributes[nameof(UserModel.Body)] != null)); if (!isEmptyDeptCode && user.AccessStatus == Databases.AccessStatuses.Selected) { if (mailAddress.IsNullOrEmpty()) { return; } var addressCount = Rds.ExecuteScalar_long( context: context, statements: new[] { Rds.SelectMailAddresses( dataTableName: "Count", column: Rds.MailAddressesColumn().MailAddressesCount(), where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))) .MailAddress(mailAddress)) }); if (addressCount > 0) { return; } } var statements = new List <SqlStatement>(); if (deptSettings) { statements.Add(Rds.UpdateOrInsertDepts( param: Rds.DeptsParam() .TenantId(tenantId) .DeptCode(deptCode) .DeptName(deptName), where : Rds.DeptsWhere().DeptCode(deptCode))); } var param = Rds.UsersParam() .TenantId(tenantId) .LoginId(loginId) .Name(name) .TenantManager(attributes.TenantManager, _using: attributes[nameof(UserModel.TenantManager)] != null) .SynchronizedTime(synchronizedTime) .FirstName( attributes[nameof(UserModel.FirstName)], _using: attributes[nameof(UserModel.FirstName)] != null) .LastName( attributes[nameof(UserModel.LastName)], _using: attributes[nameof(UserModel.LastName)] != null) .FirstAndLastNameOrder( attributes[nameof(UserModel.FirstAndLastNameOrder)], _using: attributes[nameof(UserModel.FirstAndLastNameOrder)] != null) .UserCode( attributes[nameof(UserModel.UserCode)], _using: attributes[nameof(UserModel.UserCode)] != null) .DeptId( sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode)), _using: deptSettings) .DeptId(0, _using: isEmptyDeptCode) .Birthday( attributes[nameof(UserModel.Birthday)], _using: attributes[nameof(UserModel.Birthday)] != null) .Gender( attributes[nameof(UserModel.Gender)], _using: attributes[nameof(UserModel.Gender)] != null) .Language( attributes[nameof(UserModel.Language)], _using: attributes[nameof(UserModel.Language)] != null) .TimeZone( attributes[nameof(UserModel.TimeZone)], _using: attributes[nameof(UserModel.TimeZone)] != null) .Body( attributes[nameof(UserModel.Body)], _using: attributes[nameof(UserModel.Body)] != null); statements.Add(Rds.UpdateOrInsertUsers( param: param, where : Rds.UsersWhere().TenantId(tenantId).LoginId(loginId), addUpdatorParam: true, addUpdatedTimeParam: true)); if (!mailAddress.IsNullOrEmpty()) { statements.Add(Rds.PhysicalDeleteMailAddresses( where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))))); statements.Add(Rds.InsertMailAddresses( param: Rds.MailAddressesParam() .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))) .OwnerType("Users") .MailAddress(mailAddress))); } statements.Add(StatusUtilities.UpdateStatus( tenantId: tenantId, type: StatusUtilities.Types.DeptsUpdated)); statements.Add(StatusUtilities.UpdateStatus( tenantId: tenantId, type: StatusUtilities.Types.UsersUpdated)); Rds.ExecuteNonQuery( context: context, transactional: true, statements: statements.ToArray()); }
private static void UpdateOrInsert( Context context, string loginId, string deptCode, string deptName, string userCode, string name, string mailAddress, List <KeyValuePair <LdapExtendedAttribute, string> > attributes, ParameterAccessor.Parts.Ldap ldap, DateTime synchronizedTime) { var deptExists = !deptCode.IsNullOrEmpty() && !deptName.IsNullOrEmpty(); var deptSettings = !ldap.LdapDeptCode.IsNullOrEmpty() && !ldap.LdapDeptName.IsNullOrEmpty(); var statements = new List <SqlStatement>(); if (deptExists) { statements.Add(Rds.UpdateOrInsertDepts( param: Rds.DeptsParam() .TenantId(ldap.LdapTenantId) .DeptCode(deptCode) .DeptName(deptName), where : Rds.DeptsWhere().DeptCode(deptCode))); } var exists = Rds.ExecuteScalar_int( context: context, statements: Rds.SelectUsers( column: Rds.UsersColumn().UsersCount(), where : Rds.UsersWhere().LoginId( value: context.Sqls.EscapeValue(loginId), _operator: context.Sqls.LikeWithEscape))) == 1; var param = Rds.UsersParam() .TenantId(ldap.LdapTenantId) .LoginId(loginId, _using: !exists) .UserCode(userCode) .Name(name) .DeptId( sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode)), _using: deptExists) .DeptId(0, _using: deptSettings && !deptExists) .LdapSearchRoot(ldap.LdapSearchRoot) .SynchronizedTime(synchronizedTime); attributes?.ForEach(attributeAndName => param.Add( $"\"Users\".\"{attributeAndName.Key.ColumnName}\"", attributeAndName.Key.ColumnName, attributeAndName.Value)); statements.Add(Rds.UpdateOrInsertUsers( param: param, where : Rds.UsersWhere().LoginId( value: context.Sqls.EscapeValue(loginId), _operator: context.Sqls.LikeWithEscape), addUpdatorParam: false, addUpdatedTimeParam: false)); if (!mailAddress.IsNullOrEmpty()) { statements.Add(Rds.PhysicalDeleteMailAddresses( where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId( value: context.Sqls.EscapeValue(loginId), _operator: context.Sqls.LikeWithEscape))))); statements.Add(Rds.InsertMailAddresses( param: Rds.MailAddressesParam() .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId( value: context.Sqls.EscapeValue(loginId), _operator: context.Sqls.LikeWithEscape))) .OwnerType("Users") .MailAddress(mailAddress))); } var ss = new SiteSettings(); statements.Add(StatusUtilities.UpdateStatus( tenantId: ldap.LdapTenantId, type: StatusUtilities.Types.DeptsUpdated)); statements.Add(StatusUtilities.UpdateStatus( tenantId: ldap.LdapTenantId, type: StatusUtilities.Types.UsersUpdated)); Repository.ExecuteNonQuery( context: context, transactional: true, statements: statements.ToArray()); }
private static void UpdateOrInsert( Context context, string loginId, SearchResult result, ParameterAccessor.Parts.Ldap ldap, DateTime synchronizedTime) { var deptCode = result.Property( context: context, name: ldap.LdapDeptCode, pattern: ldap.LdapDeptCodePattern); var deptName = result.Property( context: context, name: ldap.LdapDeptName, pattern: ldap.LdapDeptNamePattern); var deptExists = !deptCode.IsNullOrEmpty() && !deptName.IsNullOrEmpty(); var deptSettings = !ldap.LdapDeptCode.IsNullOrEmpty() && !ldap.LdapDeptName.IsNullOrEmpty(); var userCode = result.Property( context: context, name: ldap.LdapUserCode, pattern: ldap.LdapUserCodePattern); var name = Name( context: context, loginId: loginId, result: result, ldap: ldap); var mailAddress = result.Property( context: context, name: ldap.LdapMailAddress, pattern: ldap.LdapMailAddressPattern); var statements = new List <SqlStatement>(); if (deptExists) { statements.Add(Rds.UpdateOrInsertDepts( param: Rds.DeptsParam() .TenantId(ldap.LdapTenantId) .DeptCode(deptCode) .DeptName(deptName), where : Rds.DeptsWhere().DeptCode(deptCode))); } var param = Rds.UsersParam() .TenantId(ldap.LdapTenantId) .LoginId(loginId) .UserCode(userCode) .Name(name) .DeptId( sub: Rds.SelectDepts( column: Rds.DeptsColumn().DeptId(), where : Rds.DeptsWhere().DeptCode(deptCode)), _using: deptExists) .DeptId(0, _using: deptSettings && !deptExists) .LdapSearchRoot(ldap.LdapSearchRoot) .SynchronizedTime(synchronizedTime); ldap.LdapExtendedAttributes?.ForEach(attribute => param.Add( $"[Users].[{attribute.ColumnName}]", attribute.ColumnName, result.Property( context: context, name: attribute.Name, pattern: attribute.Pattern))); statements.Add(Rds.UpdateOrInsertUsers( param: param, where : Rds.UsersWhere().LoginId(loginId), addUpdatorParam: false, addUpdatedTimeParam: false)); if (!mailAddress.IsNullOrEmpty()) { statements.Add(Rds.PhysicalDeleteMailAddresses( where : Rds.MailAddressesWhere() .OwnerType("Users") .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))))); statements.Add(Rds.InsertMailAddresses( param: Rds.MailAddressesParam() .OwnerId(sub: Rds.SelectUsers( column: Rds.UsersColumn().UserId(), where : Rds.UsersWhere().LoginId(loginId))) .OwnerType("Users") .MailAddress(mailAddress))); } var ss = new SiteSettings(); statements.Add(StatusUtilities.UpdateStatus( tenantId: ldap.LdapTenantId, type: StatusUtilities.Types.DeptsUpdated)); statements.Add(StatusUtilities.UpdateStatus( tenantId: ldap.LdapTenantId, type: StatusUtilities.Types.UsersUpdated)); Rds.ExecuteNonQuery( context: context, transactional: true, statements: statements.ToArray()); }