48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
// src/Webshop.Application/Services/ProductService.cs
|
|
using Webshop.Application.DTOs;
|
|
using Webshop.Domain.Interfaces;
|
|
|
|
namespace Webshop.Application.Services
|
|
{
|
|
public class ProductService
|
|
{
|
|
private readonly IProductRepository _productRepository;
|
|
|
|
public ProductService(IProductRepository productRepository)
|
|
{
|
|
_productRepository = productRepository;
|
|
}
|
|
|
|
public async Task<IEnumerable<ProductDto>> GetAllProductsAsync()
|
|
{
|
|
var productsFromDb = await _productRepository.GetAllProductsAsync();
|
|
|
|
var productDtos = productsFromDb.Select(p => new ProductDto
|
|
{
|
|
Id = p.Id,
|
|
Name = p.Name,
|
|
Description = p.Description,
|
|
Price = p.Price,
|
|
Sku = p.SKU
|
|
});
|
|
|
|
return productDtos;
|
|
}
|
|
|
|
public async Task<ProductDto> CreateProductAsync(ProductDto productDto)
|
|
{
|
|
var newProduct = new Domain.Entities.Product
|
|
{
|
|
Name = productDto.Name,
|
|
Description = productDto.Description,
|
|
Price = productDto.Price,
|
|
SKU = productDto.Sku
|
|
};
|
|
|
|
await _productRepository.AddProductAsync(newProduct);
|
|
|
|
productDto.Id = newProduct.Id;
|
|
return productDto;
|
|
}
|
|
}
|
|
} |