using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.ViewModels.Package;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Packaging;
using Umbraco.Cms.Core.Services;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Api.Management.Controllers.Package;
public class AllMigrationStatusPackageController : PackageControllerBase
{
private readonly IPackagingService _packagingService;
private readonly IUmbracoMapper _umbracoMapper;
public AllMigrationStatusPackageController(IPackagingService packagingService, IUmbracoMapper umbracoMapper)
{
_packagingService = packagingService;
_umbracoMapper = umbracoMapper;
}
///
/// Gets a paginated list of the migration status of each installed package.
///
/// The amount of items to skip.
/// The amount of items to take.
/// The paged result of the installed packages migration status.
[HttpGet("migration-status")]
[MapToApiVersion("1.0")]
[ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)]
public async Task>> AllMigrationStatuses(int skip = 0, int take = 100)
{
PagedModel migrationPlans = await _packagingService.GetInstalledPackagesFromMigrationPlansAsync(skip, take);
IEnumerable viewModels = _umbracoMapper.MapEnumerable(migrationPlans.Items);
return Ok(new PagedViewModel()
{
Total = migrationPlans.Total,
Items = viewModels,
});
}
}