158 lines
7.8 KiB
C#
158 lines
7.8 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web.Http;
|
|
using Xylem.Common.Logic.ServiceCore;
|
|
|
|
namespace Service.MeterProcessState.Controllers
|
|
{
|
|
[RoutePrefix("api/SoftwareAccess")]
|
|
public class SoftwareAccessController : ApiController
|
|
{
|
|
|
|
public static class GlobalConfig
|
|
{
|
|
public static Lazy<string> connectionString = new Lazy<string>(()
|
|
=>
|
|
System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
|
|
);
|
|
}
|
|
|
|
[Route("GetVersionIsValid"), HttpGet]
|
|
public async Task<HttpResponseMessage> GetVersionIsValid(string Program, int Major, int Minor, int Build)
|
|
{
|
|
try
|
|
{
|
|
bool grant = false;
|
|
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
|
|
{
|
|
var query = new StringBuilder();
|
|
|
|
query.AppendLine(" select SoftwareAccess_ID from versionSoftwareAccess ");
|
|
|
|
query.AppendLine($" where SoftwareAccess_Program = '{Program}'");
|
|
|
|
query.AppendLine($" and SoftwareAccess_MajorVersion = {Major} ");
|
|
query.AppendLine($" and SoftwareAccess_MinorVersion = {Minor} ");
|
|
|
|
query.AppendLine($" and (SoftwareAccess_BuildVersion = {Build} or SoftwareAccess_BuildVersion = -1 ) ");
|
|
|
|
|
|
query.AppendLine(" and SoftwareAccess_VaildTo >= CURRENT_TIMESTAMP ");
|
|
|
|
var dt = dataacces.ExecuteQuery(query.ToString());
|
|
if (dt.Rows.Count >= 1)
|
|
{
|
|
grant = true;
|
|
}
|
|
}
|
|
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { return grant; }));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex);
|
|
}
|
|
}
|
|
|
|
[Route("GetCurrentVersion"), HttpGet]
|
|
public async Task<HttpResponseMessage> GetCurrentVersion(string Program)
|
|
{
|
|
try
|
|
{
|
|
bool grant = false;
|
|
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
|
|
{
|
|
var query = new StringBuilder();
|
|
|
|
query.AppendLine(" select top (1) * from versionSoftwareAccess ");
|
|
|
|
query.AppendLine($" where SoftwareAccess_Program = '{Program}'");
|
|
|
|
query.AppendLine(" and SoftwareAccess_VaildTo >= CURRENT_TIMESTAMP order by SoftwareAccess_ID desc ");
|
|
|
|
var dt = dataacces.ExecuteQuery(query.ToString());
|
|
if (dt.Rows.Count == 1)
|
|
{
|
|
//SoftwareAccess_ID SoftwareAccess_Program SoftwareAccess_MajorVersion SoftwareAccess_MinorVersion SoftwareAccess_BuildVersion SoftwareAccess_VaildTo
|
|
//Xylem.Common.Ui.GenesisToolBox 1 5 7124 2019 - 09 - 05
|
|
var currentVersion = new Xylem.ServiceFwUpdate.Common.FwUpdateSafe.SoftwareLicense();
|
|
currentVersion.Program = dt.Rows[0]["SoftwareAccess_Program"].ToString();
|
|
currentVersion.Major = (Int32)dt.Rows[0]["SoftwareAccess_MajorVersion"];
|
|
currentVersion.Minor = (Int32)dt.Rows[0]["SoftwareAccess_MinorVersion"];
|
|
currentVersion.Build = (Int32)dt.Rows[0]["SoftwareAccess_BuildVersion"];
|
|
currentVersion.Description = dt.Rows[0]["SoftwareAccess_Desc"].ToString();
|
|
currentVersion.ValidTo = (DateTime)dt.Rows[0]["SoftwareAccess_VaildTo"];
|
|
|
|
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { return currentVersion; }));
|
|
}
|
|
}
|
|
return Request.CreateResponse(HttpStatusCode.ExpectationFailed, "");
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex);
|
|
}
|
|
}
|
|
|
|
|
|
//
|
|
[Route("SetVersionIsValid"), HttpPost]
|
|
public async Task<HttpResponseMessage> SetVersionIsValid(string Program, int Major, int Minor, int Build, DateTime ValidTo, string Description, bool ProgramNameIsUnique = true)
|
|
{
|
|
try
|
|
{
|
|
bool grant = false;
|
|
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
|
|
{
|
|
var query = new StringBuilder();
|
|
query.AppendLine(" declare @ID as int ");
|
|
query.AppendLine(" set @ID = null ");
|
|
query.AppendLine(" select top 1 @ID = SoftwareAccess_ID ");
|
|
query.AppendLine(" from versionSoftwareAccess ");
|
|
query.AppendLine($" where SoftwareAccess_Program = '{Program}' ");
|
|
if (!ProgramNameIsUnique)
|
|
{
|
|
query.AppendLine($" and SoftwareAccess_MajorVersion = {Major} ");
|
|
query.AppendLine($" and SoftwareAccess_MinorVersion = {Minor} ");
|
|
query.AppendLine($" and SoftwareAccess_BuildVersion = {Build} ");
|
|
}
|
|
query.AppendLine($" if @ID is null ");
|
|
query.AppendLine($" begin ");
|
|
query.AppendLine($" insert into versionSoftwareAccess ");
|
|
query.AppendLine($" select '{Program}', {Major},{Minor} ,{Build} ");
|
|
query.AppendLine($" ,'{ValidTo.ToString("yyyy-MM-dd HH:mm:ss")}' ");
|
|
query.AppendLine($" ,'{Description}' ");
|
|
query.AppendLine($" set @ID = @@IDENTITY ");
|
|
query.AppendLine($" end ");
|
|
query.AppendLine($" else ");
|
|
query.AppendLine($" begin ");
|
|
query.AppendLine($" UPDATE [dbo].[VersionSoftwareAccess] ");
|
|
query.AppendLine($" SET [SoftwareAccess_Program] = '{Program}' ");
|
|
query.AppendLine($" ,[SoftwareAccess_MajorVersion] = {Major} ");
|
|
query.AppendLine($" ,[SoftwareAccess_MinorVersion] = {Minor} ");
|
|
query.AppendLine($" ,[SoftwareAccess_BuildVersion] = {Build} ");
|
|
query.AppendLine($" ,[SoftwareAccess_VaildTo] = '{ValidTo.ToString("yyyy-MM-dd HH:mm:ss")}' ");
|
|
query.AppendLine($" ,[SoftwareAccess_Desc] = '{Description}' ");
|
|
query.AppendLine($" WHERE SoftwareAccess_ID = @ID ");
|
|
query.AppendLine($" end ");
|
|
query.AppendLine($" ");
|
|
query.AppendLine($" select @ID ");
|
|
|
|
var dt = dataacces.ExecuteQuery(query.ToString());
|
|
if (dt.Rows.Count >= 1)
|
|
{
|
|
grant = true;
|
|
}
|
|
}
|
|
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { return grant; }));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex);
|
|
}
|
|
}
|
|
}
|
|
} |