From 0b9e93e338749132bd2134fa7193240be2e371bc Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 11 Jun 2020 19:52:47 +0000 Subject: [PATCH] --- Controllers/RvfController.cs | 75 ++++++++++++++++++++++++++++++++---- Models/License.cs | 1 + Models/TrialRequest.cs | 2 +- 3 files changed, 70 insertions(+), 8 deletions(-) diff --git a/Controllers/RvfController.cs b/Controllers/RvfController.cs index ee98c41..5d11284 100644 --- a/Controllers/RvfController.cs +++ b/Controllers/RvfController.cs @@ -11,34 +11,94 @@ using rockfishCore.Util; namespace rockfishCore.Controllers { - [Produces("text/plain")] + [Produces("application/json")] [Route("rvf")] - public class RvfController : Controller //RAVEN License fetch route { - private readonly rockfishContext _context; + private readonly rockfishContext ct; public RvfController(rockfishContext context) { - _context = context; + ct = context; } [HttpGet("{dbid}")] - public ActionResult Get([FromRoute] Guid dbid) + public async Task Get([FromRoute] Guid dbid) { + //this is called after a successful check says there is a key below so it's not hammered (in theory) if (!ModelState.IsValid) { return BadRequest(ModelState); } + string LicenseKey = null; + //check for a key for this dbid, first check licensed then check trial + var PurchasedLicense = await ct.License.Where(z => z.DbId == dbid && z.Fetched == false).FirstOrDefaultAsync(); + if (PurchasedLicense != null) + { + LicenseKey = PurchasedLicense.Key; + PurchasedLicense.Fetched = true; + PurchasedLicense.DtFetched = DateUtil.NowAsEpoch(); + await ct.SaveChangesAsync(); + } + else + { + //is it a trial request + var TrialRequest = await ct.TrialRequest.Where(z => z.DbId == dbid && z.DtFetched == null).FirstOrDefaultAsync(); + LicenseKey = TrialRequest.Key; + TrialRequest.DtFetched = DateUtil.NowAsEpoch(); + await ct.SaveChangesAsync(); + } + + if (LicenseKey == null) + { + return NotFound(); + } + + return Ok(new + { + data = new + { + key = LicenseKey + } + }); + + // + // //This is to simulate the scenarios where there is no license to return + // //either due to no current account / canceled or simply no license exists + // //Changes here must be reflected in RAVEN Util.License.Fetch block + // bool bTestStatusOtherThanOk = false; + // if (bTestStatusOtherThanOk) + // { + // return Json(new {Status="NONE", Reason="No license"}); + // //return Json(new {Status="Canceled", Reason="Non payment"}); + // } + // else + // { + // return Ok(RavenKeyFactory.GetRavenTestKey(dbid)); + // } + } + + + [HttpGet("hello/{dbid}")] + public ActionResult Hello([FromRoute] Guid dbid) + { + //check to see if there is anything of note for this server like a new key or a message etc + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + //return a json object with results if anything to report + //This is to simulate the scenarios where there is no license to return //either due to no current account / canceled or simply no license exists //Changes here must be reflected in RAVEN Util.License.Fetch block bool bTestStatusOtherThanOk = false; if (bTestStatusOtherThanOk) { - return Json(new {Status="NONE", Reason="No license"}); + return Json(new { Status = "NONE", Reason = "No license" }); //return Json(new {Status="Canceled", Reason="Non payment"}); } else @@ -52,9 +112,10 @@ namespace rockfishCore.Controllers + private bool LicenseExists(long id) { - return _context.License.Any(e => e.Id == id); + return ct.License.Any(e => e.Id == id); } } } \ No newline at end of file diff --git a/Models/License.cs b/Models/License.cs index d294370..a17f0ae 100644 --- a/Models/License.cs +++ b/Models/License.cs @@ -16,6 +16,7 @@ namespace rockfishCore.Models public string FetchFrom { get; set; } public long? DtFetched { get; set; } public bool Fetched { get; set; } + public Guid DbId { get; set; } } } diff --git a/Models/TrialRequest.cs b/Models/TrialRequest.cs index 31986bf..4e27d45 100644 --- a/Models/TrialRequest.cs +++ b/Models/TrialRequest.cs @@ -14,7 +14,7 @@ namespace rockfishCore.Models public partial class TrialRequest { public long Id { get; set; } - public string DbId { get; set; } + public Guid DbId { get; set; } public string CompanyName { get; set; } public string ContactName { get; set; } public string Notes { get; set; }