argos/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DescriptionTemplateTypeV2Co...

61 lines
2.8 KiB
Java

package eu.eudat.controllers.v2;
import eu.eudat.logic.security.claims.ClaimedAuthorities;
import eu.eudat.model.DescriptionTemplateType;
import eu.eudat.model.result.QueryResult;
import eu.eudat.models.data.security.Principal;
import eu.eudat.query.lookup.DescriptionTemplateTypeLookup;
import eu.eudat.service.DescriptionTemplateTypeService;
import eu.eudat.types.Authorities;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.UUID;
import static eu.eudat.controllers.v2.BaseController.extractQueryResultWithCount;
@RestController
@CrossOrigin
@Transactional
@RequestMapping(path = "api/v2/descriptionTemplateType", produces = MediaType.APPLICATION_JSON_VALUE)
public class DescriptionTemplateTypeV2Controller {
private final DescriptionTemplateTypeService descriptionTemplateTypeService;
public DescriptionTemplateTypeV2Controller(DescriptionTemplateTypeService descriptionTemplateTypeService) {
this.descriptionTemplateTypeService = descriptionTemplateTypeService;
}
@PostMapping("query")
public QueryResult<DescriptionTemplateType> query(@RequestBody DescriptionTemplateTypeLookup lookup, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal ignoredPrincipal) {
return extractQueryResultWithCount(descriptionTemplateTypeService::query, lookup);
}
@GetMapping("{id}")
public QueryResult<DescriptionTemplateType> get(@PathVariable("id") UUID id, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal ignoredPrincipal) {
return new QueryResult<>(descriptionTemplateTypeService.get(id));
}
@PostMapping("persist")
public QueryResult<DescriptionTemplateType> persist(@RequestBody DescriptionTemplateType payload, @ClaimedAuthorities(claims = {Authorities.ADMIN}) Principal ignoredPrincipal) {
return new QueryResult<>(descriptionTemplateTypeService.persist(payload));
}
@PostMapping("update")
public QueryResult<DescriptionTemplateType> update(@RequestBody DescriptionTemplateType payload, @ClaimedAuthorities(claims = {Authorities.ADMIN}) Principal ignoredPrincipal) {
return new QueryResult<>(descriptionTemplateTypeService.update(payload));
}
@DeleteMapping("delete/{id}")
public ResponseEntity<?> delete(@PathVariable(value = "id") UUID id, @ClaimedAuthorities(claims = {Authorities.ADMIN}) Principal ignoredPrincipal) {
if (descriptionTemplateTypeService.delete(id))
return ResponseEntity.status(HttpStatus.OK).build();
else
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
}