-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Expand file tree
/
Copy pathByKeyMediaCollectionController.cs
More file actions
89 lines (81 loc) · 3.56 KB
/
Copy pathByKeyMediaCollectionController.cs
File metadata and controls
89 lines (81 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using Asp.Versioning;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Api.Management.Services.Signs;
using Umbraco.Cms.Api.Management.ViewModels.Media.Collection;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Security;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.OperationStatus;
namespace Umbraco.Cms.Api.Management.Controllers.Media.Collection;
[ApiVersion("1.0")]
public class ByKeyMediaCollectionController : MediaCollectionControllerBase
{
private readonly IMediaListViewService _mediaListViewService;
private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor;
private readonly IMediaCollectionPresentationFactory _mediaCollectionPresentationFactory;
[ActivatorUtilitiesConstructor]
public ByKeyMediaCollectionController(
IMediaListViewService mediaListViewService,
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
IUmbracoMapper mapper,
IMediaCollectionPresentationFactory mediaCollectionPresentationFactory,
SignProviderCollection signProviders)
: base(mapper, signProviders)
{
_mediaListViewService = mediaListViewService;
_backOfficeSecurityAccessor = backOfficeSecurityAccessor;
_mediaCollectionPresentationFactory = mediaCollectionPresentationFactory;
}
[Obsolete("Please use the constructor with all parameters. Scheduled to be removed in Umbraco 18")]
public ByKeyMediaCollectionController(
IMediaListViewService mediaListViewService,
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
IUmbracoMapper mapper,
IMediaCollectionPresentationFactory mediaCollectionPresentationFactory)
: this(
mediaListViewService,
backOfficeSecurityAccessor,
mapper,
mediaCollectionPresentationFactory,
StaticServiceProvider.Instance.GetRequiredService<SignProviderCollection>())
{
}
[HttpGet]
[MapToApiVersion("1.0")]
[ProducesResponseType(typeof(PagedViewModel<MediaCollectionResponseModel>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
public async Task<IActionResult> ByKey(
CancellationToken cancellationToken,
Guid? id,
Guid? dataTypeId = null,
string orderBy = "updateDate",
Direction orderDirection = Direction.Ascending,
string? filter = null,
int skip = 0,
int take = 100)
{
Attempt<ListViewPagedModel<IMedia>?, ContentCollectionOperationStatus> collectionAttempt = await _mediaListViewService.GetListViewItemsByKeyAsync(
CurrentUser(_backOfficeSecurityAccessor),
id,
dataTypeId,
orderBy,
orderDirection,
filter,
skip,
take);
if (collectionAttempt.Success is false)
{
return CollectionOperationStatusResult(collectionAttempt.Status);
}
List<MediaCollectionResponseModel> collectionResponseModels = await _mediaCollectionPresentationFactory.CreateCollectionModelAsync(collectionAttempt.Result!);
return CollectionResult(collectionResponseModels, collectionAttempt.Result!.Items.Total);
}
}