1
0

57 lines
1.2 KiB
C#

using Microsoft.AspNetCore.Mvc;
using RhSolutions.SkuParser.Models;
using RhSolutions.SkuParser.Abstractions;
namespace RhSolutions.SkuParser.Controllers;
[ApiController]
[Route("/api/[controller]")]
public class ParseController : ControllerBase
{
private IServiceProvider _provider;
private Dictionary<Product, double> _result;
public ParseController(IServiceProvider provider)
{
_provider = provider;
_result = new();
}
[HttpPost]
public IActionResult PostFiles([FromQuery] bool bs = false)
{
IFormFileCollection files = Request.Form.Files;
try
{
foreach (var file in files)
{
ISkuParser parser = bs ? _provider.GetRequiredKeyedService<ISkuParser>("BS")
: _provider.GetRequiredKeyedService<ISkuParser>(file.ContentType);
var dict = parser.ParseProducts(file);
foreach (var kvp in dict)
{
if (_result.ContainsKey(kvp.Key))
{
_result[kvp.Key] += kvp.Value;
}
else
{
_result.Add(kvp.Key, kvp.Value);
}
}
}
}
catch (Exception ex)
{
return BadRequest(error: $"{ex.Message}\n\n{ex.Source}\n{ex.StackTrace}");
}
return new JsonResult(_result.Select(x => new
{
x.Key.Sku,
x.Key.ProductLine,
x.Key.Name,
x.Key.Price,
quantity = x.Value
}));
}
}