blob: c819851c6617a74c6bc7f24fb61686b1faacf591 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
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 }));
}
}
|