// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using Squidex.Domain.Apps.Entities.Backup; using Squidex.Shared; using Squidex.Web; namespace Squidex.Areas.Api.Controllers.Backups.Models { public sealed class BackupJobsDto : Resource { /// /// The backups. /// [Required] public BackupJobDto[] Items { get; set; } public static BackupJobsDto FromBackups(IEnumerable backups, ApiController controller, string app) { var result = new BackupJobsDto { Items = backups.Select(x => BackupJobDto.FromBackup(x, controller, app)).ToArray() }; return CreateLinks(result, controller, app); } private static BackupJobsDto CreateLinks(BackupJobsDto result, ApiController controller, string app) { var values = new { app }; result.AddSelfLink(controller.Url(x => nameof(x.GetBackups), values)); if (controller.HasPermission(Permissions.AppBackupsCreate, app)) { result.AddPostLink("create", controller.Url(x => nameof(x.PostBackup), values)); } return result; } } }