82 lines
2.9 KiB
C#
82 lines
2.9 KiB
C#
using Core.DomainObjects;
|
|
using Core.Enumerations;
|
|
using DataProviders;
|
|
using DomainResults.Common;
|
|
using WeatherForecast.Models.Requests;
|
|
using WeatherForecast.Models.Responses;
|
|
|
|
namespace WeatherForecast.Services {
|
|
|
|
public interface IBlogItemService {
|
|
(Guid?, IDomainResult) Post(Guid siteId, PostBlogItemRequestModel requestModel);
|
|
(GetBlogItemResponseModel, IDomainResult) Get(Guid siteId, Guid blogId);
|
|
(GetBlogItemResponseModel, IDomainResult) Get(Guid siteId, string slug);
|
|
(Guid?, IDomainResult) Update(Guid siteId, Guid blogId, PutBlogItemRequestModel requestData);
|
|
IDomainResult Delete(Guid siteId, Guid blogId);
|
|
}
|
|
|
|
public class BlogItemService : IBlogItemService {
|
|
private readonly ILogger<BlogItemService> _logger;
|
|
private readonly IBlogCatalogDataProvider _blogCatalogDataProvider;
|
|
private readonly ICategoryDataProvider _categoryDataProvider;
|
|
|
|
public BlogItemService(
|
|
ILogger<BlogItemService> logger,
|
|
IBlogCatalogDataProvider blogCatalogDataProvider
|
|
) {
|
|
_logger = logger;
|
|
_blogCatalogDataProvider = blogCatalogDataProvider;
|
|
}
|
|
|
|
public (Guid?, IDomainResult) Post(Guid siteId, PostBlogItemRequestModel requestModel) {
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public (GetBlogItemResponseModel?, IDomainResult) Get(Guid siteId, Guid blogId) {
|
|
var (item, result) = _blogCatalogDataProvider.Get(siteId, blogId);
|
|
|
|
if (!result.IsSuccess || item == null)
|
|
return (null, result);
|
|
|
|
var categories = new List<Category>();
|
|
foreach (var catId in item.Categories) {
|
|
var (category, getCategoryResult) = _categoryDataProvider.Get(catId, siteId);
|
|
if (!getCategoryResult.IsSuccess || category == null)
|
|
return (null, getCategoryResult);
|
|
|
|
categories.Add(category);
|
|
}
|
|
|
|
return IDomainResult.Success(new GetBlogItemResponseModel(item, categories, Locales.Us));
|
|
}
|
|
|
|
public (GetBlogItemResponseModel?, IDomainResult) Get(Guid siteId, string slug) {
|
|
var (item, result) = _blogCatalogDataProvider.Get(siteId, slug);
|
|
|
|
if (!result.IsSuccess || item == null)
|
|
return (null, result);
|
|
|
|
var locale = item.L10n.SingleOrDefault(x => x.Slug == slug)?.Locale ?? Locales.Us;
|
|
|
|
var categories = new List<Category>();
|
|
foreach (var catId in item.Categories) {
|
|
var (category, getCategoryResult) = _categoryDataProvider.Get(catId, siteId);
|
|
if (!getCategoryResult.IsSuccess || category == null)
|
|
return (null, getCategoryResult);
|
|
|
|
categories.Add(category);
|
|
}
|
|
|
|
return IDomainResult.Success(new GetBlogItemResponseModel(item, categories, locale));
|
|
}
|
|
|
|
public (Guid?, IDomainResult) Update(Guid siteId, Guid blogId, PutBlogItemRequestModel requestData) {
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public IDomainResult Delete(Guid siteId, Guid blogId) {
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|