using DomainResults.Common; using DataProviders.Collections; using Core.Abstractions; using Core.Enumerations; using WeatherForecast.Models.Responses; using WeatherForecast.Models.Category.Responses; using DomainObjects.Enumerations; namespace WeatherForecast.Services { /// /// /// public interface ICategoryItemsService { /// /// /// /// /// /// (List?, IDomainResult) Get(Guid siteId, string? locale); /// /// /// /// /// IDomainResult Delete(Guid siteId); } /// /// /// public class CategoryItemsService : ServiceBase, ICategoryItemsService { private readonly ICategoryDataProvider _categoryDataProvider; /// /// /// /// /// public CategoryItemsService( ILogger logger, ICategoryDataProvider categoryDataProvider ) : base(logger) { _categoryDataProvider = categoryDataProvider; } /// /// /// /// /// /// public (List?, IDomainResult) Get(Guid siteId, string? locale) { try { var (items, result) = _categoryDataProvider.GetAll(siteId); if (!result.IsSuccess || items == null) return (null, result); if (locale != null) { return IDomainResult.Success(items.Select(x => new CategoryItemResponseModel(x, Enumeration.FromDisplayName(locale) ?? Locales.Us)).ToList()); } return IDomainResult.Success(items.Select(x => new CategoryItemResponseModel(x)).ToList()); } catch (Exception ex) { _logger.LogError(ex, "Unhandled exception"); return IDomainResult.Failed?>(ex.Message); } } /// /// /// /// /// public IDomainResult Delete(Guid siteId) { try { return _categoryDataProvider.DeleteAll(siteId); } catch (Exception ex) { _logger.LogError(ex, "Unhandled exception"); return IDomainResult.Failed(ex.Message); } } } }