diff --git a/backend/core/src/main/java/org/opencdmp/service/maintenance/MaintenanceServiceImpl.java b/backend/core/src/main/java/org/opencdmp/service/maintenance/MaintenanceServiceImpl.java index 85b9588bf..5bcb1feed 100644 --- a/backend/core/src/main/java/org/opencdmp/service/maintenance/MaintenanceServiceImpl.java +++ b/backend/core/src/main/java/org/opencdmp/service/maintenance/MaintenanceServiceImpl.java @@ -428,31 +428,22 @@ public class MaintenanceServiceImpl implements MaintenanceService { this.tenantEntityManager.disableTenantFilters(); List tenantUserEntities = this.queryFactory.query(TenantUserQuery.class).disableTracking().userIds(this.kpiProperties.getUser()).collectAs(new BaseFieldSet().ensure(TenantUser._tenant)); List fields = new ArrayList<>(); - if (tenantUserEntities != null) { - List tenantEntities = this.queryFactory.query(TenantQuery.class).disableTracking().ids(tenantUserEntities.stream().map(TenantUserEntity::getTenantId).distinct().toList()).collect(); - if (tenantEntities != null) { - for (TenantEntity tenant: tenantEntities) { - IndicatorField field = new IndicatorField(); - field.setCode("tenant_code"); - field.setName("Tenant Code"); - field.setValueField(tenant.getCode()); - field.setBasetype(IndicatorFieldBaseType.String); - fields.add(field); - } - } - } + IndicatorField field = new IndicatorField(); + field.setCode("tenant_code"); + field.setName("Tenant Code"); + field.setBasetype(IndicatorFieldBaseType.Keyword); + fields.add(field); + IndicatorField field1 = new IndicatorField(); field1.setCode("user_id"); field1.setName("User Id"); - field1.setValueField(this.kpiProperties.getUser().toString()); - field1.setBasetype(IndicatorFieldBaseType.String); + field1.setBasetype(IndicatorFieldBaseType.Keyword); fields.add(field1); IndicatorField field2 = new IndicatorField(); field2.setCode("created_at"); field2.setName("Created at"); - field2.setValueField(Instant.now().toString()); field2.setBasetype(IndicatorFieldBaseType.Date); fields.add(field2); @@ -463,10 +454,15 @@ public class MaintenanceServiceImpl implements MaintenanceService { IndicatorField field3 = new IndicatorField(); field3.setCode("user_name"); field3.setName("User Name"); - field3.setValueField(user.getName()); field3.setBasetype(IndicatorFieldBaseType.String); fields.add(field3); + IndicatorField field4 = new IndicatorField(); + field4.setCode("value"); + field4.setName("Value"); + field4.setBasetype(IndicatorFieldBaseType.Integer); + fields.add(field4); + IndicatorSchema schema = new IndicatorSchema(); schema.setId(this.kpiProperties.getId()); schema.setFields(fields); @@ -504,7 +500,33 @@ public class MaintenanceServiceImpl implements MaintenanceService { IndicatorPointEvent event = new IndicatorPointEvent(); event.setIndicatorId(this.kpiProperties.getId()); - this.validatorFactory.validator(IndicatorPointEvent.IndicatorPointEventValidator.class).validateForce(event); - this.indicatorPointEventHandler.handle(event); + event.add("user_id", this.kpiProperties.getUser()); + event.add("created_at", Instant.now()); + event.add("value", 1); + + UserEntity user = this.queryFactory.query(UserQuery.class).disableTracking().ids(this.kpiProperties.getUser()).firstAs(new BaseFieldSet().ensure(User._name)); + if (user == null) { + throw new MyApplicationException("user not found"); + } + + event.add("user_name", user.getName()); + + try { + this.tenantEntityManager.disableTenantFilters(); + List tenantUserEntities = this.queryFactory.query(TenantUserQuery.class).disableTracking().userIds(this.kpiProperties.getUser()).collectAs(new BaseFieldSet().ensure(TenantUser._tenant)); + if (tenantUserEntities != null) { + List tenantEntities = this.queryFactory.query(TenantQuery.class).disableTracking().ids(tenantUserEntities.stream().map(TenantUserEntity::getTenantId).distinct().toList()).collect(); + if (tenantEntities != null) { + for (TenantEntity tenant: tenantEntities) { + event.add("tenant_code", tenant.getCode()); + this.validatorFactory.validator(IndicatorPointEvent.IndicatorPointEventValidator.class).validateForce(event); + this.indicatorPointEventHandler.handle(event); + } + } + + } + } finally { + this.tenantEntityManager.reloadTenantFilters(); + } } }