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 0000000000000000000000000000000000000000..7b22a24766537ac89ef18884437c896e59c3e39c --- /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 0000000000000000000000000000000000000000..d54a8328b39e8b77ffb02e9e8f286d6b4a3b3164 --- /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 0000000000000000000000000000000000000000..471a1d58c6a2547191a40d679c930e43406b57d5 --- /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 0000000000000000000000000000000000000000..bd5337eceb6d86898310e6865654cb28f7564f15 --- /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; + } +}