using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using rockfishCore.Models; using rockfishCore.Util; namespace rockfishCore.Controllers { [Produces("application/json")] [Route("rvf")] public class RvfController : Controller //RAVEN License fetch route { private readonly rockfishContext ct; public RvfController(rockfishContext context) { ct = context; } [HttpGet("{dbid}")] public async Task Get([FromRoute] Guid dbid) { 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 there a valid trial request var req = await ct.TrialRequest.Where(z => z.DbId == dbid && z.DtFetched == null && z.Status == TrialRequest.TrialRequestStatus.Approved).FirstOrDefaultAsync(); LicenseKey = req.Key; req.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="Canceled", Reason="Non payment"}); // } // else // { // return Ok(RavenKeyFactory.GetRavenTestKey(dbid)); // } // } private bool LicenseExists(long id) { return ct.License.Any(e => e.Id == id); } } }