init
This commit is contained in:
@@ -0,0 +1,275 @@
|
||||
using DbAPI.Connections;
|
||||
using DbAPI.Errors;
|
||||
using DbAPI.Logging;
|
||||
using DTS.Common.Classes.TestSetups;
|
||||
using DTS.Common.Interface.Database;
|
||||
using DTS.Common.Interface.Graphs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace DbAPI.TestSetups
|
||||
{
|
||||
/// <summary>
|
||||
/// Handles graph functions
|
||||
/// <inheritdoc cref="IGraphs"/>
|
||||
/// </summary>
|
||||
internal class Graphs : IGraphs
|
||||
{
|
||||
/// <summary>
|
||||
/// removes a record from the db
|
||||
/// </summary>
|
||||
/// <param name="user">user removing record</param>
|
||||
/// <param name="connection">connection record is being removed on</param>
|
||||
/// <param name="graphId">database id of record being removed</param>
|
||||
/// <returns>0 (ERROR_SUCCESS) on success, all other values are error codes</returns>
|
||||
public ulong GraphsDelete(IUserDbRecord user, IConnectionDetails connection, int graphId)
|
||||
{
|
||||
if (!DbAPI.Connections.IsUserLoggedIn(user, connection))
|
||||
{
|
||||
return ErrorCodes.ERROR_ACCESS_DENIED;
|
||||
}
|
||||
var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestGraphsDelete");
|
||||
if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; }
|
||||
try
|
||||
{
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.Parameters.Add(new SqlParameter("@TestSetupId", SqlDbType.Int) { Value = null });
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphId", SqlDbType.Int) { Value = graphId });
|
||||
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
cmd.Parameters.Add(errorNumber);
|
||||
|
||||
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
cmd.Parameters.Add(errorMessage);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
if (null != errorNumber.Value && 0 != Convert.ToInt32(errorNumber.Value))
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsDelete error: {errorNumber.Value} - {errorMessage.Value}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsInsert exception {ex.Message}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
finally
|
||||
{
|
||||
cmd.Connection.Dispose();
|
||||
}
|
||||
return ErrorCodes.ERROR_SUCCESS;
|
||||
}
|
||||
/// <summary>
|
||||
/// inserts a record into the db, updates GraphId of record after insert with database id
|
||||
/// </summary>
|
||||
/// <param name="user">user inserting record</param>
|
||||
/// <param name="connection">connection record is being inserted on</param>
|
||||
/// <param name="record">record being inserted</param>
|
||||
/// <returns>0 (ERROR_SUCCESS) on success, all other values are error codes</returns>
|
||||
public ulong GraphsInsert(IUserDbRecord user, IConnectionDetails connection, ref IGraphRecord record)
|
||||
{
|
||||
if (!DbAPI.Connections.IsUserLoggedIn(user, connection))
|
||||
{
|
||||
return ErrorCodes.ERROR_ACCESS_DENIED;
|
||||
}
|
||||
var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestGraphsInsert");
|
||||
if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; }
|
||||
if (null == record)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsUpdate no record supplied to update");
|
||||
cmd.Connection.Dispose();
|
||||
return ErrorCodes.ERROR_MISSING_PARAMETER;
|
||||
}
|
||||
try
|
||||
{
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.Parameters.Add(new SqlParameter("@TestSetupId", SqlDbType.Int) { Value = record.TestSetupId });
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphName", SqlDbType.NVarChar, 50)
|
||||
{ Value = record.GraphName });
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphDescription", SqlDbType.NVarChar, 50)
|
||||
{ Value = record.GraphDescription });
|
||||
|
||||
cmd.Parameters.Add(new SqlParameter("@Channels", SqlDbType.NVarChar, 2048) { Value = record.ChannelsString });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseDomainMin", SqlDbType.Bit) { Value = record.UseDomainMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@DomainMin", SqlDbType.Float) { Value = record.DomainMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseDomainMax", SqlDbType.Bit) { Value = record.UseDomainMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@DomainMax", SqlDbType.Float) { Value = record.DomainMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseRangeMin", SqlDbType.Bit) { Value = record.UseRangeMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@RangeMin", SqlDbType.Float) { Value = record.RangeMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseRangeMax", SqlDbType.Bit) { Value = record.UseRangeMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@RangeMax", SqlDbType.Float) { Value = record.RangeMax });
|
||||
cmd.Parameters.Add(
|
||||
new SqlParameter("@Thresholds", SqlDbType.NVarChar, 2048) { Value = record.ThresholdsString });
|
||||
cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = record.LocalOnly });
|
||||
|
||||
var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output };
|
||||
cmd.Parameters.Add(newId);
|
||||
|
||||
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
|
||||
cmd.Parameters.Add(errorNumber);
|
||||
|
||||
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
cmd.Parameters.Add(errorMessage);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
if (null != errorNumber.Value && 0 != Convert.ToInt32(errorNumber.Value))
|
||||
{
|
||||
throw new Exception((string)errorMessage.Value);
|
||||
}
|
||||
|
||||
record.GraphId = Convert.ToInt32(newId.Value);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsInsert exception {ex.Message}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
finally
|
||||
{
|
||||
cmd.Connection.Dispose();
|
||||
}
|
||||
return ErrorCodes.ERROR_SUCCESS;
|
||||
}
|
||||
/// <summary>
|
||||
/// updates a record in the database
|
||||
/// </summary>
|
||||
/// <param name="user">user updating record</param>
|
||||
/// <param name="connection">connection record is being updated on</param>
|
||||
/// <param name="record">record to update</param>
|
||||
/// <returns>0 (ERROR_SUCCESS) on success, all other values are error codes</returns>
|
||||
public ulong GraphsUpdate(IUserDbRecord user, IConnectionDetails connection, IGraphRecord record)
|
||||
{
|
||||
if (!DbAPI.Connections.IsUserLoggedIn(user, connection))
|
||||
{
|
||||
return ErrorCodes.ERROR_ACCESS_DENIED;
|
||||
}
|
||||
var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestGraphsUpdate");
|
||||
if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; }
|
||||
try
|
||||
{
|
||||
if (null == record)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsUpdate no record supplied to update");
|
||||
return ErrorCodes.ERROR_MISSING_PARAMETER;
|
||||
}
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphId", SqlDbType.Int) { Value = record.GraphId });
|
||||
cmd.Parameters.Add(new SqlParameter("@TestSetupId", SqlDbType.Int) { Value = record.TestSetupId });
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphName", SqlDbType.NVarChar, 50)
|
||||
{ Value = record.GraphName });
|
||||
cmd.Parameters.Add(new SqlParameter("@GraphDescription", SqlDbType.NVarChar, 50)
|
||||
{ Value = record.GraphDescription });
|
||||
cmd.Parameters.Add(new SqlParameter("@Channels", SqlDbType.NVarChar, 2048) { Value = record.ChannelsString });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseDomainMin", SqlDbType.Bit) { Value = record.UseDomainMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@DomainMin", SqlDbType.Float) { Value = record.DomainMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseDomainMax", SqlDbType.Bit) { Value = record.UseDomainMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@DomainMax", SqlDbType.Float) { Value = record.DomainMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseRangeMin", SqlDbType.Bit) { Value = record.UseRangeMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@RangeMin", SqlDbType.Float) { Value = record.RangeMin });
|
||||
cmd.Parameters.Add(new SqlParameter("@UseRangeMax", SqlDbType.Bit) { Value = record.UseRangeMax });
|
||||
cmd.Parameters.Add(new SqlParameter("@RangeMax", SqlDbType.Float) { Value = record.RangeMax });
|
||||
cmd.Parameters.Add(
|
||||
new SqlParameter("@Thresholds", SqlDbType.NVarChar, 2048) { Value = record.ThresholdsString });
|
||||
cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = record.LocalOnly });
|
||||
|
||||
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
|
||||
cmd.Parameters.Add(errorNumber);
|
||||
|
||||
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
||||
{ Direction = ParameterDirection.Output };
|
||||
cmd.Parameters.Add(errorMessage);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
if (null != errorNumber.Value && 0 != Convert.ToInt32(errorNumber.Value))
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsUpdate exception {errorNumber.Value} - {errorMessage.Value}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"GraphsUpdate exception {ex.Message}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
finally
|
||||
{
|
||||
cmd.Connection.Dispose();
|
||||
}
|
||||
return ErrorCodes.ERROR_SUCCESS;
|
||||
}
|
||||
/// <summary>
|
||||
/// retrieves all graph records matching search criteria
|
||||
/// </summary>
|
||||
/// <param name="user">user making query</param>
|
||||
/// <param name="connection">connection query is being made on</param>
|
||||
/// <param name="graphId">graph to query for (can be null)</param>
|
||||
/// <param name="testSetupId">test setup graph belongs to</param>
|
||||
/// <param name="records">all matching records found</param>
|
||||
/// <returns>0 (ERROR_SUCCESS) on success, all other values are error codes</returns>
|
||||
public ulong GraphsGet(IUserDbRecord user, IConnectionDetails connection,
|
||||
int? graphId,
|
||||
int? testSetupId,
|
||||
out IGraphRecord[] records)
|
||||
{
|
||||
records = new IGraphRecord[0];
|
||||
if (!DbAPI.Connections.IsUserLoggedIn(user, connection))
|
||||
{
|
||||
return ErrorCodes.ERROR_ACCESS_DENIED;
|
||||
}
|
||||
var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestGraphsGet");
|
||||
if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; }
|
||||
try
|
||||
{
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
|
||||
if (null == graphId)
|
||||
{
|
||||
cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int) { Value = null });
|
||||
}
|
||||
else { cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int) { Value = (int)graphId }); }
|
||||
|
||||
if (null == testSetupId)
|
||||
{
|
||||
cmd.Parameters.Add(new SqlParameter("@TestSetupId", SqlDbType.Int) { Value = null });
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Parameters.Add(new SqlParameter("@TestSetupId", SqlDbType.Int) { Value = (int)testSetupId });
|
||||
}
|
||||
|
||||
var reader = cmd.ExecuteReader();
|
||||
var list = new List<IGraphRecord>();
|
||||
while (reader.Read())
|
||||
{
|
||||
var graph = new GraphRecord(reader);
|
||||
list.Add(graph);
|
||||
}
|
||||
records = list.ToArray();
|
||||
|
||||
return ErrorCodes.ERROR_SUCCESS;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Log(TraceEventType.Error, LogManager.LogEvents.Graphs, $"sp_GraphsGet failed: {ex.Message}");
|
||||
return ErrorCodes.ERROR_UNKNOWN;
|
||||
}
|
||||
finally
|
||||
{
|
||||
cmd.Connection.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user