using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.ExcelServices; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.WellOperations; public class WellOperationExport : ExcelExportService where TTemplate : class, ITemplateParameters, new() { private readonly IWellService wellService; private readonly IWellOperationService wellOperationService; public WellOperationExport( IWellOperationService wellOperationService, IWellService wellService) { this.wellService = wellService; this.wellOperationService = wellOperationService; } protected override async Task BuildFileNameAsync(WellOperationExportRequest options, CancellationToken token) { var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); return options.IdType switch { WellOperation.IdOperationTypeFact => $"{caption}_Фактические_операции.xlsx", WellOperation.IdOperationTypePlan => $"{caption}_Плановые_операции.xlsx", _ => throw new ArgumentOutOfRangeException(nameof(options.IdType)) }; } protected override Task> GetDtosAsync(WellOperationExportRequest options, CancellationToken token) { var request = new WellOperationRequest(new[] { options.IdWell }) { OperationType = options.IdType, }; return wellOperationService.GetAsync(request, token); } }