2025-01-15 15:06:04 +03:00
|
|
|
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
|
|
|
|
}));
|
|
|
|
}
|
2024-07-21 16:25:59 +03:00
|
|
|
}
|