Example #1
0
        public void SetShare(FileShareRecord r)
        {
            using (var DbManager = GetDbManager())
            {
                if (r.Share == FileShare.None)
                {
                    using (var tx = DbManager.BeginTransaction())
                    {
                        var files = new List<object>();

                        if (r.EntryType == FileEntryType.Folder)
                        {
                            var folders =
                                DbManager.ExecuteList(new SqlQuery("files_folder_tree").Select("folder_id").Where("parent_id", r.EntryId))
                                         .ConvertAll(o => (int) o[0]);
                            files.AddRange(DbManager.ExecuteList(Query("files_file").Select("id").Where(Exp.In("folder_id", folders))).
                                                     ConvertAll(o => o[0]));

                            var d1 = new SqlDelete("files_security")
                                .Where("tenant_id", r.Tenant)
                                .Where(Exp.In("entry_id", folders))
                                .Where("entry_type", (int) FileEntryType.Folder)
                                .Where("subject", r.Subject.ToString());

                            DbManager.ExecuteNonQuery(d1);
                        }
                        else
                        {
                            files.Add(r.EntryId);
                        }

                        if (0 < files.Count)
                        {
                            var d2 = new SqlDelete("files_security")
                                .Where("tenant_id", r.Tenant)
                                .Where(Exp.In("entry_id", files))
                                .Where("entry_type", (int) FileEntryType.File)
                                .Where("subject", r.Subject.ToString());

                            DbManager.ExecuteNonQuery(d2);
                        }

                        tx.Commit();
                    }
                }
                else
                {
                    var i = new SqlInsert("files_security", true)
                        .InColumnValue("tenant_id", r.Tenant)
                        .InColumnValue("entry_id", r.EntryId)
                        .InColumnValue("entry_type", (int) r.EntryType)
                        .InColumnValue("subject", r.Subject.ToString())
                        .InColumnValue("owner", r.Owner.ToString())
                        .InColumnValue("security", (int) r.Share)
                        .InColumnValue("timestamp", DateTime.UtcNow);

                    DbManager.ExecuteNonQuery(i);
                }
            }
        }
Example #2
0
        protected override void _RemoveAlias(MailAddressBase aliasToRemove)
        {
            var removeMailboxAlias = new SqlDelete(AliasTable.name)
                .Where(AliasTable.Columns.address, aliasToRemove.ToString());

            var dbManager = new PostfixAdminDbManager(Server.Id, Server.ConnectionString);
            using (var db = dbManager.GetAdminDb())
            {
                db.ExecuteNonQuery(removeMailboxAlias);
            }
        }
Example #3
0
        public void DeleteShareRecords(params FileShareRecord[] records)
        {
            using (var DbManager = GetDb())
            {
                using (var tx = DbManager.BeginTransaction())
                {
                    foreach (var record in records)
                    {
                        var d1 = new SqlDelete("files_security")
                            .Where("tenant_id", record.Tenant)
                            .Where(Exp.Eq("entry_id", MappingID(record.EntryId)))
                            .Where("entry_type", (int) record.EntryType)
                            .Where("subject", record.Subject.ToString());

                        DbManager.ExecuteNonQuery(d1);
                    }

                    tx.Commit();
                }
            }
        }
        public void ClearMailboxData(MailBox mailbox)
        {
            if(!mailbox.IsRemoved)
                throw new Exception("Mailbox is not removed.");
            
            var deleteMailboxQuery = new SqlDelete(MailboxTable.name)
                                            .Where(MailboxTable.Columns.id, mailbox.MailBoxId)
                                            .Where(MailboxTable.Columns.id_tenant, mailbox.TenantId)
                                            .Where(MailTable.Columns.id_user, mailbox.UserId);

            var deleteMailboxMessagesQuery = new SqlDelete(MailTable.name)
                                            .Where(MailTable.Columns.id_mailbox, mailbox.MailBoxId)
                                            .Where(MailTable.Columns.id_tenant, mailbox.TenantId)
                                            .Where(MailTable.Columns.id_user, mailbox.UserId);

            var deleteMailboxAttachmentsQuery = new SqlDelete(AttachmentTable.name)
                                            .Where(AttachmentTable.Columns.id_mailbox, mailbox.MailBoxId)
                                            .Where(AttachmentTable.Columns.id_tenant, mailbox.TenantId);

            var deleteServerSetupForUserOnlyQuery = new SqlDelete(MailboxServerTable.name)
                .Where(Exp.In(MailboxServerTable.Columns.id, new[] {mailbox.SmtpServerId, mailbox.InServerId}))
                .Where(MailboxServerTable.Columns.is_user_data, 1);

            using (var db = GetDb())
            {
                using (var tx = db.BeginTransaction(IsolationLevel.ReadUncommitted))
                {
                    db.ExecuteNonQuery(deleteMailboxAttachmentsQuery);

                    db.ExecuteNonQuery(deleteMailboxMessagesQuery);

                    db.ExecuteNonQuery(deleteServerSetupForUserOnlyQuery);

                    db.ExecuteNonQuery(deleteMailboxQuery);

                    tx.Commit();
                }
            }

        }
        public static IEnumerable<string> Save(IEnumerable<string> ips, int tenant)
        {
            using (var db = new DbManager(dbId))
            using (var tx = db.BeginTransaction())
            {
                var d = new SqlDelete(ipRestrictionsTable)
                    .Where("tenant", tenant);

                db.ExecuteNonQuery(d);

                var ipsList = ips.ToList();
                foreach (var ip in ipsList)
                {
                    var i = new SqlInsert(ipRestrictionsTable)
                        .InColumnValue("tenant", tenant)
                        .InColumnValue("ip", ip);

                    db.ExecuteNonQuery(i);
                }

                tx.Commit();
                return ipsList;
            }
        }
 public void DeleteTree(string key)
 {
     using (DbManager dbMan = GetManager())
     {
         SqlDelete query = new SqlDelete(CommentTable).Where("comment_key", key);
         dbMan.ExecuteNonQuery(query);
     }
 }
        public static void DeleteAuthor(string login)
        {
            using (var dbManager = new DbManager("tmresource"))
            {
                var sql = new SqlDelete("res_authors").Where("login", login);

                dbManager.ExecuteNonQuery(sql);
            }
        }
Example #8
0
        public void DeleteMailbox(int mailboxId, DbManager db)
        {
            if (mailboxId < 0)
                throw new ArgumentException("Argument mailbox_id less then zero.", "mailboxId");
            
            if (db == null)
                throw new ArgumentNullException("db");

            var mailboxManager = GetMailboxManager();
            var mailbox = mailboxManager.GetServerMailBox(tenant, mailboxId, db);
            if (mailbox != null)
            {
                if (!mailbox.IsTeamlab)
                    throw new ArgumentException("Mailbox is not teamlab and it can't be deleted.");

                var quotaSizeForClean = mailboxManager.RemoveMailBox(mailbox, db);

                //TODO: Maybe cleaning of quota need to move into RemoveMailBox?
                mailboxManager.QuotaUsedDelete(mailbox.TenantId, quotaSizeForClean);
            }

            var deleteAddressesQuery = new SqlDelete(AddressTable.name)
                .Where(AddressTable.Columns.id_mailbox, mailboxId);

            db.ExecuteNonQuery(deleteAddressesQuery);
        }
Example #9
0
        public void RemoveUsedDkim(int domain_id, DbManager db = null)
        {
            var remove_dkim_query = new SqlDelete(DkimTable.name)
                .Where(DkimTable.Columns.id_domain, domain_id);

            if (db == null)
            {
                using (db = GetDb())
                    db.ExecuteNonQuery(remove_dkim_query);
            }
            else
                db.ExecuteNonQuery(remove_dkim_query);
        }
Example #10
0
        public void RemoveMailboxAlias(int aliasId, DbManager db)
        {
            if (aliasId < 0)
                throw new ArgumentException("Argument alias_id less then zero.", "aliasId");

            var deleteAddressQuery = new SqlDelete(AddressTable.name)
                .Where(AddressTable.Columns.id, aliasId)
                .Where(AddressTable.Columns.tenant, tenant);

            db.ExecuteNonQuery(deleteAddressQuery);
        }
Example #11
0
        public void DeleteAllTagsFromEntity(EntityType entityType, int entityID)
        {
            if (entityID <= 0) return;
            using (var db = GetDb())
            {
                var sqlQuery = new SqlDelete("crm_entity_tag")
                    .Where(Exp.Eq("entity_type", (int)entityType) & Exp.Eq("entity_id", entityID));

                db.ExecuteNonQuery(sqlQuery);
            }
        }
Example #12
0
        protected void RemoveRelative(int[] contactID, EntityType entityType, int[] entityID, DbManager db)
        {

            if ((contactID == null || contactID.Length == 0) && (entityID == null || entityID.Length == 0))
                throw new ArgumentException();

            var sqlQuery = new SqlDelete("crm_entity_contact");

            if (contactID != null && contactID.Length > 0)
                sqlQuery.Where(Exp.In("contact_id", contactID));

            if (entityID != null && entityID.Length > 0)
                sqlQuery.Where(Exp.In("entity_id", entityID) & Exp.Eq("entity_type", (int)entityType));

            db.ExecuteNonQuery(sqlQuery);
        }
Example #13
0
        protected void SetRelative(int[] contactID, EntityType entityType, int entityID)
        {
            using (var db = GetDb())
            using (var tx = db.BeginTransaction())
            {

                var sqlDelete = new SqlDelete("crm_entity_contact");

                if (entityID == 0)
                    throw new ArgumentException();

                sqlDelete.Where(Exp.Eq("entity_type", entityType) & Exp.Eq("entity_id", entityID));

                db.ExecuteNonQuery(sqlDelete);

                if (!(contactID == null || contactID.Length == 0))
                    foreach (var id in contactID)
                        SetRelative(id, entityType, entityID, db);

                tx.Commit();
            }
        }
Example #14
0
        public void RemoveUsedDns(int domainId, DbManager db = null)
        {
            if (domainId < 0)
                throw new ArgumentException("Argument domain_id less then zero.", "domainId");

            var removeDnsQuery = new SqlDelete(DnsTable.name)
                .Where(DnsTable.Columns.id_domain, domainId);

            NullSafeExecuteNonQuery(db, removeDnsQuery);
        }
Example #15
0
        public void RemoveProvider(string obj, string provider = null, string hashId = null)
        {
            CacheEntry.Reset(obj);

            var sql = new SqlDelete(LinkTable).Where("id", obj);

            if (!string.IsNullOrEmpty(provider)) sql.Where("provider", provider);
            if (!string.IsNullOrEmpty(hashId)) sql.Where("uid", hashId);

            using (var db = new DbManager(_dbid))
            {
                db.ExecuteScalar<int>(sql);
            }
        }
        public virtual void RemoveProviderInfo(int linkId)
        {
            using (var tx = DbManager.BeginTransaction())
            {
                var folderId = GetProviderInfo(linkId).RootFolderId.ToString();

                var entryIDs = DbManager.ExecuteList(new SqlQuery("files_thirdparty_id_mapping")
                                                         .Select("hash_id")
                                                         .Where(Exp.Eq("tenant_id", TenantID) &
                                                                Exp.Like("id", folderId, SqlLike.StartWith)))
                                        .ConvertAll(x => x[0]);


                DbManager.ExecuteNonQuery(new SqlDelete("files_security")
                                              .Where(
                                                  Exp.Eq("tenant_id", TenantID) &
                                                  Exp.In("entry_id", entryIDs)));

                var sqlQuery = new SqlDelete("files_tag_link")
                    .Where(Exp.Eq("tenant_id", TenantID) & Exp.In("entry_id", entryIDs));

                DbManager.ExecuteNonQuery(sqlQuery);

                sqlQuery = new SqlDelete(TableTitle)
                    .Where("id", linkId)
                    .Where("tenant_id", TenantID);


                DbManager.ExecuteNonQuery(sqlQuery);

                tx.Commit();
            }
        }
Example #17
0
 public void RemoveTenant(int id)
 {
     var d = new SqlDelete("tenants_tenants").Where("id", id);
     ExecNonQuery(d);
 }
        public void Delete(DateTime to)
        {
            var deleteQuery = new SqlDelete("push_notification")
                .Where(Exp.Le("queued_on", to));

            using (var db = GetDbManager())
            {
                db.ExecuteNonQuery(deleteQuery);
            }
        }
Example #19
0
        public void DeleteTagFromEntity(EntityType entityType, int entityID, String tagName)
        {
            using (var db = GetDb())
            {
                var tagID = db.ExecuteScalar<int>(Query("crm_tag").Select("id")
                                     .Where(Exp.Eq("lower(title)", tagName.ToLower()) & Exp.Eq("entity_type", (int)entityType)));

                if (tagID == 0) return;

                var sqlQuery = new SqlDelete("crm_entity_tag")
                    .Where(Exp.Eq("entity_type", (int)entityType) & Exp.Eq("tag_id", tagID));

                if (entityID > 0)
                    sqlQuery.Where(Exp.Eq("entity_id", entityID));

                db.ExecuteNonQuery(sqlQuery);

                if (entityID == 0)
                    db.ExecuteNonQuery(Delete("crm_tag")
                        .Where(Exp.Eq("id", tagID) & Exp.Eq("entity_type", (int)entityType)));
            }
        }
Example #20
0
        public void DeleteDomain(int domainId, DbManager db)
        {
            if (domainId < 0)
                throw new ArgumentException("Argument domain_id less then zero.", "domainId");
            
            if(db == null)
                throw new ArgumentNullException("db");

            const string group_alias = "msg";
            const string address_alias = "msa";
            var groupQuery = new SqlQuery(MailGroupTable.name + " " + group_alias)
                                .InnerJoin(AddressTable.name + " " + address_alias,
                                           Exp.EqColumns(MailGroupTable.Columns.id_address.Prefix(group_alias),
                                                         AddressTable.Columns.id.Prefix(address_alias)
                                                        )
                                          )
                                .Select(MailGroupTable.Columns.id.Prefix(group_alias))
                                .Where(AddressTable.Columns.tenant.Prefix(address_alias), tenant)
                                .Where(AddressTable.Columns.id_domain.Prefix(address_alias), domainId)
                                .Where(AddressTable.Columns.is_mail_group.Prefix(address_alias), true);

            var mailboxQuery = new SqlQuery(AddressTable.name)
                                .Select(AddressTable.Columns.id_mailbox)
                                .Where(AddressTable.Columns.tenant, tenant)
                                .Where(AddressTable.Columns.id_domain, domainId)
                                .Where(AddressTable.Columns.is_mail_group, false)
                                .Where(AddressTable.Columns.is_alias, false);

            var deleteWebDomainQuery = new SqlDelete(DomainTable.name)
                .Where(DomainTable.Columns.tenant, tenant)
                .Where(DomainTable.Columns.id, domainId);


            var result = db.ExecuteList(groupQuery);
            var groupIds = result.Select(r => (int)r[0]).ToList();

            var groupDal = new MailGroupDal(tenant);

            foreach (var groupId in groupIds)
            {
                groupDal.DeleteMailGroup(groupId, db);
            }

            result = db.ExecuteList(mailboxQuery);
            var mailboxIds = result.Select(r => (int)r[0]).ToList();

            var mailboxDal = new MailboxDal(tenant);

            foreach (var mailboxId in mailboxIds)
            {
                mailboxDal.DeleteMailbox(mailboxId, db);
            }

            db.ExecuteNonQuery(deleteWebDomainQuery);
        }
        public virtual void RemoveProviderInfo(int linkId)
        {
            var queryDelete = new SqlDelete(TableTitle)
                .Where("id", linkId)
                .Where("tenant_id", TenantID);

            DbManager.ExecuteNonQuery(queryDelete);
        }
        public Tenant SaveTenant(Tenant t)
        {
            if (t == null) throw new ArgumentNullException("tenant");

            ExecAction(db =>
            {
                if (t.TenantId != 0)
                {
                    // TenantId == 0 in open source version
                    ValidateDomain(db, t.TenantAlias, t.TenantId, true);
                }
                if (!string.IsNullOrEmpty(t.MappedDomain))
                {
                    var baseUrl = TenantUtil.GetBaseDomain(t.HostedRegion);

                    if (baseUrl != null && t.MappedDomain.EndsWith("." + baseUrl, StringComparison.InvariantCultureIgnoreCase))
                    {
                        ValidateDomain(db, t.MappedDomain.Substring(0, t.MappedDomain.Length - baseUrl.Length - 1), t.TenantId, false);
                    }
                    else
                    {
                        ValidateDomain(db, t.MappedDomain, t.TenantId, false);
                    }
                }

                if (t.TenantId == Tenant.DEFAULT_TENANT)
                {
                    var q = new SqlQuery("tenants_version")
                        .Select("id")
                        .Where(Exp.Eq("default_version", 1) | Exp.Eq("id", 0))
                        .OrderBy(1, false)
                        .SetMaxResults(1);
                    t.Version = db.ExecScalar<int>(q);

                    var i = new SqlInsert("tenants_tenants", true)
                        .InColumnValue("id", t.TenantId)
                        .InColumnValue("alias", t.TenantAlias.ToLowerInvariant())
                        .InColumnValue("mappeddomain", !string.IsNullOrEmpty(t.MappedDomain) ? t.MappedDomain.ToLowerInvariant() : null)
                        .InColumnValue("version", t.Version)
                        .InColumnValue("version_changed", t.VersionChanged)
                        .InColumnValue("name", t.Name ?? t.TenantAlias)
                        .InColumnValue("language", t.Language)
                        .InColumnValue("timezone", t.TimeZone.Id)
                        .InColumnValue("owner_id", t.OwnerId.ToString())
                        .InColumnValue("trusteddomains", t.GetTrustedDomains())
                        .InColumnValue("trusteddomainsenabled", (int)t.TrustedDomainsType)
                        .InColumnValue("creationdatetime", t.CreatedDateTime)
                        .InColumnValue("status", (int)t.Status)
                        .InColumnValue("statuschanged", t.StatusChangeDate)
                        .InColumnValue("payment_id", t.PaymentId)
                        .InColumnValue("last_modified", t.LastModified = DateTime.UtcNow)
                        .InColumnValue("industry", (int)t.Industry)
                        .Identity<int>(0, t.TenantId, true);


                    t.TenantId = db.ExecScalar<int>(i);
                }
                else
                {
                    var u = new SqlUpdate("tenants_tenants")
                        .Set("alias", t.TenantAlias.ToLowerInvariant())
                        .Set("mappeddomain", !string.IsNullOrEmpty(t.MappedDomain) ? t.MappedDomain.ToLowerInvariant() : null)
                        .Set("version", t.Version)
                        .Set("version_changed", t.VersionChanged)
                        .Set("name", t.Name ?? t.TenantAlias)
                        .Set("language", t.Language)
                        .Set("timezone", t.TimeZone.Id)
                        .Set("owner_id", t.OwnerId.ToString())
                        .Set("trusteddomains", t.GetTrustedDomains())
                        .Set("trusteddomainsenabled", (int)t.TrustedDomainsType)
                        .Set("creationdatetime", t.CreatedDateTime)
                        .Set("status", (int)t.Status)
                        .Set("statuschanged", t.StatusChangeDate)
                        .Set("payment_id", t.PaymentId)
                        .Set("last_modified", t.LastModified = DateTime.UtcNow)
                        .Set("industry", (int)t.Industry)
                        .Where("id", t.TenantId);

                    db.ExecNonQuery(u);
                }
                
                if (string.IsNullOrEmpty(t.PartnerId))
                {
                    var d = new SqlDelete("tenants_partners").Where("tenant_id", t.TenantId);
                    db.ExecNonQuery(d);
                }
                else
                {
                    var i = new SqlInsert("tenants_partners", true)
                        .InColumnValue("tenant_id", t.TenantId)
                        .InColumnValue("partner_id", t.PartnerId);
                    db.ExecNonQuery(i);
                }
            });
            //CalculateTenantDomain(t);
            return t;
        }
Example #23
0
        public void MergeDublicate(int fromContactID, int toContactID)
        {
            var fromContact = GetByID(fromContactID);
            var toContact = GetByID(toContactID);

            if (fromContact == null || toContact == null)
                throw new ArgumentException();

            using (var tx = DbManager.BeginTransaction())
            {
                ISqlInstruction q = Update("crm_task")
                    .Set("contact_id", toContactID)
                    .Where(Exp.Eq("contact_id", fromContactID));
                DbManager.ExecuteNonQuery(q);

                // crm_entity_contact
                q = new SqlQuery("crm_entity_contact l")
                    .From("crm_entity_contact r")
                    .Select("l.entity_id", "l.entity_type", "l.contact_id")
                    .Where(Exp.EqColumns("l.entity_id", "r.entity_id") & Exp.EqColumns("l.entity_type", "r.entity_type"))
                    .Where("l.contact_id", fromContactID)
                    .Where("r.contact_id", toContactID);
                DbManager.ExecuteList(q)
                    .ForEach(row =>
                        DbManager.ExecuteNonQuery(new SqlDelete("crm_entity_contact").Where("entity_id", row[0]).Where("entity_type", row[1]).Where("contact_id", row[2]))
                 );

                q = new SqlUpdate("crm_entity_contact")
                    .Set("contact_id", toContactID)
                    .Where("contact_id", fromContactID);
                DbManager.ExecuteNonQuery(q);

                // crm_deal
                q = Update("crm_deal")
                    .Set("contact_id", toContactID)
                    .Where("contact_id", fromContactID);
                DbManager.ExecuteNonQuery(q);

                // crm_relationship_event
                q = Update("crm_relationship_event")
                    .Set("contact_id", toContactID)
                    .Where("contact_id", fromContactID);
                DbManager.ExecuteNonQuery(q);

                // crm_entity_tag
                q = new SqlQuery("crm_entity_tag l")
                    .Select("l.tag_id")
                    .From("crm_entity_tag r")
                    .Where(Exp.EqColumns("l.tag_id", "r.tag_id") & Exp.EqColumns("l.entity_type", "r.entity_type"))
                    .Where("l.entity_id", fromContactID)
                    .Where("r.entity_id", toContactID);
                var dublicateTagsID = DbManager.ExecuteList(q).ConvertAll(row => row[0]);

                q = new SqlDelete("crm_entity_tag").Where(Exp.Eq("entity_id", fromContactID) & Exp.Eq("entity_type", (int)EntityType.Contact) & Exp.In("tag_id", dublicateTagsID));
                DbManager.ExecuteNonQuery(q);

                q = new SqlUpdate("crm_entity_tag").Set("entity_id", toContactID).Where("entity_id", fromContactID).Where("entity_type", (int)EntityType.Contact);
                DbManager.ExecuteNonQuery(q);

                // crm_field_value
                q = Query("crm_field_value l")
                    .From("crm_field_value r")
                    .Select("l.field_id")
                    .Where(Exp.EqColumns("l.tenant_id", "r.tenant_id") & Exp.EqColumns("l.field_id", "r.field_id") & Exp.EqColumns("l.entity_type", "r.entity_type"))
                    .Where("l.entity_id", fromContactID)
                    .Where("r.entity_id", toContactID);
                var dublicateCustomFieldValueID = DbManager.ExecuteList(q).ConvertAll(row => row[0]);

                q = Delete("crm_field_value")
                    .Where("entity_id", fromContactID)
                    .Where(Exp.In("entity_type", new[] { (int)EntityType.Contact, (int)EntityType.Person, (int)EntityType.Company }))
                    .Where(Exp.In("field_id", dublicateCustomFieldValueID));
                DbManager.ExecuteNonQuery(q);

                q = Update("crm_field_value")
                    .Set("entity_id", toContactID)
                    .Where("entity_id", fromContactID)
                    .Where("entity_type", (int)EntityType.Contact);
                DbManager.ExecuteNonQuery(q);

                // crm_contact_info
                q = Query("crm_contact_info l")
                    .From("crm_contact_info r")
                    .Select("l.id")
                    .Where(Exp.EqColumns("l.tenant_id", "r.tenant_id"))
                    .Where(Exp.EqColumns("l.type", "r.type"))
                    .Where(Exp.EqColumns("l.is_primary", "r.is_primary"))
                    .Where(Exp.EqColumns("l.category", "r.category"))
                    .Where(Exp.EqColumns("l.data", "r.data"))
                    .Where("l.contact_id", fromContactID)
                    .Where("r.contact_id", toContactID);
                var dublicateContactInfoID = DbManager.ExecuteList(q).ConvertAll(row => row[0]);

                q = Delete("crm_contact_info")
                    .Where("contact_id", fromContactID)
                    .Where(Exp.In("id", dublicateContactInfoID));
                DbManager.ExecuteNonQuery(q);

                q = Update("crm_contact_info")
                    .Set("contact_id", toContactID)
                    .Where("contact_id", fromContactID);
                DbManager.ExecuteNonQuery(q);


                MergeContactInfo(fromContact, toContact);

                // crm_contact
                if ((fromContact is Company) && (toContact is Company))
                {
                    q = Update("crm_contact")
                        .Set("company_id", toContactID)
                        .Where("company_id", fromContactID);
                    DbManager.ExecuteNonQuery(q);
                }

                q = Delete("crm_contact").Where("id", fromContactID);
                DbManager.ExecuteNonQuery(q);

                tx.Commit();
            }

            CoreContext.AuthorizationManager.RemoveAllAces(fromContact);
        }
Example #24
0
        public void DeleteSignature(int mailboxId, int tenant)
        {
            var deleteSignatureQuery = new SqlDelete(SignatureTable.name)
                                            .Where(SignatureTable.Columns.id_mailbox, mailboxId)
                                            .Where(SignatureTable.Columns.id_tenant, tenant);

            _manager.ExecuteNonQuery(deleteSignatureQuery);
        }
 private void UnmarkChainAsCrmLinked(DbManager db, string id_chain, int id_mailbox, int id_tenant, IEnumerable<CrmContactEntity> contact_ids)
 {
     foreach (var crm_contact_entity in contact_ids)
     {
         var remove_link_query = new SqlDelete(ChainXCrmContactEntity.name)
             .Where(ChainXCrmContactEntity.Columns.id_chain, id_chain)
             .Where(ChainXCrmContactEntity.Columns.id_mailbox, id_mailbox)
             .Where(ChainXCrmContactEntity.Columns.id_tenant, id_tenant)
             .Where(ChainXCrmContactEntity.Columns.entity_id, crm_contact_entity.Id)
             .Where(ChainXCrmContactEntity.Columns.entity_type, crm_contact_entity.Type);
         db.ExecuteNonQuery(remove_link_query);
     }
 }
Example #26
0
        public void DeleteAddressFromMailGroup(int groupId, int addressId, DbManager db)
        {
            if (groupId < 0)
                throw new ArgumentException("Argument group_id less then zero.", "groupId");

            if (addressId < 0)
                throw new ArgumentException("Argument address_id less then zero.", "addressId");

            if (db == null)
                throw new ArgumentNullException("db");

            var deleteAddressFromMailgroupQuery = new SqlDelete(MailGroupXAddressesTable.name)
                                         .Where(MailGroupXAddressesTable.Columns.id_address, addressId)
                                         .Where(MailGroupXAddressesTable.Columns.id_mail_group, groupId);

            var deletedRowsCount = db.ExecuteNonQuery(deleteAddressFromMailgroupQuery);
            if (deletedRowsCount > 1)
                throw new InvalidOperationException(String.Format("Problem deleting address. GroupId: {0}, AddressId: {1}", groupId, addressId));
        }
Example #27
0
        public static void CreateAuthor(Author author, IEnumerable<string> languages, string modules)
        {
            using (var dbManager = new DbManager("tmresource"))
            {
                var sqlInsert = new SqlInsert("res_authors", true)
                    .InColumnValue("login", author.Login)
                    .InColumnValue("password", author.Password)
                    .InColumnValue("isAdmin", author.IsAdmin);

                dbManager.ExecuteNonQuery(sqlInsert);

                var delete = new SqlDelete("res_authorslang").Where("authorLogin", author.Login);
                dbManager.ExecuteNonQuery(delete);

                delete = new SqlDelete("res_authorsfile").Where("authorLogin", author.Login);
                dbManager.ExecuteNonQuery(delete);

                foreach (var lang in languages)
                {
                    sqlInsert = new SqlInsert("res_authorslang", true)
                        .InColumnValue("authorLogin", author.Login)
                        .InColumnValue("cultureTitle", lang);

                    dbManager.ExecuteNonQuery(sqlInsert);
                }

                var resFiles = GetAllFiles();
                //project1:module1-access1,module2-access2;project2:module3-access3,module4-access4
                foreach (var projectData in modules.Split(';').Select(project => project.Split(':')))
                {
                    foreach (var mod in projectData[1].Split(','))
                    {
                        //var modData = mod.Split('-');
                        var fileid = resFiles.Where(r => r.ModuleName == mod && r.ProjectName == projectData[0]).Select(r => r.FileID).FirstOrDefault();
                        sqlInsert = new SqlInsert("res_authorsfile", true)
                            .InColumnValue("authorLogin", author.Login)
                            .InColumnValue("fileId", fileid); //.InColumnValue("writeAccess", Convert.ToBoolean(modData[1]));
                        dbManager.ExecuteNonQuery(sqlInsert);
                    }
                }
            }
        }
Example #28
0
        public void DeleteMailGroup(int groupId, DbManager db)
        {
            if (groupId < 0)
                throw new ArgumentException("Argument group_id less then zero.", "groupId");

            if (db == null)
                throw new ArgumentNullException("db");
            
            var groupAddressId = new SqlQuery(MailGroupTable.name)
                        .Select(MailGroupTable.Columns.id_address)
                        .Where(MailGroupTable.Columns.id, groupId);

            var deleteAddressesQuery = new SqlDelete(AddressTable.name)
                .Where(Exp.In(AddressTable.Columns.id, groupAddressId));
            
            var deleteGroupQuery = new SqlDelete(MailGroupTable.name)
                                        .Where(MailGroupTable.Columns.id_tenant, tenant)
                                        .Where(MailGroupTable.Columns.id, groupId);

            var deleteGroupXAddress = new SqlDelete(MailGroupXAddressesTable.name)
                .Where(MailGroupXAddressesTable.Columns.id_mail_group, groupId);

            var deletedAddressRowsCount = db.ExecuteNonQuery(deleteAddressesQuery);
            var deletedGroupRowsCount = db.ExecuteNonQuery(deleteGroupQuery);

            if (deletedGroupRowsCount != 0 && deletedAddressRowsCount == 0 ||
                deletedGroupRowsCount == 0 && deletedAddressRowsCount != 0)
                throw new InvalidOperationException("Problem deleting mailgroup.");

            db.ExecuteNonQuery(deleteGroupXAddress);
        }
Example #29
0
 public void SetState(int id, MailSendingState result)
 {
     using (var db = GetDb())
     using (var tx = db.BeginTransaction())
     {
         if (result == MailSendingState.Sended)
         {
             var d = new SqlDelete("notify_info").Where("notify_id", id);
             db.ExecuteNonQuery(d);
             if (NotifyServiceCfg.DeleteSendedMessages)
             {
                 d = new SqlDelete("notify_queue").Where("notify_id", id);
                 db.ExecuteNonQuery(d);
             }
         }
         else
         {
             if (result == MailSendingState.Error)
             {
                 var q = new SqlQuery("notify_info").Select("attempts").Where("notify_id", id);
                 var attempts = db.ExecuteScalar<int>(q);
                 if (NotifyServiceCfg.MaxAttempts <= attempts + 1)
                 {
                     result = MailSendingState.FatalError;
                 }
             }
             var u = new SqlUpdate("notify_info")
                 .Set("state", (int)result)
                 .Set("attempts = attempts + 1")
                 .Set("modify_date", DateTime.UtcNow)
                 .Where("notify_id", id);
             db.ExecuteNonQuery(u);
         }
         tx.Commit();
     }
 }
Example #30
0
        protected override void _DeleteMailbox(MailboxBase mailbox)
        {
            //Todo: think about free space in maildir
            var deleteMailboxQuery = new SqlDelete(MailboxTable.name).Where(MailboxTable.Columns.username, mailbox.Address.ToString());
            var deleteMailboxAliases = new SqlDelete(AliasTable.name).Where(AliasTable.Columns.redirect, mailbox.Address.ToString());
            using (var db = _dbManager.GetAdminDb())
            {
                using (var t = db.BeginTransaction())
                {
                    ClearMailboxStorageSpace(mailbox.Address.LocalPart, mailbox.Address.Domain.Name);
                    
                    db.ExecuteNonQuery(deleteMailboxQuery);
                    db.ExecuteNonQuery(deleteMailboxAliases);

                    t.Commit();
                }
            }
        }