protected override bool InternalExecute(ProcessExecutingContext context)
 {
     RecordId = Guid.Empty;
     if (EntitySchemaId.Equals(Guid.Empty))
     {
         return(true);
     }
     if (FilterEntitySchemaId != Guid.Empty)
     {
         Dictionary <string, string> entityColumnMap = null;
         var filterResultEntityCollection            = GetFilterResultEntityCollection(out entityColumnMap);
         foreach (var filterResultEntity in filterResultEntityCollection)
         {
             var newEntity = GetNewEntity();
             if (newEntity == null)
             {
                 return(true);
             }
             FillRowWithDataByFilter(newEntity, filterResultEntity, entityColumnMap);
             newEntity.Save(false);
         }
     }
     else
     {
         var newEntity = GetNewEntity();
         if (newEntity == null)
         {
             return(true);
         }
         FillRowWithData(newEntity);
         newEntity.Save(false);
         RecordId = newEntity.PrimaryColumnValue;
     }
     return(true);
 }
Ejemplo n.º 2
0
        protected override bool InternalExecute(ProcessExecutingContext context)
        {
            EntitySchemaId.CheckArgumentEmpty("EntitySchemaId");
            EntitySchemaManager entitySchemaManager = UserConnection.EntitySchemaManager;
            EntitySchema        entitySchema        = entitySchemaManager.GetInstanceByUId(EntitySchemaId);
            var esq = new EntitySchemaQuery(entitySchemaManager, entitySchema.Name)
            {
                UseAdminRights = false
            };

            esq.AddAllSchemaColumns();
            esq.IgnoreDisplayValues = GlobalAppSettings.FeatureIgnoreDisplayValuesInDataUserTasks;
            ProcessUserTaskUtilities.SpecifyESQFilters(UserConnection, this, entitySchema, esq, DataSourceFilters);
            bool isEmptyFilter = esq.Filters.Count == 0;

            if (!isEmptyFilter && esq.Filters.Count == 1)
            {
                var filterGroup = esq.Filters[0] as EntitySchemaQueryFilterCollection;
                if (filterGroup != null && filterGroup.Count == 0)
                {
                    isEmptyFilter = true;
                }
            }
            if (isEmptyFilter)
            {
                throw new NullOrEmptyException(new LocalizableString("Terrasoft.Core",
                                                                     "ProcessSchemaDeleteDataUserTask.Exception.DeleteDataWithEmptyFilter"));
            }
            EntityCollection entities = esq.GetEntityCollection(UserConnection);

            while (entities.Count > 0)
            {
                Entity entity = entities.First.Value;
                entity.UseAdminRights = false;
                entities.RemoveFirst();
                entity.Delete();
            }
            return(true);
        }