Files
DiunaBI/WebAPI/Controllers/DataSetsController.cs
2022-12-21 18:35:26 +01:00

96 lines
2.8 KiB
C#

using Google.Apis.Auth;
using Google.Apis.Http;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Identity.Client.Platforms.Features.DesktopOs.Kerberos;
using Microsoft.IdentityModel.Tokens;
using System.Configuration;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using WebAPI.dataParsers;
using WebAPI.Models;
namespace WebAPI.Controllers
{
[ApiController]
[Route("api/[controller]")]
[Authorize]
public class DataSetsController : Controller
{
private readonly AppDbContext db;
public DataSetsController(AppDbContext _db) { db = _db; }
[HttpGet]
public IActionResult GetAll()
{
try
{
return Ok(db.DataSets.Where(x => !x.IsDeleted).ToList());
}
catch (Exception e)
{
return BadRequest(e.ToString());
}
}
[HttpPost]
public IActionResult Save(DataSet input)
{
try
{
Request.Headers.TryGetValue("userId", out var value);
Guid currentUserId = new Guid(value);
return Ok(AddDataSet(input, currentUserId).Id);
} catch(Exception e)
{
return BadRequest(e.ToString());
}
}
[HttpPost]
[DisableRequestSizeLimit]
[Route("parseFile")]
public IActionResult ParseFile()
{
var parser = new csvParser();
return Ok(parser.parse(Request.Form.Files[0]));
}
//
private DataSet AddDataSet(DataSet input, Guid currentUserId)
{
input.Number = db.DataSets.Count() + 1;
input.CreatedById = currentUserId;
input.ModifiedById = currentUserId;
input.CreatedAt = DateTime.UtcNow;
input.ModifiedAt = DateTime.UtcNow;
db.DataSets.Add(input);
SaveDataRows(input.Id, input.DataRows, currentUserId);
db.SaveChanges();
return input;
}
private void SaveDataRows(Guid id, ICollection<Models.DataRow> dataRows, Guid currentUserId)
{
try
{
List<Guid> ids = new List<Guid>();
foreach (Models.DataRow dataRow in dataRows)
{
dataRow.CreatedById = currentUserId;
dataRow.CreatedAt = DateTime.UtcNow;
dataRow.ModifiedById = currentUserId;
dataRow.ModifiedAt = DateTime.UtcNow;
dataRow.DataSetId= id;
db.DataRows.Add(dataRow);
}
}
catch (Exception)
{
throw;
}
}
}
}