using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.Dictionary; using Umbraco.Cms.Core; 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.Dictionary; [ApiVersion("1.0")] public class MoveDictionaryController : DictionaryControllerBase { private readonly IDictionaryItemService _dictionaryItemService; private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor; public MoveDictionaryController(IDictionaryItemService dictionaryItemService, IBackOfficeSecurityAccessor backOfficeSecurityAccessor) { _dictionaryItemService = dictionaryItemService; _backOfficeSecurityAccessor = backOfficeSecurityAccessor; } [HttpPut("{id:guid}/move")] [MapToApiVersion("1.0")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] public async Task Move(Guid id, MoveDictionaryRequestModel moveDictionaryRequestModel) { IDictionaryItem? source = await _dictionaryItemService.GetAsync(id); if (source == null) { return DictionaryItemNotFound(); } Attempt result = await _dictionaryItemService.MoveAsync( source, moveDictionaryRequestModel.Target?.Id, CurrentUserKey(_backOfficeSecurityAccessor)); return result.Success ? Ok() : DictionaryItemOperationStatusResult(result.Status); } }