1
0

48 lines
1.1 KiB
C#

using Microsoft.AspNetCore.Mvc;
using RhSolutions.SkuParser.Models;
using RhSolutions.SkuParser.Abstractions;
namespace RhSolutions.SkuParser.Controllers;
[ApiController]
[Route("/api/[controller]")]
public class CommonParseController : ControllerBase
{
private IServiceProvider _provider;
private Dictionary<Product, double> _result;
public CommonParseController(IServiceProvider provider)
{
_provider = provider;
_result = new();
}
[HttpPost]
public IActionResult PostFiles()
{
IFormFileCollection files = Request.Form.Files;
try
{
foreach (var file in files)
{
ISkuParser parser = _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.Value }));
}
}