Blame view

src/main/java/etunicorn/controller/ConsommationController.java 4.69 KB
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
1
2
  package etunicorn.controller;
  
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
3
  import etunicorn.RestrictedTo;
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
4
  import etunicorn.entity.Consommation;
2cc8026e   Geoffrey PREUD'HOMME   WIP Achat
5
  import etunicorn.entity.Personne;
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
6
  import etunicorn.generated.model.UpdateAcheteRequest;
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
7
8
9
  import etunicorn.generated.model.UpdateConsommationByIdRequest;
  import etunicorn.generated.model.UpdateConsommationRequest;
  import etunicorn.repository.ConsommationRepository;
2cc8026e   Geoffrey PREUD'HOMME   WIP Achat
10
  import etunicorn.service.PersonneService;
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
11
12
13
14
15
16
17
18
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.http.HttpStatus;
  import org.springframework.http.ResponseEntity;
  import org.springframework.web.bind.annotation.PathVariable;
  import org.springframework.web.bind.annotation.RequestBody;
  import org.springframework.web.bind.annotation.RestController;
  
  import javax.validation.Valid;
2cc8026e   Geoffrey PREUD'HOMME   WIP Achat
19
  import java.util.LinkedHashMap;
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
20
21
22
23
24
25
26
27
28
29
30
  
  /**
   * etunicorn-server
   * Copyright © 2017 Le Club Info Polytech Lille
   * Tous droits réservés
   */
  @RestController
  public class ConsommationController extends BaseController implements etunicorn.generated.ConsommationController {
      @Autowired
      ConsommationRepository consommationRepository;
  
2cc8026e   Geoffrey PREUD'HOMME   WIP Achat
31
32
33
      @Autowired
      PersonneService personneService;
  
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
34
      @Override
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
35
      @RestrictedTo("CONSO_LIST")
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
36
37
38
39
40
      public ResponseEntity<?> getConsommation() {
          return new ResponseEntity<Object>(this.consommationRepository.findAll(), HttpStatus.OK);
      }
  
      private ResponseEntity<?> mergeConsommation(Consommation consommation, UpdateConsommationRequest updateConsommationRequest) {
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
41
42
43
44
45
46
47
48
          if (updateConsommationRequest.getNom() != null) {
              consommation.setNom(updateConsommationRequest.getNom());
          }
          if (updateConsommationRequest.getPrix() != null) {
              consommation.setPrix(updateConsommationRequest.getPrix());
          }
          consommationRepository.save(consommation);
          return new ResponseEntity(consommation, HttpStatus.CREATED);
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
49
50
51
      }
  
      @Override
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
52
      @RestrictedTo("CONSO_ADD")
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
53
      public ResponseEntity<?> updateConsommation(@Valid @RequestBody UpdateConsommationRequest updateConsommationRequest) {
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
54
55
          Consommation consommation = new Consommation();
          return mergeConsommation(consommation, updateConsommationRequest);
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
56
57
58
      }
  
      @Override
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
59
      @RestrictedTo("CONSO_EDIT")
4ceffe1e   Geoffrey PREUD'HOMME   Correction /conso...
60
61
      public ResponseEntity<?> updateConsommationById(@PathVariable Long idConsommation, @Valid @RequestBody UpdateConsommationByIdRequest updateConsommationByIdRequest) {
          Consommation consommation = consommationRepository.findById(idConsommation.intValue());
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
62
63
64
65
66
67
68
          if (consommation == null) {
              return generateError(HttpStatus.NOT_FOUND, "Consommation inconnue");
          }
          UpdateConsommationRequest updateConsommationRequest = new UpdateConsommationRequest();
          updateConsommationRequest.setNom(updateConsommationByIdRequest.getNom());
          updateConsommationRequest.setPrix(updateConsommationByIdRequest.getPrix());
          return mergeConsommation(consommation, updateConsommationRequest);
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
69
70
71
      }
  
      @Override
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
72
      @RestrictedTo("CONSO_GET")
4ceffe1e   Geoffrey PREUD'HOMME   Correction /conso...
73
74
      public ResponseEntity<?> getConsommationById(@PathVariable Long idConsommation) {
          Consommation consommation = consommationRepository.findById(idConsommation.intValue());
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
75
76
77
78
          if (consommation == null) {
              return generateError(HttpStatus.NOT_FOUND, "Consommation inconnue");
          }
          return new ResponseEntity(consommation, HttpStatus.OK);
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
79
80
81
      }
  
      @Override
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
82
      @RestrictedTo("CONSO_REMOVE")
4ceffe1e   Geoffrey PREUD'HOMME   Correction /conso...
83
84
      public ResponseEntity<?> deleteConsommationById(@PathVariable Long idConsommation) {
          Consommation consommation = consommationRepository.findById(idConsommation.intValue());
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
85
86
87
88
          if (consommation == null) {
              return generateError(HttpStatus.NOT_FOUND, "Consommation inconnue");
          }
          consommationRepository.delete(consommation);
ce758498   Geoffrey PREUD'HOMME   Retourne quelque ...
89
          return new ResponseEntity<Object>(HttpStatus.NO_CONTENT);
0fd5cbb2   Geoffrey PREUD'HOMME   Changements API &...
90
91
92
93
      }
  
      @Override
      @RestrictedTo("CONSO_ACHAT")
4ceffe1e   Geoffrey PREUD'HOMME   Correction /conso...
94
      public ResponseEntity<?> updateAchete(@PathVariable Long idConsommation, @Valid @RequestBody UpdateAcheteRequest updateAcheteRequest) {
2cc8026e   Geoffrey PREUD'HOMME   WIP Achat
95
96
97
98
99
100
101
102
103
104
105
106
          Consommation consommation = consommationRepository.findById(idConsommation.intValue());
          if (consommation == null) {
              return generateError(HttpStatus.NOT_FOUND, "Consommation inconnue");
          }
          if (!(updateAcheteRequest.getParticipant() instanceof LinkedHashMap)) {
              return generateError(HttpStatus.BAD_REQUEST, "Participant doit être un objet");
          }
          Personne personne = personneService.getFromObject((LinkedHashMap<String, Object>) updateAcheteRequest.getParticipant());
          if (personne == null) {
              return generateError(HttpStatus.NOT_FOUND, "Personne inconnue");
          }
          // TODO To be continued...
3c4951b9   Geoffrey PREUD'HOMME   Date & Avancement...
107
108
109
          return null;
      }
  }