Files
Umbraco-CMS/src/Umbraco.Core/Services/ILanguageService.cs
Sven Geusens 26761cc04a Implemented culture based authorization for content (#15580)
* Implemented culture based authorization for content

* Implemented culture auth for create/update of documents

* Applied culture authorization to dictionary create/update

* Added an integration test to test an assumption about the ContentTypeEditingService.CreateAsync method

* Fix processing when result is already false;

* Apply suggestions from code review

Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>

* Refactor method to async + clarify and consilidate comments regarding dictionary locks

---------

Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
2024-01-22 21:08:20 +01:00

67 lines
2.6 KiB
C#

using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services.OperationStatus;
namespace Umbraco.Cms.Core.Services;
public interface ILanguageService
{
/// <summary>
/// Gets a <see cref="ILanguage" /> by its iso code
/// </summary>
/// <param name="isoCode">Iso Code of the language (ie. en-US)</param>
/// <returns>
/// <see cref="ILanguage" />
/// </returns>
Task<ILanguage?> GetAsync(string isoCode);
/// <summary>
/// Gets the default language ISO code.
/// </summary>
/// <remarks>
/// <para>This can be optimized and bypass all deep cloning.</para>
/// </remarks>
/// <returns>The default language ISO code</returns>
Task<string> GetDefaultIsoCodeAsync();
/// <summary>
/// Gets all available languages
/// </summary>
/// <returns>An enumerable list of <see cref="ILanguage" /> objects</returns>
Task<IEnumerable<ILanguage>> GetAllAsync();
/// <summary>
/// Gets all languages with the given iso codes
/// </summary>
/// <returns>An enumerable list of <see cref="ILanguage" /> objects</returns>
Task<IEnumerable<ILanguage>> GetMultipleAsync(IEnumerable<string> isoCodes);
/// <summary>
/// Updates an existing <see cref="ILanguage" /> object
/// </summary>
/// <param name="language"><see cref="ILanguage" /> to update</param>
/// <param name="userKey">Key of the user saving the language</param>
Task<Attempt<ILanguage, LanguageOperationStatus>> UpdateAsync(ILanguage language, Guid userKey);
/// <summary>
/// Creates a new <see cref="ILanguage" /> object
/// </summary>
/// <param name="language"><see cref="ILanguage" /> to create</param>
/// <param name="userKey">Key of the user creating the language</param>
Task<Attempt<ILanguage, LanguageOperationStatus>> CreateAsync(ILanguage language, Guid userKey);
/// <summary>
/// Deletes a <see cref="ILanguage" /> by removing it and its usages from the db
/// </summary>
/// <param name="isoCode">The ISO code of the <see cref="ILanguage" /> to delete</param>
/// <param name="userKey">Key of the user deleting the language</param>
Task<Attempt<ILanguage?, LanguageOperationStatus>> DeleteAsync(string isoCode, Guid userKey);
/// <summary>
/// Retrieves the isoCodes of configured languages by their Ids
/// </summary>
/// <param name="ids">The ids of the configured <see cref="ILanguage" />s</param>
/// <returns>The ISO codes of the <see cref="ILanguage" />s</returns>
Task<string[]> GetIsoCodesByIdsAsync(ICollection<int> ids);
}