forked from ddrilling/AsbCloudServer
CS2-106: Added .GetFileWebLinkAsync() in DrillingProgramController.cs
This commit is contained in:
parent
c3be8bceea
commit
e8ad17bc1d
@ -11,7 +11,7 @@ namespace AsbCloudApp.Services
|
|||||||
{
|
{
|
||||||
string RootPath { get; }
|
string RootPath { get; }
|
||||||
|
|
||||||
Task<string> GetProgramWebUrlAsync(int idFileInfo,
|
Task<string> GetProgramWebUrlAsync(int idWell,
|
||||||
CancellationToken token = default);
|
CancellationToken token = default);
|
||||||
Task<string> PublishFileToCloudAsync(string filePath, string originalName,
|
Task<string> PublishFileToCloudAsync(string filePath, string originalName,
|
||||||
CancellationToken token = default);
|
CancellationToken token = default);
|
||||||
|
@ -32,10 +32,11 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
this.googleDriveService = googleDriveService;
|
this.googleDriveService = googleDriveService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GetProgramWebUrlAsync(int idFileInfo,
|
public async Task<string> GetProgramWebUrlAsync(int idWell,
|
||||||
CancellationToken token = default)
|
CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var fileInfo = await db.Files.FirstOrDefaultAsync(f => f.Id == idFileInfo, token)
|
var fileInfo = await db.Files.FirstOrDefaultAsync(f => f.IdWell == idWell &&
|
||||||
|
f.IdCategory == 14, token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
return fileInfo?.WebStorageUrl;
|
return fileInfo?.WebStorageUrl;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudApp.Services;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -27,29 +26,44 @@ namespace AsbCloudWebApi.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idWell"> id скважины </param>
|
/// <param name="idWell"> id скважины </param>
|
||||||
/// <param name="token"> Токен отмены задачи </param>
|
/// <param name="token"> Токен отмены задачи </param>
|
||||||
/// <returns> Возвращает ссылку на файл в облаке </returns>
|
/// <returns> Возвращает файл программы бурения </returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[ProducesResponseType(typeof(string), (int)System.Net.HttpStatusCode.OK)]
|
[ProducesResponseType(typeof(FileResult), (int)System.Net.HttpStatusCode.OK)]
|
||||||
public async Task<IActionResult> GetAsync(int idWell, CancellationToken token = default)
|
public async Task<IActionResult> GetAsync(int idWell, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var fileInfo = await drillingProgramService.GetAsync(idWell, token)
|
var fileInfo = await drillingProgramService.GetAsync(idWell, token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
if (fileInfo is null)
|
if (fileInfo is null)
|
||||||
return NoContent();
|
return NoContent();
|
||||||
// Чтоб не смешивать этот временный функционал с основным публикация на гугл диск вся вынесена сюда
|
|
||||||
// и выполняется уже после всех необходимых действий по созданию файла программы бурения.
|
|
||||||
var fileWebLink = await fileService.GetProgramWebUrlAsync(fileInfo.Id);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(fileWebLink))
|
|
||||||
return Ok(fileWebLink);
|
|
||||||
|
|
||||||
var relativePath = fileService.GetUrl(fileInfo);
|
var relativePath = fileService.GetUrl(fileInfo);
|
||||||
fileWebLink = await fileService.PublishFileToCloudAsync(relativePath,
|
// Чтоб не смешивать этот временный функционал с основным публикация на гугл диск вся вынесена сюда
|
||||||
fileInfo.Name, token);
|
// и выполняется уже после всех необходимых действий по созданию файла программы бурения.
|
||||||
await fileService.SaveWeblinkToFileInfo(fileInfo.Id, fileWebLink, token);
|
var fileWebLink = await fileService.GetProgramWebUrlAsync(idWell, token);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(fileWebLink))
|
||||||
|
{
|
||||||
|
fileWebLink = await fileService.PublishFileToCloudAsync(relativePath,
|
||||||
|
fileInfo.Name, token);
|
||||||
|
await fileService.SaveWeblinkToFileInfo(fileInfo.Id, fileWebLink, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PhysicalFile(Path.GetFullPath(relativePath), "application/octet-stream", fileInfo.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Возвращает ссылку на файл программы бурения в облаке
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="idWell"> id скважины </param>
|
||||||
|
/// <param name="token"> Токен отмены задачи </param>
|
||||||
|
/// <returns> Возвращает ссылку на файл программы бурения в облаке </returns>
|
||||||
|
[HttpGet("webUrl")]
|
||||||
|
[ProducesResponseType(typeof(string), (int)System.Net.HttpStatusCode.OK)]
|
||||||
|
public async Task<IActionResult> GetFileWebLinkAsync(int idWell, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
var fileWebLink = await fileService.GetProgramWebUrlAsync(idWell, token);
|
||||||
|
|
||||||
return Ok(fileWebLink);
|
return Ok(fileWebLink);
|
||||||
//return PhysicalFile(Path.GetFullPath(relativePath), "application/octet-stream", fileInfo.Name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user