From 668ac1fc71e42d5c53cbddcbd61cfc9d34e31643 Mon Sep 17 00:00:00 2001
From: Charly <maeder@cines.fr>
Date: Tue, 27 Jul 2021 15:23:45 +0200
Subject: [PATCH] Add controller with create and getall for request historical

---
 ...tHarvesterRequestHistoricalController.java | 84 +++++++++++++++++++
 .../dao/RequestHistoricalRepository.java      | 19 +++++
 .../model/requestHistorical/CreateParams.java |  6 ++
 .../model/user/RequestHistorical.java         | 54 ++++++++++++
 4 files changed, 163 insertions(+)
 create mode 100644 src/main/java/com/smartharvester/controller/SmartHarvesterRequestHistoricalController.java
 create mode 100644 src/main/java/com/smartharvester/dao/RequestHistoricalRepository.java
 create mode 100644 src/main/java/com/smartharvester/model/requestHistorical/CreateParams.java
 create mode 100644 src/main/java/com/smartharvester/model/user/RequestHistorical.java

diff --git a/src/main/java/com/smartharvester/controller/SmartHarvesterRequestHistoricalController.java b/src/main/java/com/smartharvester/controller/SmartHarvesterRequestHistoricalController.java
new file mode 100644
index 0000000..7b22a24
--- /dev/null
+++ b/src/main/java/com/smartharvester/controller/SmartHarvesterRequestHistoricalController.java
@@ -0,0 +1,84 @@
+package com.smartharvester.controller;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoDatabase;
+import com.mongodb.client.MongoIterable;
+import com.smartharvester.dao.CatalogDaoRepository;
+import com.smartharvester.dao.OpenApiDaoRepository;
+import com.smartharvester.dao.RequestHistoricalRepository;
+import com.smartharvester.dao.UserDaoRepository;
+import com.smartharvester.exception.ResourceNotFoundException;
+import com.smartharvester.model.login.response.MessageResponse;
+import com.smartharvester.model.openapi.OpenApi;
+import com.smartharvester.model.requestHistorical.CreateParams;
+import com.smartharvester.model.user.Catalog;
+import com.smartharvester.model.user.RequestHistorical;
+import com.smartharvester.model.user.SmartHarvesterUser;
+import com.smartharvester.service.UserDaoSevice;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+
+import org.bson.Document;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+import javax.validation.Valid;
+
+@CrossOrigin(origins = "*")
+@RestController
+@Tag(name = "SmartHarvester publication", description = "Request historical")
+@RequestMapping("/harvester/api/request-historical")
+
+public class SmartHarvesterRequestHistoricalController {
+
+    @Autowired
+    private RequestHistoricalRepository requestHistoricalRepository;
+
+    @Autowired
+    private CatalogDaoRepository catalogDoaRepository;
+
+    /**
+     * Method to get catalog request historical, order by date.
+     * 
+     * @return Request historical array.
+     */
+
+    @GetMapping("/getall/{catId}")
+    public ResponseEntity<?> getAll(@PathVariable("catId") String catId) {
+        List<RequestHistorical> response = requestHistoricalRepository.findAllByCatIdOrderByRequestDateDesc(catId);
+
+        if (response == null || response.size() == 0) {
+            return ResponseEntity.badRequest()
+                    .body(new MessageResponse("Error: historical not found!", HttpStatus.NOT_FOUND));
+        }
+        return ResponseEntity.ok(response);
+    }
+
+    @PostMapping("/create")
+    public ResponseEntity<?> create(@Valid @RequestBody CreateParams params) {
+
+        if (catalogDoaRepository.findByCatId(params.catId) == null) {
+            return ResponseEntity.badRequest()
+                    .body(new MessageResponse("Error: Catalog not found!", HttpStatus.NOT_FOUND));
+        }
+
+        List<RequestHistorical> historical = requestHistoricalRepository.findAllByCatIdOrderByRequestDateDesc(params.catId);
+        for (int i = 0; i < historical.size(); i++) {
+            if (i > 8) {
+                requestHistoricalRepository.delete(historical.get(i));
+            }
+        }
+
+        requestHistoricalRepository.save(new RequestHistorical(params.catId, params.request));
+
+        return ResponseEntity.ok(new MessageResponse("Request added successfully to historical!", HttpStatus.OK));
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/smartharvester/dao/RequestHistoricalRepository.java b/src/main/java/com/smartharvester/dao/RequestHistoricalRepository.java
new file mode 100644
index 0000000..d54a832
--- /dev/null
+++ b/src/main/java/com/smartharvester/dao/RequestHistoricalRepository.java
@@ -0,0 +1,19 @@
+package com.smartharvester.dao;
+
+import com.smartharvester.model.openapi.OpenApi;
+import com.smartharvester.model.user.RequestHistorical;
+import com.smartharvester.model.user.SmartHarvesterUser;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.mongodb.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+
+@Repository
+public interface RequestHistoricalRepository extends MongoRepository<RequestHistorical, Integer> {
+
+    List<RequestHistorical> findAllByCatIdOrderByRequestDateDesc(String catId);
+
+}
diff --git a/src/main/java/com/smartharvester/model/requestHistorical/CreateParams.java b/src/main/java/com/smartharvester/model/requestHistorical/CreateParams.java
new file mode 100644
index 0000000..471a1d5
--- /dev/null
+++ b/src/main/java/com/smartharvester/model/requestHistorical/CreateParams.java
@@ -0,0 +1,6 @@
+package com.smartharvester.model.requestHistorical;
+
+public class CreateParams {
+    public String catId;
+    public String request;
+}
diff --git a/src/main/java/com/smartharvester/model/user/RequestHistorical.java b/src/main/java/com/smartharvester/model/user/RequestHistorical.java
new file mode 100644
index 0000000..bd5337e
--- /dev/null
+++ b/src/main/java/com/smartharvester/model/user/RequestHistorical.java
@@ -0,0 +1,54 @@
+package com.smartharvester.model.user;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import org.springframework.data.annotation.Id;
+
+public class RequestHistorical {
+
+    @Id
+    private String id;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date requestDate;
+
+	private String catId;
+
+    private String request;
+
+    public RequestHistorical(String catId, String request) {
+        this.catId = catId;
+        this.request = request;
+        this.requestDate = new Date();
+    }
+
+    public String getId() {
+        return this.id;
+    }
+
+    public Date getRequestDate() {
+        return this.requestDate;
+    }
+
+    public String getCatId() {
+        return this.catId;
+    }
+
+    public String getRequest() {
+        return this.request;
+    }
+
+    public void setRequestDate(Date requestDate) {
+        this.requestDate = requestDate;
+    }
+
+    public void setCatId(String catId) {
+        this.catId = catId;
+    }
+
+    public void setRequest(String request) {
+        this.request = request;
+    }
+}
-- 
GitLab