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
}
}