Ejemplo n.º 1
0
        private string GetEntityConnectionColumnName(EntitySchema activitySchema, EntityActivitiesOwnerInfo entityOwnerInfo)
        {
            string entityPrimaryColumnName = activitySchema.Columns
                                             .FirstOrDefault(column =>
                                                             column.IsLookupType &&
                                                             !column.UsageType.Equals(EntitySchemaColumnUsageType.Advanced) &&
                                                             column.ReferenceSchema.Name == entityOwnerInfo.EntitySchemaName &&
                                                             column.ColumnValueName.Contains(entityOwnerInfo.EntitySchemaName))?.ColumnValueName;

            return(entityPrimaryColumnName);
        }
        /// <summary>
        /// <see cref="IEntityEventAsyncOperation.Execute"/>
        /// <remarks>Executes operation by transfering activities of entity owner to the new entity owner.</remarks>
        /// </summary>
        public void Execute(UserConnection userConnection, EntityEventAsyncOperationArgs arguments)
        {
            var operationArgs   = (EntityOwnerEventAsyncOperationArgs)arguments;
            var ownerEntityInfo = new EntityActivitiesOwnerInfo {
                EntityId         = operationArgs.EntityId,
                NewOwnerId       = operationArgs.EntityColumnValues.GetTypedValue <Guid>(operationArgs.OwnerColumnName),
                OldOwnerId       = operationArgs.OldEntityColumnValues.GetTypedValue <Guid>(operationArgs.OwnerColumnName),
                EntitySchemaName = operationArgs.EntitySchemaName
            };

            new EntityActivitiesOwner(userConnection).Change(ownerEntityInfo);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Changes owner of entity activities.
        /// <param name="entityOwnerInfo">Information about entity and owners of activities.</param>
        /// </summary>
        public virtual void Change(EntityActivitiesOwnerInfo entityOwnerInfo)
        {
            EntitySchema activitySchema          = _userConnection.EntitySchemaManager.GetInstanceByName(_activityEntitySchemaName);
            string       entityPrimaryColumnName = GetEntityConnectionColumnName(activitySchema, entityOwnerInfo);

            if (entityPrimaryColumnName.IsNotNullOrEmpty())
            {
                Entity activityEntity = activitySchema.CreateEntity(_userConnection);
                activityEntity.UseAdminRights = false;
                foreach (var activityId in GetEntityOwnerActivitiesId(entityPrimaryColumnName, entityOwnerInfo))
                {
                    if (activityEntity.FetchFromDB(activityId))
                    {
                        activityEntity.SetColumnValue("OwnerId", entityOwnerInfo.NewOwnerId);
                        activityEntity.Save(false);
                        DenyActivityManagingRights(activityId, GetUserIdByContact(entityOwnerInfo.OldOwnerId));
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private List <Guid> GetEntityOwnerActivitiesId(string entityPrimaryColumnName, EntityActivitiesOwnerInfo entityOwnerInfo)
        {
            Select select = GetEntityOwnerActivitiesSelect(entityPrimaryColumnName, entityOwnerInfo);

            return(select.ExecuteEnumerable(reader => reader.GetColumnValue <Guid>("Id")).ToList());
        }
Ejemplo n.º 5
0
 private Select GetEntityOwnerActivitiesSelect(string entityPrimaryColumnName, EntityActivitiesOwnerInfo entityOwnerInfo)
 {
     return(new Select(_userConnection)
            .Column("Id")
            .From("Activity")
            .Where("OwnerId")
            .IsEqual(Column.Parameter(entityOwnerInfo.OldOwnerId))
            .And(entityPrimaryColumnName)
            .IsEqual(Column.Parameter(entityOwnerInfo.EntityId))
            .And("TypeId")
            .IsNotEqual(Column.Parameter(ActivityConsts.EmailTypeUId))
            .And("StatusId")
            .IsNotEqual(Column.Parameter(ActivityConsts.CanceledStatusUId))
            .And("StatusId")
            .IsNotEqual(Column.Parameter(ActivityConsts.CompletedStatusUId))
            as Select);
 }