From 9ebf44f9d5cd92dcc9f06500e7d1149f3ce6a437 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 11 Jun 2020 21:28:36 +0000 Subject: [PATCH] --- Controllers/RvfController.cs | 10 +++++----- Controllers/RvrController.cs | 28 ++++++++++++++++------------ Models/TrialRequest.cs | 16 +++++++++++++++- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/Controllers/RvfController.cs b/Controllers/RvfController.cs index e520fb0..1c9da9a 100644 --- a/Controllers/RvfController.cs +++ b/Controllers/RvfController.cs @@ -22,7 +22,7 @@ namespace rockfishCore.Controllers [HttpGet("{dbid}")] public async Task Get([FromRoute] Guid dbid) - { + { if (!ModelState.IsValid) { return BadRequest(ModelState); @@ -40,10 +40,10 @@ namespace rockfishCore.Controllers } 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(); + //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(); } diff --git a/Controllers/RvrController.cs b/Controllers/RvrController.cs index 1a9e50b..627fcbc 100644 --- a/Controllers/RvrController.cs +++ b/Controllers/RvrController.cs @@ -45,26 +45,30 @@ namespace rockfishCore.Controllers if (r.DbId == Guid.Empty) { - return BadRequest("DBId invalid"); + return BadRequest("E1000 - DBId invalid"); } //can't do this if there is a purchased license with this dbid already if (await ct.License.Where(z => z.DbId == r.DbId).AnyAsync()) { - return BadRequest("E1000 - Can't trial; there is already a purchased license issued for this database ID"); + return BadRequest("E1000 - Can't trial; there is already a purchased license issued for this database Id"); } -//if there is an active trial then can't do this -var MustBeOlderThan=DateUtil.DateToEpoch(DateTime.Now.AddDays(-45)) -if (await ct.TrialRequest.Where(z => z.DbId == r.DbId && z.DtProcessed != null && z.DtProcessed < MustBeOlderThan).AnyAsync()) -{ + System.Diagnostics.Debug.WriteLine("RvRController:Post - TODO: Test MustBeOlderThan date code"); + + //if there is an active trial for this db then can't do this they must request we re-release it or completely zap the database instead + var MustBeOlderThan = DateUtil.DateToEpoch(DateTime.Now.AddDays(-45)); + if (await ct.TrialRequest.Where(z => z.DbId == r.DbId && z.DtProcessed != null && z.DtProcessed > MustBeOlderThan).AnyAsync()) + { + return BadRequest("E1000 - Can't trial; there is already an active trial license issued for this database Id"); + } + + //Everything seems to be in order, save the request and return ok + var NewRequest=new TrialRequest(); + NewRequest.Email=r.Email; + + - // //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(); -} //TODO: closer to release as ROCKFISH might change before then diff --git a/Models/TrialRequest.cs b/Models/TrialRequest.cs index 4e27d45..44af014 100644 --- a/Models/TrialRequest.cs +++ b/Models/TrialRequest.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using rockfishCore.Util; namespace rockfishCore.Models @@ -11,8 +12,21 @@ namespace rockfishCore.Models "dtprocessed integer, status integer default 0 not null, rejectreason text, key text, dtfetched integer" + ")"); */ + + public partial class TrialRequest { + public enum TrialRequestStatus{ + NotSet=0, + Approved=1, + Rejected=2 + } + public TrialRequest() + { + DtRequested=DateUtil.NowAsEpoch(); + EmailValidated=false; + Status=TrialRequestStatus.NotSet; + } public long Id { get; set; } public Guid DbId { get; set; } public string CompanyName { get; set; } @@ -22,7 +36,7 @@ namespace rockfishCore.Models public bool EmailValidated { get; set; } public long? DtRequested { get; set; } public long? DtProcessed { get; set; } - public int Status { get; set; } + public TrialRequestStatus Status { get; set; }// status enum 0=notset, 1=approved, 2=rejected public string RejectReason { get; set; } public string Key { get; set; } public long? DtFetched { get; set; }