package org.dicadeveloper.weplantaforest.admin.event; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dicadeveloper.weplantaforest.admin.code.Code; import org.dicadeveloper.weplantaforest.admin.code.CodeRepository; import org.dicadeveloper.weplantaforest.admin.views.Views; import org.dicadeveloper.weplantaforest.common.errorHandling.IpatException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.annotation.JsonView; import lombok.NonNull; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor(onConstructor = @__(@Autowired) ) @RestController public class EventController { protected final Log LOG = LogFactory.getLog(EventController.class.getName()); public final static String REQUEST_URL = "/event"; private @NonNull EventService eventService; private @NonNull EventRepository eventRepository; private @NonNull CodeRepository _codeRepository; @PostMapping(value = REQUEST_URL) @JsonView(Views.EventDetails.class) public Event createEvent(@RequestBody Event event) throws IpatException { return eventService.create(event); } @PutMapping(value = REQUEST_URL) @JsonView(Views.EventDetails.class) public Event updateEvent(@RequestBody Event event) throws IpatException { return eventService.update(event); } @GetMapping(value = REQUEST_URL + "s") @JsonView(Views.EventOverview.class) public Iterable<Event> getEvents() { return eventRepository.findAll(); } @GetMapping(value = REQUEST_URL + "/{eventId}") @JsonView(Views.EventDetails.class) public Event getEvent(@PathVariable Long eventId) throws IpatException { return eventService.getEvent(eventId); } @DeleteMapping(value = REQUEST_URL + "/{eventId}") public void deleteEvent(@PathVariable Long eventId) throws IpatException { eventService.delete(eventId); } @GetMapping(value = REQUEST_URL + "/codes/{eventId}") @JsonView(Views.CodeOverview.class) public Iterable<Code> getCodesForEvent(@PathVariable Long eventId) { return _codeRepository.findByEventId(eventId); } @PostMapping(value = REQUEST_URL + "/codes/{eventId}") public ResponseEntity<?> createEvent(@PathVariable Long eventId, @RequestBody List<Long> cartIds) throws IpatException { eventService.generateCodes(eventId, cartIds); return new ResponseEntity<>(HttpStatus.OK); } }