-
Notifications
You must be signed in to change notification settings - Fork 165
Expand file tree
/
Copy pathVoucherXmlApiController.java
More file actions
71 lines (56 loc) · 2.69 KB
/
VoucherXmlApiController.java
File metadata and controls
71 lines (56 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.dev.voucherproject.controller.web;
import com.dev.voucherproject.controller.web.request.VoucherCreateRequest;
import com.dev.voucherproject.controller.web.response.Response;
import com.dev.voucherproject.model.service.VoucherService;
import com.dev.voucherproject.model.voucher.VoucherDto;
import com.dev.voucherproject.model.voucher.VoucherPolicy;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.net.URI;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping(value = "/api/v1/vouchers", produces = MediaType.APPLICATION_ATOM_XML_VALUE)
public class VoucherXmlApiController {
private final VoucherService voucherService;
public VoucherXmlApiController(VoucherService voucherService) {
this.voucherService = voucherService;
}
@PostMapping(consumes = MediaType.APPLICATION_ATOM_XML_VALUE)
public ResponseEntity<Response<String>> create(@RequestBody VoucherCreateRequest voucherCreateRequest) {
String id = voucherService.insert(voucherCreateRequest);
return ResponseEntity.created(URI.create("/api/v1/vouchers/"+id))
.body(Response.success(id));
}
@GetMapping
public ResponseEntity<Response<List<VoucherDto>>> vouchers(@RequestParam("voucherPolicy") Optional<VoucherPolicy> voucherPolicy) {
List<VoucherDto> voucherDtos = voucherService.findAllVouchersAppliedQueryString(voucherPolicy);
return ResponseEntity.ok()
.body(Response.success(voucherDtos));
}
@GetMapping("/date")
public ResponseEntity<Response<List<VoucherDto>>> betweenDatesCreatedVouchers(
@RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate
) {
List<VoucherDto> voucherDtos = voucherService.findAllBetweenDates(startDate, endDate);
return ResponseEntity.ok()
.body(Response.success(voucherDtos));
}
@GetMapping("/{id}")
public ResponseEntity<Response<VoucherDto>> voucher(@PathVariable String id) {
VoucherDto voucherDtos = voucherService.findById(id);
return ResponseEntity.ok()
.body(Response.success(voucherDtos));
}
@DeleteMapping("/{id}")
public ResponseEntity<Response<String>> delete(@PathVariable String id) {
voucherService.deleteById(id);
return ResponseEntity.ok()
.body(Response.success(id));
}
}