using System.ComponentModel; using System.Text.Json; using ESCPOS_NET; using Microsoft.AspNetCore.Mvc; [ApiController] [Route("/api/printer")] public class PrinterController : Controller { private readonly PrinterService _printer; private readonly ILogger _logger; public PrinterController(ILogger logger, PrinterService printer) { _printer = printer; _logger = logger; } [Route("name")] [HttpGet] public ActionResult GetName() { return _printer.GetName(); } [Route("status")] [HttpGet] public ActionResult GetStatus() { return _printer.GetStatus(); } [Route("print")] [HttpPost] public ActionResult Print([FromBody] JsonElement[] body) { var instructions = new List(); foreach (var instruction in body) { BaseInstruction? parsedInstruction = null; switch (instruction.GetProperty("type").GetString()) { case "text": parsedInstruction = instruction.Deserialize(); break; case "barcode": parsedInstruction = instruction.Deserialize(); break; case "feed": parsedInstruction = instruction.Deserialize(); break; case "barcode2d": parsedInstruction = instruction.Deserialize(); break; default: return BadRequest(); } if (parsedInstruction == null) { return BadRequest(); } instructions.Add(parsedInstruction); } _printer.Print(instructions); return Ok(); } }