package com.allfree.allfreespringbackend.controlller; import com.allfree.allfreespringbackend.common.dto.PhotoUrlDTO; import com.allfree.allfreespringbackend.controlller.exception.ResourceNotFoundException; import com.allfree.allfreespringbackend.model.Article; import com.allfree.allfreespringbackend.model.ArticleUpdateRequestDTO; import com.allfree.allfreespringbackend.model.EStatus; import com.allfree.allfreespringbackend.service.ArticleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; @CrossOrigin(origins = "*", maxAge = 4200) @RestController @RequestMapping("/api/v1/") public class ArticleController { private final ArticleService articleService; @Autowired public ArticleController(ArticleService articleService) { this.articleService = articleService; } @GetMapping("/articles") public List<Article> getAllArticles() { return articleService.getAllArticles(); } @GetMapping("articlesForUser/{userId}") public List<Article> getArticlesForuser(@PathVariable Long userId) { return articleService.getArticlesForUser(userId); } @PostMapping("/articles/new") public Article createArticle(@RequestBody Article article) { return articleService.saveArticle(article); } @GetMapping("/articles/{id}") public Article getArticleById(@PathVariable Long id) { return articleService.getArticleById(id); } @PostMapping("/articles/update/{id}") public Article updateArticle(@PathVariable Long id, @RequestBody ArticleUpdateRequestDTO article) { return articleService.updateArticle(id, article); } @PutMapping("/articles/updateUrl/{id}") public void updateArticleUrl(@PathVariable Long id, @RequestBody PhotoUrlDTO url) { articleService.updateArticleUrl(id, url.getUrl()); } @GetMapping("/articles/delete/{id}") public boolean deleteArticle(@PathVariable Long id) { articleService.deleteArticle(id); Map<String, Boolean> response = new HashMap<>(); try { this.articleService.getArticleById(id); } catch (ResourceNotFoundException e) { return true; } return false; } @GetMapping("articles/status/{status}") public List<Article> getArticlesByStatus(@PathVariable String status) { return articleService.getArticlesByStatus(EStatus.valueOf(status)); } @PutMapping("/articles/{articleID}/updateStatus/{valueStatus}") public String updateStatusArticle(@PathVariable Long articleID, @PathVariable String valueStatus) { EStatus newStatus = null; if (articleService.getArticlesByStatus(valueStatus.toUpperCase())) { newStatus = EStatus.valueOf(valueStatus.toUpperCase()); } Article article = articleService.getArticleById(articleID); article.setStatus(newStatus); articleService.saveArticle(article); return "Status updated, => " + newStatus; } @GetMapping("/articles/acceptAll") public String acceptAll() { EStatus newStatus = EStatus.valueOf("ACCEPTED"); for (Article art : articleService.getArticlesByStatus(EStatus.PENDING)) { art.setStatus(newStatus); articleService.saveArticle(art); } return "Status updated, => " + newStatus; } @GetMapping("/articles/declineAll") public String declineAll() { EStatus newStatus = EStatus.valueOf("DECLINED"); for (Article art : articleService.getArticlesByStatus(EStatus.PENDING)) { art.setStatus(newStatus); articleService.saveArticle(art); } return "Status updated, => " + newStatus; } }