/// <summary> /// Fixed: /// </summary> public static Dictionary <string, ControlData> Destinations( Context context, SiteSettings ss, long referenceId, Dictionary <string, ControlData> addressBook, string searchRange, string searchText = "") { var joinDepts = new SqlJoin( "\"Depts\"", SqlJoin.JoinTypes.LeftOuter, "\"Users\".\"DeptId\"=\"Depts\".\"DeptId\""); var joinMailAddresses = new SqlJoin( "\"MailAddresses\"", SqlJoin.JoinTypes.Inner, "\"Users\".\"UserId\"=\"MailAddresses\".\"OwnerId\""); switch (searchRange) { case "DefaultAddressBook": return(searchText == string.Empty ? addressBook : addressBook .Where(o => o.Value.Text.IndexOf(searchText, System.Globalization.CompareOptions.IgnoreCase | System.Globalization.CompareOptions.IgnoreKanaType | System.Globalization.CompareOptions.IgnoreWidth) != -1) .ToDictionary(o => o.Key, o => new ControlData(o.Value.Text))); case "SiteUser": return(DestinationCollection( context: context, join: Sqls.SqlJoinCollection( joinDepts, joinMailAddresses), where : Rds.UsersWhere() .SiteUserWhere(siteId: referenceId) .MailAddresses_OwnerType("Users") .SearchText( context: context, searchText: searchText) .Users_TenantId(context.TenantId))); case "All": default: return(!searchText.IsNullOrEmpty() ? DestinationCollection( context: context, join: Sqls.SqlJoinCollection( joinDepts, joinMailAddresses), where : Rds.UsersWhere() .MailAddresses_OwnerType("Users") .SearchText( context: context, searchText: searchText) .Users_TenantId(context.TenantId)) : new Dictionary <string, ControlData>()); } }
/// <summary> /// Fixed: /// </summary> public static Dictionary <string, ControlData> Destinations( long referenceId, Dictionary <string, ControlData> addressBook, string searchRange, string searchText = "") { var joinDepts = new SqlJoin( "[Depts]", SqlJoin.JoinTypes.LeftOuter, "[Users].[DeptId]=[Depts].[DeptId]"); var joinMailAddresses = new SqlJoin( "[MailAddresses]", SqlJoin.JoinTypes.Inner, "[Users].[UserId]=[MailAddresses].[OwnerId]"); switch (searchRange) { case "DefaultAddressBook": return(searchText == string.Empty ? addressBook : addressBook .Where(o => o.Value.Text.IndexOf(searchText, System.Globalization.CompareOptions.IgnoreCase | System.Globalization.CompareOptions.IgnoreKanaType | System.Globalization.CompareOptions.IgnoreWidth) != -1) .ToDictionary(o => o.Key, o => new ControlData(o.Value.Text))); case "SiteUser": var joinPermissions = new SqlJoin( "[Permissions]", SqlJoin.JoinTypes.Inner, "([Users].[UserId]=[Permissions].[UserId] and [Permissions].[UserId] <> 0) or " + "([Users].[DeptId]=[Permissions].[DeptId] and [Permissions].[DeptId] <> 0)"); return(DestinationCollection( Sqls.SqlJoinCollection(joinDepts, joinMailAddresses, joinPermissions), Rds.UsersWhere() .MailAddresses_OwnerType("Users") .Permissions_ReferenceId(referenceId) .SearchText(searchText) .Users_TenantId(Sessions.TenantId()))); case "All": default: return(!searchText.IsNullOrEmpty() ? DestinationCollection( Sqls.SqlJoinCollection(joinDepts, joinMailAddresses), Rds.UsersWhere() .MailAddresses_OwnerType("Users") .SearchText(searchText) .Users_TenantId(Sessions.TenantId())) : new Dictionary <string, ControlData>()); } }