=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevel.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevel.java 2014-10-03 22:13:49 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalLevel.java 2014-10-23 19:09:36 +0000 @@ -30,6 +30,7 @@ import java.util.Date; +import org.hisp.dhis.common.BaseDimensionalObject; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.DxfNamespaces; import org.hisp.dhis.common.view.DetailedView; @@ -38,6 +39,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonView; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; @@ -188,6 +190,7 @@ } @JsonProperty + @JsonSerialize( as = BaseDimensionalObject.class ) @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public CategoryOptionGroupSet getCategoryOptionGroupSet() @@ -200,6 +203,9 @@ this.categoryOptionGroupSet = categoryOptionGroupSet; } + @JsonProperty + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public String getOrgUnitLevelName() { return orgUnitLevelName; === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java 2014-10-23 18:31:39 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java 2014-10-23 19:09:36 +0000 @@ -34,9 +34,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletResponse; @@ -267,6 +269,47 @@ createdDate, createdByUsername, status.getPermissions() ); } + @RequestMapping( method = RequestMethod.GET, produces = ContextUtils.CONTENT_TYPE_JSON, value = "/categoryOptionCombos" ) + public void getApprovalByCategoryOptionCombos( + @RequestParam Set ds, + @RequestParam String pe, + HttpServletResponse response ) throws IOException + { + Set dataSets = new HashSet<>( manager.getByUid( DataSet.class, ds ) ); + + Period period = PeriodType.getPeriodFromIsoString( pe ); + + if ( period == null ) + { + ContextUtils.conflictResponse( response, "Illegal period identifier: " + pe ); + return; + } + + List statusList = dataApprovalService.getUserDataApprovalsAndPermissions( dataSets, period ); + + List> list = new ArrayList<>(); + + for ( DataApprovalStatus status : statusList ) + { + Map item = new HashMap(); + + DataApproval approval = status.getDataApproval(); + + if ( approval != null ) + { + item.put( "id", approval.getAttributeOptionCombo().getUid() ); + item.put( "level", status.getDataApprovalLevel() ); + item.put( "ou", approval.getOrganisationUnit().getUid() ); + item.put( "accepted", approval.isAccepted() ); + item.put( "permissions", status.getPermissions() ); + + list.add( item ); + } + } + + JacksonUtils.toXml( response.getOutputStream(), list ); + } + // ------------------------------------------------------------------------- // Post // -------------------------------------------------------------------------