using Core.DomainObjects.Documents; using DataProviders.Abstractions; using DomainResults.Common; using Microsoft.Extensions.Logging; using MongoDB.Bson.Serialization; using MongoDB.Driver; namespace DataProviders { public interface IContentDataProvider { (Content?, IDomainResult) Get(Guid siteId, string locale); } public class ContentDataProvider : DataProviderBase, IContentDataProvider { private const string _collectionName = "content"; public ContentDataProvider( ILogger> logger, IMongoClient client, IIdGenerator idGenerator, ISessionService sessionService) : base(logger, client, idGenerator, sessionService) { } public (Content?, IDomainResult) Get(Guid siteId, string locale) { var (list, result) = GetWithPredicate(x => x.SiteId == siteId && (x.Localization.Locale == null || x.Localization.Locale.ToLower() == locale.ToLower()), 0, 0, _collectionName); if (!result.IsSuccess || list == null || list.Count == 0) return (null, result); return (list.First(), result); } } }