-
Notifications
You must be signed in to change notification settings - Fork 165
Expand file tree
/
Copy pathVoucherJsonApiController.java
More file actions
69 lines (54 loc) · 2.39 KB
/
VoucherJsonApiController.java
File metadata and controls
69 lines (54 loc) · 2.39 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
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.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping(value = "/api/v1/vouchers", produces = MediaType.APPLICATION_JSON_VALUE)
public class VoucherJsonApiController {
private final VoucherService voucherService;
public VoucherJsonApiController(VoucherService voucherService) {
this.voucherService = voucherService;
}
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Response<Void> create(@RequestBody VoucherCreateRequest voucherCreateRequest) {
voucherService.insert(voucherCreateRequest);
return Response.success(null);
}
@GetMapping
public Response<List<VoucherDto>> vouchers(@RequestParam("policy") Optional<VoucherPolicy> policy) {
List<VoucherDto> vouchers = policy
.map(voucherService::findAllVouchersByPolicy)
.orElse(voucherService.findAllVouchers())
.stream()
.toList();
return Response.success(vouchers);
}
@GetMapping("/date")
public Response<List<VoucherDto>> betweenDatesCreatedVouchers(
@RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate
) {
List<VoucherDto> vouchers = voucherService.findAllBetweenDates(startDate, endDate);
return Response.success(vouchers);
}
@GetMapping("/{id}")
public Response<VoucherDto> voucher(@PathVariable String id) {
VoucherDto voucher = voucherService.findById(id);
return Response.success(voucher);
}
@DeleteMapping("/{id}")
public Response<Void> delete(@PathVariable String id) {
voucherService.deleteById(id);
return Response.success(null);
}
}