Files
Umbraco-CMS/src/Umbraco.Cms.Api.Management/Factories/DocumentViewModelFactory.cs
Kenn Jacobsen 2eebd0558c Document and document type read API (#13853)
* Basic structure for document and document type read API

* Handle unpublished, non-variant content

* Expose content type key on ContentTypeSort

* Add the remaining properties to document type (minus list view info, still pending)

* Obsolete more ILocalizationService usage

* Add URLs and template data to document view model

* Clean up + add proprety type appearance

* update submodule commit

* front-end commit

* latest front-end commit

* latest commit

* latest front-end commit

* Rename content property to content value in view model layer

* Add contextual JSON serialization as default JSON serializer

* Add FIXME to content type sort + rearrange constructor parameters

* Fix broken remark tag

* Whitelist breakage for ContentTypeSort

* Add variance info to property type output

* Update src/Umbraco.Cms.Api.Management/Controllers/Document/ByKeyDocumentController.cs

Co-authored-by: Bjarke Berg <mail@bergmania.dk>

* Update src/Umbraco.Cms.Api.Management/Controllers/DocumentType/ByKeyDocumentTypeController.cs

Co-authored-by: Bjarke Berg <mail@bergmania.dk>

* Update src/Umbraco.Cms.Api.Management/Factories/ContentUrlFactory.cs

Co-authored-by: Bjarke Berg <mail@bergmania.dk>

* Add a few FIXME comments about async entity retrieval

---------

Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2023-02-21 13:40:41 +01:00

37 lines
1.1 KiB
C#

using Umbraco.Cms.Api.Management.ViewModels.Document;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
namespace Umbraco.Cms.Api.Management.Factories;
public class DocumentViewModelFactory : IDocumentViewModelFactory
{
private readonly IUmbracoMapper _umbracoMapper;
private readonly IContentUrlFactory _contentUrlFactory;
private readonly IFileService _fileService;
public DocumentViewModelFactory(
IUmbracoMapper umbracoMapper,
IContentUrlFactory contentUrlFactory,
IFileService fileService)
{
_umbracoMapper = umbracoMapper;
_contentUrlFactory = contentUrlFactory;
_fileService = fileService;
}
public async Task<DocumentViewModel> CreateViewModelAsync(IContent content)
{
DocumentViewModel viewModel = _umbracoMapper.Map<DocumentViewModel>(content)!;
viewModel.Urls = await _contentUrlFactory.GetUrlsAsync(content);
viewModel.TemplateKey = content.TemplateId.HasValue
? _fileService.GetTemplate(content.TemplateId.Value)?.Key
: null;
return viewModel;
}
}