Start Implementing XBaseFileProvider ...

This commit is contained in:
2025-12-08 04:41:52 +03:30
parent 64969bf9b1
commit 4cf1e4d629
7 changed files with 433 additions and 149 deletions
+33
View File
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using xFileService.Interfaces;
using xTagService.Interfaces;
namespace xFileService.Providers
{
public class XBaseFileProvider<TKey> : IXBaseFileProvider<TKey>
{
//
#region Props ...
/// <summary>
/// Specified Provider ...
/// </summary>
public string ProvideFor { get; }
/// <summary>
/// Specified Provider Repositroy ...
/// </summary>
public IXFileProvider Provider { get; }
/// <summary>
/// Tag Provider for Specified File ...
/// </summary>
/// <value></value>
public IXBaseTagProvider<TKey> TagProvider { get; }
#endregion
}
}
+109 -109
View File
@@ -57,6 +57,106 @@ namespace xFileService.Providers
}
#endregion
//
#region Helpers ...
/// <summary>
/// Converts an Entity to Dto ...
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task<XFileDto> ToDto(XFile model)
{
//
XFileDto result = null;
//
if (!model.IsNullOrDefault())
{
//
result = model.ToDto();
//
// Prepare Inner API Providers Device Dto ...
var device = IdentityProvider.GetDevice();
var userInfo = await IdentityProvider.GetUserInfo(
device: device,
userSelectByParam: model.OwnerId
);
if (userInfo.IsNullOrDefault())
{
XException.NotFound.Throw();
}
//
result.Owner = userInfo.ToXPersonDto();
}
//
return result;
}
/// <summary>
/// Convert a List of Entities to Dto ...
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public async Task<IEnumerable<XFileDto>> ToDtoList(IEnumerable<XFile> list)
{
//
var result = new List<XFileDto>();
//
if (!list.IsNull() && list.HasChild())
{
//
foreach (var item in list)
{
//
var dto = await ToDto(item);
if (!dto.IsNullOrDefault())
{
result.Add(dto);
}
}
}
//
return result;
}
/// <summary>
/// Converts an Entity Query Result to Dto ...
/// </summary>
/// <param name="queryResult"></param>
/// <returns></returns>
public async Task<XQueryResult<XFileDto>> ToDtoQueryResult(XQueryResult<XFile> queryResult)
{
//
var result = new XQueryResult<XFileDto>();
//
if (!queryResult.IsNullOrDefault())
{
//
result.Page = queryResult.Page;
result.PageSize = queryResult.PageSize;
result.TotalItems = queryResult.TotalItems;
result.TotalPages = queryResult.TotalPages;
result.TotalFilteredItems = queryResult.TotalFilteredItems;
result.TotalFilteredPages = queryResult.TotalFilteredPages;
//
if (!queryResult.Items.IsNull() && queryResult.Items.HasChild())
{
result.Items = await ToDtoList(queryResult.Items);
}
}
//
return result;
}
#endregion
//
#region Tools ...
/// <summary>
@@ -280,7 +380,7 @@ namespace xFileService.Providers
//
// Preparing Result ...
var result = await ToXDtoList(entities);
var result = await ToDtoList(entities);
//
return result;
@@ -569,7 +669,7 @@ namespace xFileService.Providers
}
//
var result = await ToXFileDto(entitiy);
var result = await ToDto(entitiy);
if (result.IsNullOrDefault())
{
XException.ActionFailed.Throw();
@@ -594,7 +694,7 @@ namespace xFileService.Providers
if (!entities.IsNull() && entities.HasChild())
{
//
result = (await ToXDtoList(entities))
result = (await ToDtoList(entities))
.ToList();
}
@@ -615,7 +715,7 @@ namespace xFileService.Providers
var entity = await FileRepository.FindOneAsync(whereClause);
if (!entity.IsNullOrDefault())
{
result = await ToXFileDto(entity);
result = await ToDto(entity);
}
//
@@ -639,7 +739,7 @@ namespace xFileService.Providers
if (!entities.IsNull() && entities.HasChild())
{
//
result = (await ToXDtoList(entities))
result = (await ToDtoList(entities))
.ToList();
}
@@ -663,7 +763,7 @@ namespace xFileService.Providers
var queryResult = await FileRepository.QueryAsync(query);
if (!queryResult.IsNullOrDefault())
{
result = await ToXDtoQueryResult(queryResult);
result = await ToDtoQueryResult(queryResult);
}
//
@@ -691,7 +791,7 @@ namespace xFileService.Providers
);
if (!queryResult.IsNullOrDefault())
{
result = await ToXDtoQueryResult(queryResult);
result = await ToDtoQueryResult(queryResult);
}
//
@@ -771,7 +871,7 @@ namespace xFileService.Providers
}
//
var result = await ToXFileDto(entity);
var result = await ToDto(entity);
//
return result;
@@ -832,7 +932,7 @@ namespace xFileService.Providers
}
//
result = await ToXFileDto(entitiy);
result = await ToDto(entitiy);
if (result.IsNullOrDefault())
{
XException.ActionFailed.Throw();
@@ -863,105 +963,5 @@ namespace xFileService.Providers
return await FileRepository.IsExistsAsync(id);
}
#endregion
//
#region Helpers ...
/// <summary>
/// Converts an Entity to Dto ...
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task<XFileDto> ToXFileDto(XFile model)
{
//
XFileDto result = null;
//
if (!model.IsNullOrDefault())
{
//
result = model.ToXFileDto();
//
// Prepare Inner API Providers Device Dto ...
var device = IdentityProvider.GetDevice();
var userInfo = await IdentityProvider.GetUserInfo(
device: device,
userSelectByParam: model.OwnerId
);
if (userInfo.IsNullOrDefault())
{
XException.NotFound.Throw();
}
//
result.Owner = userInfo.ToXPersonDto();
}
//
return result;
}
/// <summary>
/// Convert a List of Entities to Dto ...
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public async Task<IEnumerable<XFileDto>> ToXDtoList(IEnumerable<XFile> list)
{
//
var result = new List<XFileDto>();
//
if (!list.IsNull() && list.HasChild())
{
//
foreach (var item in list)
{
//
var dto = await ToXFileDto(item);
if (!dto.IsNullOrDefault())
{
result.Add(dto);
}
}
}
//
return result;
}
/// <summary>
/// Converts an Entity Query Result to Dto ...
/// </summary>
/// <param name="queryResult"></param>
/// <returns></returns>
public async Task<XQueryResult<XFileDto>> ToXDtoQueryResult(XQueryResult<XFile> queryResult)
{
//
var result = new XQueryResult<XFileDto>();
//
if (!queryResult.IsNullOrDefault())
{
//
result.Page = queryResult.Page;
result.PageSize = queryResult.PageSize;
result.TotalItems = queryResult.TotalItems;
result.TotalPages = queryResult.TotalPages;
result.TotalFilteredItems = queryResult.TotalFilteredItems;
result.TotalFilteredPages = queryResult.TotalFilteredPages;
//
if (!queryResult.Items.IsNull() && queryResult.Items.HasChild())
{
result.Items = await ToXDtoList(queryResult.Items);
}
}
//
return result;
}
#endregion
}
}