private CanDeleteResponse GetCanDeleteByProjectResourceId(Guid projectResourceId) { var entitySchemaManager = UserConnection.EntitySchemaManager; CanDeleteResponse result = new CanDeleteResponse(); result.Success = true; var esqWork = new EntitySchemaQuery(entitySchemaManager, "WorkResourceElement"); esqWork.AddColumn("Id"); var projectResFilter = esqWork.CreateFilterWithParameters(FilterComparisonType.Equal, "ProjectResourceElement", projectResourceId); esqWork.Filters.Add(projectResFilter); var workEntities = esqWork.GetEntityCollection(UserConnection); if (workEntities.Count > 0) { result.Success = false; result.Code = 200; return(result); } var projectResourceElementSchema = entitySchemaManager.GetInstanceByName("ProjectResourceElement"); var projectResourceEntity = projectResourceElementSchema.CreateEntity(UserConnection); if (!projectResourceEntity.FetchFromDB(projectResourceElementSchema.GetPrimaryColumnName(), projectResourceId)) { return(result); } var projectId = projectResourceEntity.GetTypedColumnValue <Guid>(projectResourceElementSchema.Columns.FindByName("Project").ColumnValueName); var contactId = projectResourceEntity.GetTypedColumnValue <Guid>(projectResourceElementSchema.Columns.FindByName("Contact").ColumnValueName); if (projectId == null || projectId == Guid.Empty || contactId == null || contactId == Guid.Empty) { return(result); } var esqActivity = new EntitySchemaQuery(entitySchemaManager, "Activity"); esqActivity.AddColumn("Id"); var projects = HierarchicalProjectUtilities.GetChildProjectsIDs(projectId, UserConnection); var projectFilter = esqActivity.CreateFilterWithParameters(FilterComparisonType.Equal, "Project", projects.Select(x => (object)x).ToArray()); esqActivity.Filters.Add(projectFilter); var ownerFilter = esqActivity.CreateFilterWithParameters(FilterComparisonType.Equal, "Owner", contactId); esqActivity.Filters.Add(ownerFilter); var activityEntities = esqActivity.GetEntityCollection(UserConnection); if (activityEntities.Count > 0) { result.Success = false; result.Code = 300; return(result); } return(result); }
public CanDeleteResponse GetCanDelete(List <Guid> projectResources) { CanDeleteResponse result = new CanDeleteResponse(); result.Success = true; foreach (var projectResourceId in projectResources) { if (result.Success) { result = GetCanDeleteByProjectResourceId(projectResourceId); } } return(result); }