using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; // // This is here so CodeMaid doesn't reorganize this document // namespace LiMan.DB.DBModels { [Table("EnrollRequest")] public partial class EnrollRequestModel { /// /// ID univoco /// [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int IdReq { get; set; } /// /// Passcode usato per autorizzare (un valore random NON DUPLICATO con quelli attivi al momento della richiesta) /// public int Passcode { get; set; } = 0; /// /// Payload richiesta, ovvero la serializzazione json di un Dict[string,string] delle info ricevute /// public string ReqPayload { get; set; } = ""; /// /// DataOra richiesta enroll /// public DateTime DtReq { get; set; } = DateTime.Now; /// /// DataOra approvazione /// public DateTime? DtAppr { get; set; } = null; /// /// Username approvatore /// public string UserAppr { get; set; } = ""; /// /// Licenza fornita in risposta alla richiesta /// public int IdxLic { get; set; } = 0; /// /// Indica Scaduta se non approvata e richiesta da oltre 15 minuti /// [NotMapped] public bool IsScaduta { get => DtAppr == null && DateTime.Now.Subtract(DtReq).TotalMinutes > minScad; } /// /// DataOra Scadenza richiesta (periodo indicato - 10 sec) /// [NotMapped] public DateTime DtScadenza { get => DtReq.AddSeconds(minScad * 60 - 10); } [NotMapped] public Dictionary DictAttrib { get { Dictionary answ = new Dictionary(); if (!string.IsNullOrEmpty(ReqPayload)) { try { answ = JsonConvert.DeserializeObject>(ReqPayload); } catch { } } return answ; } } public int DictNumKVP() { return DictAttrib.Count; } public Dictionary DictAttribShort(int numMax) { Dictionary answ = DictAttrib; if (answ.Count > numMax) { answ = answ.Take(numMax).ToDictionary(x => x.Key, x => x.Value); } return answ; } /// /// Scadenza massima (in minuti) per la richiesta /// private const int minScad = 15; } }