Files
xCategoryService/Extensions/XSubCategoryResourceExtensions.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 XSubCategoryResourceDto ...
/// </summary>
public static class XSubCategoryResourceExtensions
{
/// <summary>
/// Extract Available Languages ...
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string[] ExtractLanguages(
this XSubCategoryResourceDto 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 XSubCategoryResourceDto 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 XSubCategoryDto GetTranslate(
this XSubCategoryResourceDto source,
string language
)
{
//
XSubCategoryDto 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;
}
}
}