package com.huixinpn.dionysus.controller.murmur; import com.huixinpn.dionysus.controller.util.PagingHelper; import com.huixinpn.dionysus.controller.util.Utils; import com.huixinpn.dionysus.domain.murmur.Murmur; import com.huixinpn.dionysus.domain.user.User; import com.huixinpn.dionysus.dto.EntityPageData; import com.huixinpn.dionysus.dto.murmur.MurmurData; import com.huixinpn.dionysus.repository.murmur.MurmurRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value = "/controllers/murmurs") public class MurmurController { @Autowired private MurmurRepository murmurRepository; @RequestMapping(value = {"", "/"}, method = RequestMethod.GET) public EntityPageData<MurmurData> getAllMurmurs(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size) { PageRequest paging = PagingHelper.getPageRequest(page, size); Page<Murmur> murmurs = murmurRepository.findAll(paging); return new EntityPageData<>(murmurs, MurmurData.class); } @RequestMapping(value = {"", "/"}, method = RequestMethod.POST) public MurmurData addMurmur(@RequestBody MurmurData data) { Murmur murmur = new Murmur(); murmur.setContent(data.getContent()); Murmur added = murmurRepository.save(murmur); return new MurmurData(added); } @RequestMapping(value = "/{id}", method = RequestMethod.PUT) public ResponseEntity<String> updateMurmur(@PathVariable Long id, @RequestBody MurmurData data) { Murmur updating = murmurRepository.findOne(id); updating.setContent(data.getContent()); Murmur updated = murmurRepository.save(updating); return new ResponseEntity<>(Utils.wrapSaveResult(updated.getId()), HttpStatus.OK); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) public ResponseEntity<String> updateMurmur(@PathVariable Long id) { murmurRepository.delete(id); return new ResponseEntity(Utils.EMPTY_JSON_OBJECT, HttpStatus.OK); } @RequestMapping(value = "/me", method = RequestMethod.GET) public EntityPageData<MurmurData> myQuestions(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size) { PageRequest paging = PagingHelper.getPageRequest(page, size); Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); User login = (User) authentication.getPrincipal(); Page<Murmur> murmurs = murmurRepository.findByCreatedBy(login, paging); return new EntityPageData<>(murmurs, MurmurData.class); } }