using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using xCategoryService.Interfaces; using xCategoryService.Models.Dtos; using xIdentityModels.Models; using xModels.Dtos; namespace xCategoryService.Providers { /// /// Completely Exported Service ... /// public class XCategoryService : IXCategoryService { private readonly IXCategoryProvider categoryProvider; private readonly IXSubCategoryProvider subCategoryProvider; public XCategoryService( IXCategoryProvider categoryProvider, IXSubCategoryProvider subCategoryProvider ) { this.categoryProvider = categoryProvider; this.subCategoryProvider = subCategoryProvider; } // #region Category Provider ... /// /// Check Has Specified Locale or not ... /// /// /// /// /// public virtual async Task CategoryHasLocale( int id, string language, CancellationToken cancellationToken = default ) { // return await categoryProvider .HasLocale( id: id, language: language, cancellationToken: cancellationToken ); } /// /// Load an Item by all of it's Related Translations ... /// /// /// /// public virtual async Task GetCategoryResource( int id, CancellationToken cancellationToken = default ) { // return await categoryProvider .GetResource( id: id, cancellationToken: cancellationToken ); } /// /// Add Item for Specified Language ... /// /// /// /// /// /// /// public virtual async Task AddCategory( XCategoryDto item, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .Add( item: item, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Add Item by It's Locales ... /// /// /// /// /// /// public virtual async Task AddCategoryResource( XCategoryResourceDto item, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .AddResource( item: item, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Remove Item for Specified Language ... /// /// /// if null, Remove All /// /// /// /// public virtual async Task RemoveCategory( int id, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .Remove( id: id, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Update an Item for Specified Language ... /// /// /// /// /// /// /// /// public virtual async Task UpdateCategory( int id, XCategoryDto item, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .Update( id: id, item: item, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Refresh a Resource ... /// /// /// /// /// /// public virtual async Task RefreshCategory( XCategoryResourceDto resource, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .Refresh( resource: resource, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Get All Resources ... /// /// /// public virtual async Task> GetAllCategoryResources( CancellationToken cancellationToken = default ) { // return await categoryProvider .GetAllResources( cancellationToken: cancellationToken ); } /// /// Find One Resource ... /// /// /// /// public virtual async Task FindOneCategoryResource( Expression> predicate = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .FindOneResource( predicate: predicate, cancellationToken: cancellationToken ); } /// /// Find Many Resource ... /// /// /// /// /// public virtual async Task> FindManyCategoryResource( Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .FindManyResource( predicate: predicate, orderBuilder: orderBuilder, cancellationToken: cancellationToken ); } /// /// Retrieve Resources by Query Pattern ... /// /// /// /// /// /// public virtual async Task> QueryCategoryResources( XQuery query = null, Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, CancellationToken cancellationToken = default ) { // return await categoryProvider .QueryResources( query: query, predicate: predicate, orderBuilder: orderBuilder, cancellationToken: cancellationToken ); } /// /// Get All Resources as Async Enumerable ... /// /// /// public virtual IAsyncEnumerable GetAllCategoryResourcesAsAsyncEnumerable( CancellationToken cancellationToken = default ) { // return categoryProvider .GetAllResourcesAsAsyncEnumerable( cancellationToken: cancellationToken ); } #endregion // #region SubCategory Provider ... /// /// Check Has Specified Locale or not ... /// /// /// /// /// public virtual async Task SubCategoryHasLocale( int id, string language, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .HasLocale( id: id, language: language, cancellationToken: cancellationToken ); } /// /// Load an Item by all of it's Related Translations ... /// /// /// /// public virtual async Task GetSubCategoryResource( int id, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .GetResource( id: id, cancellationToken: cancellationToken ); } /// /// Add Item for Specified Language ... /// /// /// /// /// /// /// public virtual async Task AddSubCategory( XSubCategoryDto item, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .Add( item: item, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Add Item by it's Locales and Reference ... /// /// /// /// /// /// public virtual async Task AddSubCategoryResource( XSubCategoryResourceDto item, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .AddResource( item: item, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Remove Item for Specified Language ... /// /// /// if null, Remove All /// /// /// /// public virtual async Task RemoveSubCategory( int id, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .Remove( id: id, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Update an Item for Specified Language ... /// /// /// /// /// /// /// /// public virtual async Task UpdateSubCategory( int id, XSubCategoryDto item, string language = null, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .Update( id: id, item: item, language: language, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Refresh a Resource ... /// /// /// /// /// /// public virtual async Task RefreshSubCategory( XSubCategoryResourceDto resource, string connectionId = null, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .Refresh( resource: resource, userInfo: userInfo, connectionId: connectionId, cancellationToken: cancellationToken ); } /// /// Get All Resources ... /// /// /// public virtual async Task> GetAllSubCategoryResources( CancellationToken cancellationToken = default ) { // return await subCategoryProvider .GetAllResources( cancellationToken: cancellationToken ); } /// /// Find One Resource ... /// /// /// /// public virtual async Task FindOneSubCategoryResource( Expression> predicate = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .FindOneResource( predicate: predicate, cancellationToken: cancellationToken ); } /// /// Find Many Resource ... /// /// /// /// /// public virtual async Task> FindManySubCategoryResource( Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .FindManyResource( predicate: predicate, orderBuilder: orderBuilder, cancellationToken: cancellationToken ); } /// /// Retrieve Resources by Query Pattern ... /// /// /// /// /// /// public virtual async Task> QuerySubCategoryResources( XQuery query = null, Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, CancellationToken cancellationToken = default ) { // return await subCategoryProvider .QueryResources( query: query, predicate: predicate, orderBuilder: orderBuilder, cancellationToken: cancellationToken ); } /// /// Get All Resources as Async Enumerable ... /// /// /// public virtual IAsyncEnumerable GetAllSubCategoryResourcesAsAsyncEnumerable( CancellationToken cancellationToken = default ) { // return subCategoryProvider .GetAllResourcesAsAsyncEnumerable( cancellationToken: cancellationToken ); } #endregion } }