using FluentValidation; using Raven.Client.Documents; using Raven.Client.Documents.Linq; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using zero.Core.Entities; using zero.Core.Extensions; namespace zero.Core.Collections { public class LanguagesCollection : CollectionBase, ILanguagesCollection { public LanguagesCollection(ICollectionContext context, IValidator validator) : base(context, validator) { } /// public override IAsyncEnumerable Stream() { return base.Stream(q => q.OrderByDescending(x => x.CreatedDate)); } /// public IList GetAllCultures(params string[] codes) { return CultureInfo.GetCultures(CultureTypes.AllCultures) .Where(x => !x.Name.IsNullOrWhiteSpace()) .Select(x => new CultureInfo(x.Name)) .Where(x => codes.Length > 0 ? codes.Contains(x.Name, StringComparer.InvariantCultureIgnoreCase) : true) .OrderBy(x => x.DisplayName) .Select(x => new Culture() { Code = x.Name, Name = x.DisplayName }) .ToList(); } } public interface ILanguagesCollection : ICollectionBase { /// /// Get all available cultures /// IList GetAllCultures(params string[] codes); } }