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.LabratoryDetails; namespace DbAPI.LabratoryDetails { /// /// Handles Labratory Details functions /// internal class LabratoryDetails : ILabratoryDetails { public ulong LabratoryDetailsInsert(IUserDbRecord user, IConnectionDetails connection, LabratoryDetailsDbRecord labratoryDetailsDbRecord, 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_LabratoryDetailsInsert"); 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 = labratoryDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@LabratoryName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactPhone", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactPhone }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactFax", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactFax }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactEmail", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactEmail }); cmd.Parameters.Add(new SqlParameter("@LabratoryTestRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryTestRefNumber }); cmd.Parameters.Add(new SqlParameter("@LabratoryProjectRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryProjectRefNumber }); cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = labratoryDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = labratoryDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = labratoryDetailsDbRecord.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 LabratoryDetailsUpdate(IUserDbRecord user, IConnectionDetails connection, LabratoryDetailsDbRecord labratoryDetailsDbRecord, 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_LabratoryDetailsUpdate"); 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 = labratoryDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@LabratoryName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactPhone", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactPhone }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactFax", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactFax }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactEmail", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactEmail }); cmd.Parameters.Add(new SqlParameter("@LabratoryTestRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryTestRefNumber }); cmd.Parameters.Add(new SqlParameter("@LabratoryProjectRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryProjectRefNumber }); cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = labratoryDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = labratoryDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = labratoryDetailsDbRecord.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 LabratoryDetailsUpdateInsert(IUserDbRecord user, IConnectionDetails connection, LabratoryDetailsDbRecord labratoryDetailsDbRecord, 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_LabratoryDetailsUpdateInsert"); 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 = labratoryDetailsDbRecord.Name }); cmd.Parameters.Add(new SqlParameter("@LabratoryName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactName", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactName }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactPhone", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactPhone }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactFax", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactFax }); cmd.Parameters.Add(new SqlParameter("@LabratoryContactEmail", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryContactEmail }); cmd.Parameters.Add(new SqlParameter("@LabratoryTestRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryTestRefNumber }); cmd.Parameters.Add(new SqlParameter("@LabratoryProjectRefNumber", SqlDbType.NVarChar, 255) { Value = labratoryDetailsDbRecord.LabratoryProjectRefNumber }); cmd.Parameters.Add(new SqlParameter("@LocalOnly", SqlDbType.Bit) { Value = labratoryDetailsDbRecord.LocalOnly }); cmd.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = labratoryDetailsDbRecord.LastModified }); cmd.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar, 50) { Value = labratoryDetailsDbRecord.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 LabratoryDetailsGet(IUserDbRecord user, IConnectionDetails connection, string name, out ILabratoryDetailsDbRecord[] labratoryDetailsDbRecords) { labratoryDetailsDbRecords = null; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_LabratoryDetailsGet"); 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 LabratoryDetailsDbRecord(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(); labratoryDetailsDbRecords = list.ToArray(); } } public ulong LabratoryDetailsDelete(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_LabratoryDetailsDelete"); 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("@LabratoryName", SqlDbType.NVarChar, 255) { Value = DBNull.Value }); } else { cmd.Parameters.Add(new SqlParameter("@LabratoryName", SqlDbType.NVarChar, 255) { Value = name }); } //cmd.Parameters.Add(new SqlParameter("@LabratoryName", SqlDbType.NVarChar, 255) { Value = string.IsNullOrEmpty(name) ? DBNull.Value : 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; } } }