Files
xCategoryService/Extensions/XCategoryResourceExtensions.cs

121 lines
3.3 KiB
C#

using System.Linq;
using xCategoryService.Models.Dtos;
using xCategoryService.Providers.Dtos;
using xCommons.Extensions;
namespace xCategoryService.Extensions
{
/// <summary>
/// Extensions Method Related to XCategoryResourceDto ...
/// </summary>
public static class XCategoryResourceExtensions
{
/// <summary>
/// Extract Available Languages ...
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string[] ExtractLanguages(
this XCategoryResourceDto source
)
{
//
var result = new string[] { };
//
// Validate ...
if (!source.IsNullOrDefault())
{
return result;
}
//
result =
source.Titles.Locales.Select(x => x.Language)
.Union(source.Descriptions.Locales.Select(x => x.Language))
.Distinct()
.ToArray();
//
return result;
}
/// <summary>
/// Check Has Locale or not ...
/// </summary>
/// <param name="source"></param>
/// <param name="language"></param>
/// <returns></returns>
public static bool HasLocale(
this XCategoryResourceDto source,
string language
)
{
//
var result =
!language.IsNullOrEmpty() &&
!source.IsNullOrDefault() &&
source.Titles.Locales
.Any(l => l.Language
.Equals(
language,
System.StringComparison.InvariantCultureIgnoreCase));
//
return result;
}
/// <summary>
/// Get Item Translation ...
/// </summary>
/// <param name="source"></param>
/// <param name="language"></param>
/// <returns></returns>
public static XCategoryDto GetTranslate(
this XCategoryResourceDto source,
string language
)
{
//
XCategoryDto result = null;
//
var isValid = source
.HasLocale(language);
if (!isValid)
{
return result;
}
//
var titleLocale = source.Titles.Locales
.FirstOrDefault(l => l.Language
.Equals(
language,
System.StringComparison.InvariantCultureIgnoreCase));
var descriptionLocale = source.Descriptions.Locales
.FirstOrDefault(l => l.Language
.Equals(
language,
System.StringComparison.InvariantCultureIgnoreCase));
//
isValid = !titleLocale.IsNullOrDefault();
if (!isValid)
{
return result;
}
//
result = source.Item;
result.Title = titleLocale.Value;
result.Description =
descriptionLocale.IsNullOrDefault()
? string.Empty
: descriptionLocale.Value;
//
return result;
}
}
}