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 _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(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 })); } }