printer-api/Controllers/PrinterController.cs
2022-02-19 14:06:07 +01:00

68 lines
1.4 KiB
C#

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<PrinterController> logger, PrinterService printer)
{
_printer = printer;
_logger = logger;
}
[Route("name")]
[HttpGet]
public ActionResult<string> GetName()
{
return _printer.GetName();
}
[Route("status")]
[HttpGet]
public ActionResult<PrinterStatusEventArgs> GetStatus()
{
return _printer.GetStatus();
}
[Route("print")]
[HttpPost]
public ActionResult Print([FromBody] JsonElement[] body)
{
var instructions = new List<BaseInstruction>();
foreach (var instruction in body)
{
BaseInstruction? parsedInstruction = null;
switch (instruction.GetProperty("type").GetString())
{
case "text":
parsedInstruction = instruction.Deserialize<TextInstruction>();
break;
case "barcode":
parsedInstruction = instruction.Deserialize<BarcodeInstruction>();
break;
case "feed":
parsedInstruction = instruction.Deserialize<FeedInstruction>();
break;
default:
return BadRequest();
}
if (parsedInstruction == null)
{
return BadRequest();
}
instructions.Add(parsedInstruction);
}
_printer.Print(instructions);
return Ok();
}
}