Advertisement
Guest User

Untitled

a guest
Nov 29th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 2.78 KB | None | 0 0
  1. import groovy.transform.Canonical
  2. import groovy.transform.CompileStatic
  3. import io.swagger.annotations.ApiModel
  4. import io.swagger.annotations.ApiOperation
  5. import io.swagger.annotations.ApiResponse
  6. import io.swagger.annotations.ApiResponses
  7. import ninja.retro.api.components.Converter
  8. import ninja.retro.api.controllers.organizations.rooms.components.RoomFetcher
  9. import ninja.retro.api.controllers.organizations.rooms.components.RoomPathVars
  10. import ninja.retro.api.exceptions.ForbiddenException
  11. import ninja.retro.api.models.OrganizationRole
  12. import ninja.retro.api.projections.ActionPointDTO
  13. import ninja.retro.api.repositories.ActionsPointsRepo
  14. import ninja.retro.api.util.IdEncoder
  15. import ninja.retro.api.validation.EncodedIdConstraint
  16. import org.springframework.beans.factory.annotation.Autowired
  17. import org.springframework.web.bind.annotation.PatchMapping
  18. import org.springframework.web.bind.annotation.PathVariable
  19. import org.springframework.web.bind.annotation.RequestBody
  20. import org.springframework.web.bind.annotation.RestController
  21.  
  22. import javax.validation.Valid
  23. import javax.validation.constraints.Size
  24.  
  25. import static ninja.retro.api.util.LangUtils.coalesce
  26.  
  27. @RestController
  28. @ActionPointsApi
  29. class UpdateActionPoint {
  30.     @Autowired
  31.     RoomFetcher roomFetcher
  32.  
  33.     @Autowired
  34.     ActionsPointsRepo actionsPointsRepo
  35.  
  36.     @Autowired
  37.     Converter converter
  38.  
  39.     @ApiOperation(
  40.             value = "updates an action point",
  41.             produces = "application/json",
  42.             consumes = "application/json"
  43.     )
  44.     @ApiResponses([
  45.             @ApiResponse(code = 200, response = ActionPointDTO, message = "OK")
  46.     ])
  47.     @PatchMapping("/{id}")
  48.     ActionPointDTO patch(
  49.             @Valid RoomPathVars roomPathVars,
  50.             @PathVariable("id") @Valid @EncodedIdConstraint String sid,
  51.             @Valid @RequestBody Payload payload) {
  52.         def room = roomFetcher.fetch(roomPathVars, OrganizationRole.member)
  53.  
  54.         def id = IdEncoder.decode(sid)
  55.         def actionPoint = actionsPointsRepo.findByRoomIdAndId(room.id, id).orElseThrow(ForbiddenException.SUPPLIER)
  56.  
  57.         actionPoint.description = coalesce(payload.description, actionPoint.description)
  58.         actionPoint.resolved = coalesce(payload.resolved, actionPoint.resolved)
  59.         actionPoint.dueDate = coalesce(payload.dueDate, actionPoint.dueDate)
  60.  
  61.         def saved = actionsPointsRepo.save(actionPoint)
  62.  
  63.         converter.convertOne(saved, ActionPointDTO, ActionPointDTO.CONVERT_FIELDS)
  64.     }
  65.  
  66.     @ApiModel(value = "ninja.retro.api.controllers.organizations.rooms.actionpoints.UpdateActionPoint.Payload")
  67.     @CompileStatic
  68.     @Canonical
  69.     static class Payload {
  70.         @Size(min = 1, max = 10_000)
  71.         String description
  72.  
  73.         Boolean resolved
  74.  
  75.         Date dueDate
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement