Exemplo n.º 1
0
        public void Update(MailWrapper data, Expression <Func <Selector <MailWrapper>, Selector <MailWrapper> > > expression,
                           params Expression <Func <MailWrapper, object> >[] fields)
        {
            try
            {
                if (data == null)
                {
                    throw new ArgumentNullException("data");
                }

                if (expression == null)
                {
                    throw new ArgumentNullException("expression");
                }

                if (!IsIndexAvailable())
                {
                    return;
                }

                FactoryIndexer <MailWrapper> .Update(data, expression, true, fields);
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("IndexEngine->Update() error: {0}", ex.ToString());
            }
        }
Exemplo n.º 2
0
        public void ProjectUpdateByQuery()
        {
            var searchText = "ABCDEF";
            var proj1      = CreateProject(searchText, "Description");
            var proj2      = CreateProject(searchText, "Description");
            var proj3      = CreateProject(searchText, "Description");

            List <int> result;

            FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result);

            Assert.AreEqual(result.Count, 3);

            var newTitle = "QWERTY";

            FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Title = "QWERTY" }, r => r.In(t => t.Id, new[] { proj1.ID, proj2.ID }), true, r => r.Title);

            FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(newTitle), out result);

            Assert.AreEqual(result.Count, 2);

            FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result);

            Assert.AreEqual(result[0], proj3.ID);

            DeleteProject(proj1);
            DeleteProject(proj2);
            DeleteProject(proj3);
        }
Exemplo n.º 3
0
        public void ProjectUpdate()
        {
            var searchText = "ABCDEF";
            var proj       = CreateProject(searchText, "Description");

            List <int> result;

            FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result);

            Assert.AreEqual(result[0], proj.ID);

            FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, Title = "QWERTY" }, true, r => r.Title);

            FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, LastModifiedOn = DateTime.UtcNow }, true, r => r.LastModifiedOn);

            FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, TenantId = 10 }, true, r => r.TenantId);

            FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, TenantId = 5, Title = "Tenant" }, true, r => r.TenantId, r => r.Title);

            FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result);

            CollectionAssert.IsEmpty(result);

            DeleteProject(proj);
        }
Exemplo n.º 4
0
        public object MoveFile(object fileId, object toFolderId)
        {
            if (fileId == null)
            {
                return(null);
            }

            using (var tx = dbManager.BeginTransaction())
            {
                var fromFolders = dbManager
                                  .ExecuteList(Query("files_file").Select("folder_id").Where("id", fileId).GroupBy("id"))
                                  .ConvertAll(r => r[0]);

                var sql = Update("files_file")
                          .Set("folder_id", toFolderId)
                          .Where("id", fileId);

                if (Global.FolderTrash.Equals(toFolderId))
                {
                    sql
                    .Set("modified_by", SecurityContext.CurrentAccount.ID.ToString())
                    .Set("modified_on", DateTime.UtcNow);
                }

                dbManager.ExecuteNonQuery(sql);
                tx.Commit();

                fromFolders.ForEach(folderId => RecalculateFilesCount(dbManager, folderId));
                RecalculateFilesCount(dbManager, toFolderId);
            }

            var parentFoldersIds = dbManager.ExecuteList(
                new SqlQuery("files_folder_tree")
                .Select("parent_id")
                .Where(Exp.Eq("folder_id", toFolderId))
                .OrderBy("level", false)
                ).ConvertAll(row => row[0]);

            FactoryIndexer <FilesWrapper> .Update(
                new FilesWrapper()
            {
                Id      = (int)fileId,
                Folders = parentFoldersIds.Select(r => new FilesFoldersWrapper()
                {
                    FolderId = r.ToString()
                }).ToList(),
            },
                UpdateAction.Replace,
                w => w.Folders);

            return(fileId);
        }
Exemplo n.º 5
0
        public virtual void DeleteByContact(int contactID)
        {
            if (contactID <= 0)
            {
                return;
            }
            Db.ExecuteNonQuery(Delete("crm_contact_info").Where(Exp.Eq("contact_id", contactID)));
            FactoryIndexer <InfoWrapper> .DeleteAsync(r => r.Where(a => a.ContactId, contactID));

            var infos = GetList(contactID, ContactInfoType.Email, null, null);

            FactoryIndexer <EmailWrapper> .Update(new EmailWrapper { Id = contactID, EmailInfoWrapper = infos.Select(r => (EmailInfoWrapper)r).ToList() }, UpdateAction.Replace, r => r.EmailInfoWrapper);
        }
Exemplo n.º 6
0
        public virtual int Update(ContactInfo contactInfo)
        {
            var result = UpdateInDb(contactInfo);

            if (contactInfo.InfoType == ContactInfoType.Email)
            {
                var infos = GetList(contactInfo.ContactID, ContactInfoType.Email, null, null);

                FactoryIndexer <EmailWrapper> .Update(new EmailWrapper { Id = contactInfo.ContactID, EmailInfoWrapper = infos.Select(r => (EmailInfoWrapper)r).ToList() }, UpdateAction.Replace, r => r.EmailInfoWrapper);
            }

            FactoryIndexer <InfoWrapper> .UpdateAsync(contactInfo);

            return(result);
        }
Exemplo n.º 7
0
        public void Update(List <MailWrapper> mails, UpdateAction action, Expression <Func <MailWrapper, IList> > fields)
        {
            try
            {
                if (mails == null || !mails.Any())
                {
                    throw new ArgumentNullException("mails");
                }

                if (!IsIndexAvailable())
                {
                    return;
                }

                mails.ForEach(x => FactoryIndexer <MailWrapper> .Update(x, action, fields));
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("IndexEngine->Update(count = {0}) error: {1}", mails == null ? 0 : mails.Count,
                                ex.ToString());
            }
        }
Exemplo n.º 8
0
        public void Update <T>(List <T> list, params Expression <Func <T, object> >[] fields) where T : Wrapper, new()
        {
            try
            {
                if (list == null || !list.Any())
                {
                    throw new ArgumentNullException("list");
                }

                if (!IsIndexAvailable())
                {
                    return;
                }

                list.ForEach(x => FactoryIndexer <T> .Update(x, true, fields));
            }
            catch (Exception ex)
            {
                var typeParameterType = typeof(T);

                Log.ErrorFormat("IndexEngine->Update<{0}>(mail Id = {1}) error: {2}", typeParameterType, list == null ? 0 : list.Count, ex.ToString());
            }
        }