Files
2022-02-04 17:53:35 +01:00

98 lines
3.1 KiB
C#

using Core;
using Core.DTO;
using LiMan.APi.Data;
using LiMan.DB.DTO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace LiMan.APi.Controllers
{
/// <summary>
/// Controller livello TICKET
/// </summary>
[Route("api/ticket")]
[ApiController]
public class TicketController : ControllerBase
{
#region Private Fields
/// <summary>
/// Classe per logging
/// </summary>
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Public Constructors
/// <summary>
/// Init generico
/// </summary>
/// <param name="DataService"></param>
public TicketController(ApiDataService DataService)
{
dataService = DataService;
Log.Info("Avviata classe TicketController");
}
#endregion Public Constructors
#region Protected Properties
/// <summary>
/// Dataservice x accesso DB
/// </summary>
protected ApiDataService dataService { get; set; }
#endregion Protected Properties
#region Public Methods
/// GET api/ticket/id
/// <summary>
/// Recupera elenco Ticket dato cliente / applicazione / chiave
/// </summary>
/// <param name="id">Codice cliente/Installazione</param>
/// <param name="CodApp">Codice Applicazione</param>
/// <param name="Chiave">Master Key</param>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<List<TicketDTO>> Get(string id, string CodApp, string Chiave)
{
var result = await dataService.TicketByCliente(id, CodApp, Chiave);
await dataService.recordCall(id, CodApp, $"GET:api/ticket:{Chiave}");
return result;
}
/// <summary>
/// Richiesta di registrazione ticket supporto
/// </summary>
/// <param name="CurrRequest">Obj Richiesta</param>
// POST api/ticket/sendReq
[HttpPost("sendReq")]
public async Task<TicketDTO> sendReq([FromBody] SupportRequest CurrRequest)
{
TicketDTO result = new TicketDTO();
// controllo valori
if (CurrRequest.IsValid)
{
// registro richiesta
var insRes = await dataService.TicketAdd(CurrRequest);
}
// restituisco richieste aperte
var rawResult= await dataService.TicketByCliente(CurrRequest.CodInst, CurrRequest.CodApp, CurrRequest.MasterKey, 1);
result = rawResult.FirstOrDefault();
Log.Info($"Ticket generated: {result.IdxTicket} | CI: {CurrRequest.CodInst} | CA: {CurrRequest.CodApp}");
await dataService.recordCall(CurrRequest.CodInst, CurrRequest.CodApp, $"POST:api/ticket/sendReq:{CurrRequest.MasterKey}");
return result;
}
#endregion Public Methods
}
}