allfree-springboot-backend / src / main / java / com / allfree / allfreespringbackend / service / ArticleService.java
ArticleService.java
Raw
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);
		}
	}
}