Ejemplo n.º 1
0
        /// <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>());
            }
        }