/// <summary> /// Returns all resource items for a given resource ID in all locales. /// Returned as full ResourceItem objects /// </summary> /// <param name="resourceId">The resource Id to return for</param> /// <param name="resourceSet">Resourceset to look in</param> /// <param name="forAllResourceSetLocales">When true returns empty entries for missing resources of locales in this resource set</param> /// <returns>List of resource items or null</returns> public virtual IEnumerable<ResourceItem> GetResourceItems(string resourceId, string resourceSet, bool forAllResourceSetLocales = false) { ErrorMessage = string.Empty; if (resourceSet == null) resourceSet = string.Empty; List<ResourceItem> items = null; using (var data = GetDb()) { using (IDataReader reader = data.ExecuteReader( "select * from " + Configuration.ResourceTableName + " where ResourceId=@ResourceId and ResourceSet=@ResourceSet " + " order by LocaleId", data.CreateParameter("@ResourceId", resourceId), data.CreateParameter("@ResourceSet", resourceSet))) { if (reader == null) { SetError(data.ErrorMessage); return null; } items = new List<ResourceItem>(); while (reader.Read()) { var item = new ResourceItem(); item.FromDataReader(reader); items.Add(item); } reader.Close(); } if (forAllResourceSetLocales) { var locales = GetAllLocalesForResourceSet(resourceSet); if (locales != null) { var usedLocales = items.Select(i => i.LocaleId); var emptyLocales = locales.Where(s => !usedLocales.Contains(s)); foreach (var locale in emptyLocales) { items.Add(new ResourceItem(){ LocaleId = locale, Value = "", ResourceSet = resourceSet }); } } } } return items; }
/// <summary> /// Returns a resource item that returns both the Value and Comment to the /// fields to the client. /// </summary> /// <param name="resourceId">The ID of the resource to retrieve</param> /// <param name="resourceSet">Name of the ResourceSet to return</param> /// <param name="cultureName">required. Null or Empty returns invariant</param> /// <returns></returns> public virtual ResourceItem GetResourceItem(string resourceId, string resourceSet, string cultureName) { ErrorMessage = string.Empty; if (cultureName == null) cultureName = string.Empty; ResourceItem item; using (var data = GetDb()) { using (IDataReader reader = data.ExecuteReader( "select * from " + Configuration.ResourceTableName + " where ResourceId=@ResourceId and ResourceSet=@ResourceSet and LocaleId=@LocaleId", data.CreateParameter("@ResourceId", resourceId), data.CreateParameter("@ResourceSet", resourceSet), data.CreateParameter("@LocaleId", cultureName))) { if (reader == null || !reader.Read()) return null; item = new ResourceItem(); item.FromDataReader(reader); reader.Close(); } } return item; }