package com.allfree.allfreespringbackend.service; 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.repository.ArticleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class ArticleService { private final ArticleRepository articleRepository; private UserService userService; @Autowired public ArticleService(ArticleRepository articleRepository) { this.articleRepository = articleRepository; } public List<Article> getAllArticles() { return articleRepository.findAll(); } public Article saveArticle(Article article) { return articleRepository.save(article); } public Article saveArticleWithOwner(Article article, Long userId) { var user = userService.getUserById(userId); user.addArticle(article); userService.saveUser(user); return articleRepository.save(article); } public Article getArticleById(Long id) { return articleRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("Article not found")); } public Article updateArticle(Long id, ArticleUpdateRequestDTO articleUpdated) { Article articleToUpdate = getArticleById(id); articleToUpdate.setDetails( articleUpdated.getTitle(), articleUpdated.getDescription(), articleUpdated.getLocation(), articleUpdated.getEmail(), articleUpdated.getPhone() ); return articleRepository.save(articleToUpdate); } public void deleteArticle(Long id) { articleRepository.delete(getArticleById(id)); } public List<Article> getArticlesByStatus(EStatus status) { return articleRepository.getArticlesByStatus(status); } public List<Article> getArticlesOwnedBy(Long id) { return articleRepository.getArticlesOwnedByUserId(id); } public boolean getArticlesByStatus(String value) { for (EStatus e : EStatus.values()) { if (e.name().equals(value)) return true; } return false; } public List<Article> getArticlesForUser(Long id) { return this.articleRepository.getArticlesForUser(id); } public void updateArticleUrl(Long id, String url) { Article article =getArticleById(id); if (article != null) { article.setPhotos(url); articleRepository.save(article); } } }