// src/Webshop.Application/Services/Admin/AdminReviewService.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Webshop.Application.DTOs.Reviews; using Webshop.Domain.Interfaces; namespace Webshop.Application.Services.Admin { public class AdminReviewService : IAdminReviewService { private readonly IReviewRepository _reviewRepository; public AdminReviewService(IReviewRepository reviewRepository) { _reviewRepository = reviewRepository; } public async Task> GetAllReviewsAsync() { var reviews = await _reviewRepository.GetAllAsync(); return reviews.Select(r => new ReviewDto { Id = r.Id, ProductId = r.ProductId, ProductName = r.Product?.Name, CustomerName = $"{r.Customer?.FirstName} {r.Customer?.LastName}", Rating = r.Rating, Title = r.Title, Comment = r.Comment, ReviewDate = r.ReviewDate, IsApproved = r.IsApproved }); } public async Task ApproveReviewAsync(Guid reviewId) { var review = await _reviewRepository.GetByIdAsync(reviewId); if (review == null) return ServiceResult.Fail(ServiceResultType.NotFound, "Bewertung nicht gefunden."); review.IsApproved = true; await _reviewRepository.UpdateAsync(review); return ServiceResult.Ok(); } public async Task DeleteReviewAsync(Guid reviewId) { var review = await _reviewRepository.GetByIdAsync(reviewId); if (review == null) return ServiceResult.Fail(ServiceResultType.NotFound, "Bewertung nicht gefunden."); await _reviewRepository.DeleteAsync(reviewId); return ServiceResult.Ok(); } } }