LogsController

This commit is contained in:
Michał Zieliński
2023-08-29 14:55:31 +02:00
parent 333de3c02a
commit 97fbfcb220
7 changed files with 204 additions and 37 deletions

View File

@@ -1,4 +1,3 @@
using System.Linq;
using Google.Apis.Sheets.v4;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -17,6 +16,7 @@ namespace WebAPI.Controllers
private readonly AppDbContext db;
private SpreadsheetsResource.ValuesResource googleSheetValues;
private GoogleDriveHelper googleDriveHelper;
private GoogleSheetsHelper googleSheetsHelper;
private readonly IConfiguration configuration;
public LayersController(
AppDbContext _db,
@@ -26,6 +26,7 @@ namespace WebAPI.Controllers
{
db = _db;
googleSheetValues = _googleSheetsHelper.Service.Spreadsheets.Values;
googleSheetsHelper = _googleSheetsHelper;
googleDriveHelper = _googleDriveHelper;
configuration = _configuration;
}
@@ -34,18 +35,18 @@ namespace WebAPI.Controllers
public IActionResult GetAll(int start, int limit, [FromQuery] string[] codes)
{
try
{
if (codes != null && codes.Length > 0)
{
return Ok(db.Layers.Where(x => !x.IsDeleted)
.Where(x => codes.Select(Int32.Parse).ToList().Contains(x.Number))
.OrderByDescending(x => x.Number)
.Skip(start).Take(limit).ToList());
} else
{
return Ok(db.Layers.Where(x => !x.IsDeleted)
.OrderByDescending(x => x.Number)
.Skip(start).Take(limit).ToList());
{
if (codes != null && codes.Length > 0)
{
return Ok(db.Layers.Where(x => !x.IsDeleted)
.Where(x => codes.Select(Int32.Parse).ToList().Contains(x.Number))
.OrderByDescending(x => x.Number)
.Skip(start).Take(limit).ToList());
} else
{
return Ok(db.Layers.Where(x => !x.IsDeleted)
.OrderByDescending(x => x.Number)
.Skip(start).Take(limit).ToList());
}
}
catch (Exception e)
@@ -121,29 +122,39 @@ namespace WebAPI.Controllers
}
[HttpGet]
[Route("autoImport/{apiKey}")]
[Route("AutoImport/{apiKey}")]
[AllowAnonymous]
public IActionResult autoImport(string apiKey)
public IActionResult AutoImport(string apiKey)
{
if (Request.Host.Value != "localhost:5400" || apiKey != configuration["apiKey"])
{
return Unauthorized();
}
string sheetId = "1G_Hu8DTP-PSPNXTaVYhc_ppnTQi6HWoA4oXSSdUmM9E";
string sheetName = "KOSZTY";
Layer layer = new Layer();
layer.Source = "GoogleSheet";
layer.Number = db.Layers.Count() + 1;
var parser = new googleSheetParser(googleSheetValues);
dynamic parsedSheet = parser.parse(sheetId);
layer.Records = parsedSheet.records;
layer.Name = $"W{layer.Number}-I-{sheetName}-{parsedSheet.date}-{DateTime.Now.ToString("yyyyMMddHHmm")}";
AddLayer(layer, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"));
List<Layer> layersToImport;
try {
layersToImport = db.Layers
.Where(x => x.Records!.Any(x => x.Code == "StartDate" && DateTime.Parse(x.Desc1!) > DateTime.UtcNow))
.Where(x => x.Records!.Any(x => x.Code == "EndDate" && DateTime.Parse(x.Desc1!) < DateTime.UtcNow))
.ToList();
} catch (Exception e) {
LogEntry entry = new LogEntry
{
Title = "Import error",
Type = LogEntryType.error,
Message = e.ToString(),
CreatedAt = DateTime.UtcNow
};
LogsController logsController = new LogsController(googleSheetsHelper, googleDriveHelper, configuration);
logsController.AddEntry(entry);
return BadRequest(e.ToString());
}
return Ok(layersToImport);
}
return Ok("OK");
}
[HttpGet]
[Route("autoImportMorska/{apiKey}")]
[AllowAnonymous]
@@ -153,23 +164,23 @@ namespace WebAPI.Controllers
{
return Unauthorized();
}
morskaK5Parser parser = new morskaK5Parser(googleSheetValues, db);
Layer layer = parser.parse();
morskaK5Parser parser = new morskaK5Parser(googleSheetValues, db);
Layer layer = parser.parse();
AddLayer(layer, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"));
return Ok("OK");
}
}
[HttpGet]
[Route("checkDates")]
public IActionResult checkDates()
public IActionResult checkDates()
{
var warsawTZ = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
DateTime date = DateTime.UtcNow;
return Ok(date);
var warsawTZ = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
DateTime date = DateTime.UtcNow;
return Ok(date);
}
//

View File

@@ -0,0 +1,56 @@
using System.Globalization;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebAPI.Models;
namespace WebAPI.Controllers
{
public class LogsController : Controller
{
private SpreadsheetsResource.ValuesResource googleSheetValues;
private GoogleDriveHelper googleDriveHelper;
private readonly IConfiguration configuration;
public LogsController(
GoogleSheetsHelper _googleSheetsHelper,
GoogleDriveHelper _googleDriveHelper,
IConfiguration _configuration)
{
googleSheetValues = _googleSheetsHelper.Service.Spreadsheets.Values;
googleDriveHelper = _googleDriveHelper;
configuration = _configuration;
}
public void AddEntry(LogEntry entry)
{
String type;
switch (entry.LogType) {
case LogType.import:
type = "Import";
break;
default:
type = "Other"; // should never happen
break;
}
var response = googleSheetValues.Get(configuration["appLogsFile"], $"{type}!A:A").Execute();
var data = response.Values;
int row = data.Count + 1;
var range = $"{type}!A{row}:D{row}";
List<object> logRow = new List<object>
{
entry.CreatedAt.ToString(new CultureInfo("pl-PL")),
entry.Type.ToString(),
entry.Title!,
entry.Message!
};
ValueRange valueRange = new ValueRange() { Values = new IList<object>[] { logRow }};
var updateRequest = googleSheetValues.Update(valueRange, configuration["appLogsFile"], range);
updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
updateRequest.Execute();
}
}
}