コード例 #1
0
        private int CreateAlerts(int tenant, IEnumerable <string> ids_user, AlertTypes type, object data = null)
        {
            var result = 0;

            var users = ids_user as string[] ?? ids_user.ToArray();

            if (users.Length == 0)
            {
                return(result);
            }

            using (var db = GetDb())
            {
                var json_data = GetJsonString(data);

                CreateInsertDelegate create_insert_query = ()
                                                           => new SqlInsert(MAIL_ALERTS)
                                                           .IgnoreExists(true)
                                                           .InColumns(MailAlerts.id_tenant,
                                                                      MailAlerts.id_user,
                                                                      MailAlerts.id_mailbox,
                                                                      MailAlerts.type,
                                                                      MailAlerts.data);

                var insert_query = create_insert_query();

                int i, users_len;
                for (i = 0, users_len = users.Length; i < users_len; i++)
                {
                    var user_id = users[i];

                    insert_query
                    .Values(tenant, user_id, -1, (int)type, json_data);

                    if ((i % 100 != 0 || i == 0) && i + 1 != users_len)
                    {
                        continue;
                    }

                    result      += db.ExecuteNonQuery(insert_query);
                    insert_query = create_insert_query();
                }
            }
            return(result);
        }
コード例 #2
0
        private int CreateAlerts(IDbManager db, int tenant, List <string> users, AlertTypes type, object data = null)
        {
            var result = 0;

            if (!users.Any())
            {
                return(result);
            }


            var jsonData = MailUtil.GetJsonString(data);

            CreateInsertDelegate createInsertQuery = ()
                                                     => new SqlInsert(MailAlertsTable.name)
                                                     .IgnoreExists(true)
                                                     .InColumns(MailAlertsTable.Columns.id_tenant,
                                                                MailAlertsTable.Columns.id_user,
                                                                MailAlertsTable.Columns.id_mailbox,
                                                                MailAlertsTable.Columns.type,
                                                                MailAlertsTable.Columns.data);

            var insertQuery = createInsertQuery();

            int i, usersLen;

            for (i = 0, usersLen = users.Count; i < usersLen; i++)
            {
                var user = users[i];

                insertQuery
                .Values(tenant, user, -1, (int)type, jsonData);

                if ((i % 100 != 0 || i == 0) && i + 1 != usersLen)
                {
                    continue;
                }

                result     += db.ExecuteNonQuery(insertQuery);
                insertQuery = createInsertQuery();
            }

            return(result);
        }
コード例 #3
0
        public void SaveAttachments(DbManager db, int tenant, int messageId, List <MailAttachment> attachments)
        {
            if (!attachments.Any())
            {
                return;
            }

            CreateInsertDelegate createInsertQuery = () => new SqlInsert(AttachmentTable.Name)
                                                     .InColumns(AttachmentTable.Columns.MailId,
                                                                AttachmentTable.Columns.RealName,
                                                                AttachmentTable.Columns.StoredName,
                                                                AttachmentTable.Columns.Type,
                                                                AttachmentTable.Columns.Size,
                                                                AttachmentTable.Columns.FileNumber,
                                                                AttachmentTable.Columns.NeedRemove,
                                                                AttachmentTable.Columns.ContentId,
                                                                AttachmentTable.Columns.IdTenant,
                                                                AttachmentTable.Columns.IdMailbox);

            var insertQuery = createInsertQuery();

            int i, len;

            for (i = 0, len = attachments.Count; i < len; i++)
            {
                var attachment = attachments[i];

                insertQuery
                .Values(messageId, attachment.fileName, attachment.storedName, attachment.contentType, attachment.size,
                        attachment.fileNumber, 0, attachment.contentId, tenant, attachment.mailboxId);

                if ((i % 100 != 0 || i == 0) && i + 1 != len)
                {
                    continue;
                }
                db.ExecuteNonQuery(insertQuery);
                insertQuery = createInsertQuery();
            }

            ReCountAttachments(db, messageId);
        }
コード例 #4
0
        public void SaveAttachments(DbManager db, int id_tenant, int id_mail, List <MailAttachment> attachments)
        {
            if (!attachments.Any())
            {
                return;
            }

            CreateInsertDelegate create_insert_query = () => new SqlInsert(AttachmentTable.name)
                                                       .InColumns(AttachmentTable.Columns.id_mail,
                                                                  AttachmentTable.Columns.name,
                                                                  AttachmentTable.Columns.stored_name,
                                                                  AttachmentTable.Columns.type,
                                                                  AttachmentTable.Columns.size,
                                                                  AttachmentTable.Columns.file_number,
                                                                  AttachmentTable.Columns.need_remove,
                                                                  AttachmentTable.Columns.content_id,
                                                                  AttachmentTable.Columns.id_tenant);

            var insert_query = create_insert_query();

            int i, len;

            for (i = 0, len = attachments.Count; i < len; i++)
            {
                var attachment = attachments[i];

                insert_query
                .Values(id_mail, attachment.fileName, attachment.storedName, attachment.contentType, attachment.size,
                        attachment.fileNumber, 0, attachment.contentId, id_tenant);

                if (i % 100 == 0 && i != 0 || i + 1 == len)
                {
                    db.ExecuteNonQuery(insert_query);
                    insert_query = create_insert_query();
                }
            }

            ReCountAttachments(db, id_mail);
        }
コード例 #5
0
ファイル: TagMailDao.cs プロジェクト: julthep/CommunityServer
        public void SetMessagesTag(IEnumerable <int> messageIds, int tagId)
        {
            var idMessages = messageIds as IList <int> ?? messageIds.ToList();

            if (!idMessages.Any())
            {
                return;
            }

            CreateInsertDelegate createInsertQuery = ()
                                                     => new SqlInsert(TagMailTable.TABLE_NAME)
                                                     .IgnoreExists(true)
                                                     .InColumns(TagMailTable.Columns.MailId,
                                                                TagMailTable.Columns.TagId,
                                                                TagMailTable.Columns.Tenant,
                                                                TagMailTable.Columns.User);

            var insertQuery = createInsertQuery();

            int i, messagessLen;

            for (i = 0, messagessLen = idMessages.Count; i < messagessLen; i++)
            {
                var messageId = idMessages[i];

                insertQuery
                .Values(messageId, tagId, Tenant, CurrentUserId);

                if ((i % 100 != 0 || i == 0) && i + 1 != messagessLen)
                {
                    continue;
                }

                Db.ExecuteNonQuery(insertQuery);

                insertQuery = createInsertQuery();
            }
        }
コード例 #6
0
        private void SetMessagesTag(DbManager db, int tenant, string user, IEnumerable <int> messageIds, int tagId)
        {
            var idMessages = messageIds as IList <int> ?? messageIds.ToList();

            if (!idMessages.Any())
            {
                return;
            }

            CreateInsertDelegate createInsertQuery = ()
                                                     => new SqlInsert(TagMailTable.Name)
                                                     .IgnoreExists(true)
                                                     .InColumns(TagMailTable.Columns.MailId,
                                                                TagMailTable.Columns.TagId,
                                                                TagMailTable.Columns.Tenant,
                                                                TagMailTable.Columns.User);

            var insertQuery = createInsertQuery();

            int i, messagessLen;

            for (i = 0, messagessLen = idMessages.Count; i < messagessLen; i++)
            {
                var messageId = idMessages[i];

                insertQuery
                .Values(messageId, tagId, tenant, user);

                if ((i % 100 != 0 || i == 0) && i + 1 != messagessLen)
                {
                    continue;
                }
                db.ExecuteNonQuery(insertQuery);
                insertQuery = createInsertQuery();
            }

            UpdateTagsCount(db, tenant, user, new[] { tagId });
        }
コード例 #7
0
        private void SetMessageTags(DbManager db, int tenant, string user, int messageId, IEnumerable <int> tagIds)
        {
            var idTags = tagIds as IList <int> ?? tagIds.ToList();

            if (!idTags.Any())
            {
                return;
            }

            CreateInsertDelegate createInsertQuery = ()
                                                     => new SqlInsert(TagMailTable.name)
                                                     .IgnoreExists(true)
                                                     .InColumns(TagMailTable.Columns.id_mail,
                                                                TagMailTable.Columns.id_tag,
                                                                TagMailTable.Columns.id_tenant,
                                                                TagMailTable.Columns.id_user);

            var insertQuery = createInsertQuery();

            int i, tagsLen;

            for (i = 0, tagsLen = idTags.Count; i < tagsLen; i++)
            {
                var tagId = idTags[i];

                insertQuery
                .Values(messageId, tagId, tenant, user);

                if ((i % 100 != 0 || i == 0) && i + 1 != tagsLen)
                {
                    continue;
                }
                db.ExecuteNonQuery(insertQuery);
                insertQuery = createInsertQuery();
            }

            UpdateTagsCount(db, tenant, user, idTags);
        }
コード例 #8
0
        private void SetMessagesTag(DbManager db, int tenant, string user, IEnumerable <int> message_ids, int tag_id)
        {
            var id_messages = message_ids as IList <int> ?? message_ids.ToList();

            if (!id_messages.Any())
            {
                return;
            }

            CreateInsertDelegate create_insert_query = ()
                                                       => new SqlInsert(MAIL_TAG_MAIL)
                                                       .IgnoreExists(true)
                                                       .InColumns(TagMailFields.id_mail,
                                                                  TagMailFields.id_tag,
                                                                  TagMailFields.id_tenant,
                                                                  TagMailFields.id_user);

            var insert_query = create_insert_query();

            int i, messagess_len;

            for (i = 0, messagess_len = id_messages.Count; i < messagess_len; i++)
            {
                var message_id = id_messages[i];

                insert_query
                .Values(message_id, tag_id, tenant, user);

                if (i % 100 == 0 && i != 0 || i + 1 == messagess_len)
                {
                    db.ExecuteNonQuery(insert_query);
                    insert_query = create_insert_query();
                }
            }

            UpdateTagsCount(db, tenant, user, new[] { tag_id });
        }