using DbAPI.Connections; using DbAPI.Errors; using DbAPI.Logging; using DbAPI.LabratoryDetails; using DTS.Common.Interface.Database; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using DTS.Common.Interface.TestMetaData; using DTS.Common.Classes.TestEngineerDetails; namespace DbAPI.TestEngineerDetails { /// /// Handles Test Engineer functions /// internal class TestEngineerDetails : ITestEngineerDetails { public ulong TestEngineerDetailsInsert(IUserDbRecord user, IConnectionDetails connection, TestEngineerDetailsDbRecord testEngineerDetailsDbRecord, out int newId, out string errorString) { errorString = string.Empty; newId = -1; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestEngineerDetailsInsert"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var errorNumberULong = ErrorCodes.ERROR_SUCCESS; try { cmd.CommandType = CommandType.StoredProcedure; #region params cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@TestEngineerName", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerName }); cmd.Parameters.Add(new SqlParameter("@TestEngineerPhone", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerPhone }); cmd.Parameters.Add(new SqlParameter("@TestEngineerFax", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerFax }); cmd.Parameters.Add(new SqlParameter("@TestEngineerEmail", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerEmail }); cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = testEngineerDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = testEngineerDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = testEngineerDetailsDbRecord.LastModifiedBy }); cmd.Parameters.Add(new SqlParameter("@Version", SqlDbType.Int) { Value = 1 }); var newIdParam = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newIdParam); var errorNumberParam = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessageParam); #endregion params cmd.ExecuteNonQuery(); if ((int)errorNumberParam.Value != 0) { errorNumberULong = (ulong)errorNumberParam.Value; } else { newId = (int)newIdParam.Value; } } finally { cmd.Connection.Dispose(); } return errorNumberULong; } public ulong TestEngineerDetailsUpdate(IUserDbRecord user, IConnectionDetails connection, TestEngineerDetailsDbRecord testEngineerDetailsDbRecord, out string errorString) { errorString = string.Empty; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestEngineerDetailsUpdate"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var errorNumberULong = ErrorCodes.ERROR_SUCCESS; try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@TestEngineerName", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerName }); cmd.Parameters.Add(new SqlParameter("@TestEngineerPhone", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerPhone }); cmd.Parameters.Add(new SqlParameter("@TestEngineerFax", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerFax }); cmd.Parameters.Add(new SqlParameter("@TestEngineerEmail", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerEmail }); //cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = testEngineerDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = testEngineerDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = testEngineerDetailsDbRecord.LastModifiedBy }); cmd.Parameters.Add(new SqlParameter("@Version", SqlDbType.Int) { Value = 1 }); var errorNumberParam = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessageParam); cmd.ExecuteNonQuery(); if ((int)errorNumberParam.Value != 0) { errorNumberULong = (ulong)errorNumberParam.Value; } } catch (Exception ex) { //Concatenate any error string returned from the stored procedure call errorString = $"{ex.Message}; {errorString}"; return errorNumberULong; } finally { cmd.Connection.Dispose(); } return errorNumberULong; } public ulong TestEngineerDetailsUpdateInsert(IUserDbRecord user, IConnectionDetails connection, TestEngineerDetailsDbRecord testEngineerDetailsDbRecord, out string errorString) { errorString = string.Empty; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestEngineerDetailsUpdateInsert"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var errorNumberULong = ErrorCodes.ERROR_SUCCESS; try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@TestEngineerName", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerName }); cmd.Parameters.Add(new SqlParameter("@TestEngineerPhone", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerPhone }); cmd.Parameters.Add(new SqlParameter("@TestEngineerFax", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerFax }); cmd.Parameters.Add(new SqlParameter("@TestEngineerEmail", SqlDbType.NVarChar, 255) { Value = testEngineerDetailsDbRecord.TestEngineerEmail }); cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = testEngineerDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = testEngineerDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = testEngineerDetailsDbRecord.LastModifiedBy }); cmd.Parameters.Add(new SqlParameter("@Version", SqlDbType.Int) { Value = 1 }); var newIdParam = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newIdParam); var errorNumberParam = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessageParam); cmd.ExecuteNonQuery(); if ((int)errorNumberParam.Value != 0) { errorNumberULong = (ulong)errorNumberParam.Value; } } catch (Exception ex) { //Concatenate any error string returned from the stored procedure call errorString = $"{ex.Message}; {errorString}"; return errorNumberULong; } finally { cmd.Connection.Dispose(); } return errorNumberULong; } public ulong TestEngineerDetailsGet(IUserDbRecord user, IConnectionDetails connection, string name, out ITestEngineerDetailsDbRecord[] testEngineerDetailsDbRecords) { testEngineerDetailsDbRecords = null; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestEngineerDetailsGet"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var list = new List(); try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar) { Value = name }); var reader = cmd.ExecuteReader(); while (reader.Read()) { try { var cd = new TestEngineerDetailsDbRecord(reader); if (!cd.IsInvalidBlank()) { list.Add(cd); } } catch (Exception ex) { LogManager.Log(TraceEventType.Error, LogManager.LogEvents.DataRecorders, ex.Message); return ErrorCodes.ERROR_UNKNOWN; } } return ErrorCodes.ERROR_SUCCESS; } catch (Exception ex) { LogManager.Log(TraceEventType.Error, LogManager.LogEvents.DataRecorders, ex.Message); return ErrorCodes.ERROR_UNKNOWN; } finally { cmd.Connection.Dispose(); testEngineerDetailsDbRecords = list.ToArray(); } } public ulong TestEngineerDetailsDelete(IUserDbRecord user, IConnectionDetails connection, string name, out string errorString) { errorString = string.Empty; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_TestEngineerDetailsDelete"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var errorNumberULong = ErrorCodes.ERROR_SUCCESS; try { try { cmd.CommandType = CommandType.StoredProcedure; #region params if (string.IsNullOrEmpty(name)) { cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255) { Value = DBNull.Value }); } else { cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255) { Value = name }); } //cmd.Parameters.Add(new SqlParameter("@TestEngineerName", SqlDbType.NVarChar, 255) { Value = string.IsNullOrEmpty(name) ? null : name }); var errorNumberParam = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessageParam); #endregion params cmd.ExecuteNonQuery(); if ((int)errorNumberParam.Value != 0) { errorNumberULong = (ulong)errorNumberParam.Value; errorString = (string)errorMessageParam.Value; } } finally { cmd.Connection.Dispose(); } } catch (Exception ex) { //Concatenate any error string returned from the stored procedure call errorString = $"{ex.Message}; {errorString}"; return errorNumberULong; } finally { cmd.Connection.Dispose(); } return errorNumberULong; } } }