using Core.Abstractions;
using DataProviders.Collections;
using DomainResults.Common;
namespace WeatherForecast.Services.Abstractions {
  /// 
  /// 
  /// 
  public abstract class PostItemServiceBase : ServiceBase {
    /// 
    /// 
    /// 
    protected readonly ICategoryDataProvider _categoryDataProvider;
    /// 
    /// 
    /// 
    /// 
    /// 
    public PostItemServiceBase(
      ILogger logger,
      ICategoryDataProvider categoryDataProvider
    ) : base(logger) {
      _categoryDataProvider = categoryDataProvider;
    }
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    public (List?, IDomainResult) AddCategoryIfNullOrEmpty(Guid siteId, List? categories) {
      categories ??= new List();
      if (categories.Count == 0) {
        var (catId, catCreateResult) = _categoryDataProvider.CreateDefault(siteId);
        if (!catCreateResult.IsSuccess || catId == null)
          return IDomainResult.Failed?>();
        categories.Add(catId.Value);
      }
      return IDomainResult.Success(categories);
    }
  }
}