using DbAPI.Connections; using DbAPI.Errors; using DTS.Common.Interface.Database; using System; using System.Data; using System.Data.SqlClient; using DTS.Common.Interface.Groups.GroupList; using System.Collections.Generic; using DTS.Common.Interface.Groups; using DTS.Common.Classes.Groups; using DbAPI.Logging; using System.Diagnostics; namespace DbAPI.GroupHardware { /// /// Handles GroupHardware functions /// internal class GroupHardware : IGroupHardware { public ulong GroupHardwareInsert(IUserDbRecord user, IConnectionDetails connection, GroupHardwareDbRecord groupHardwareDbRecord, out int newId, out string errorMessageString) { newId = -1; errorMessageString = string.Empty; if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_GroupHardwareInsert"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@GroupId", SqlDbType.Int) { Value = groupHardwareDbRecord.GroupId }); cmd.Parameters.Add(new SqlParameter("@DASId", SqlDbType.Int) { Value = groupHardwareDbRecord.DASId }); var newGroupHardwareIdParam = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newGroupHardwareIdParam); 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) { if (Convert.ToInt32(errorNumber.Value) != 0) { LogManager.Log(TraceEventType.Error, LogManager.LogEvents.TestSetups, $"GroupHardwareInsert failed: {errorNumber.Value} {errorMessage.Value}"); errorMessageString = errorMessage.Value.ToString(); return Convert.ToUInt32(errorNumber.Value); } } newId = Convert.ToInt32(newGroupHardwareIdParam.Value); return ErrorCodes.ERROR_SUCCESS; } catch (Exception ex) { LogManager.Log(TraceEventType.Error, LogManager.LogEvents.TestSetups, $"GroupHardwareInsert failed: {ex.Message}"); return ErrorCodes.ERROR_UNKNOWN; } finally { cmd.Connection.Dispose(); cmd.Dispose(); } } public ulong GroupHardwareGet(IUserDbRecord user, IConnectionDetails connection, int? groupId, string serialNumber, bool? embedded, out GroupHardwareDbRecord[] groupHardwareRecords) { groupHardwareRecords = null; var list = new List(); if (!DbAPI.Connections.IsUserLoggedIn(user, connection)) { return ErrorCodes.ERROR_ACCESS_DENIED; } var ret = ConnectionManager.GetSqlCommand(connection, out var cmd, "sp_GroupHardwareGet"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@GroupId", SqlDbType.Int) { Value = groupId }); cmd.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = serialNumber }); cmd.Parameters.Add(new SqlParameter("@Embedded", SqlDbType.Bit) { Value = embedded }); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { list.Add(new GroupHardwareDbRecord(reader)); } groupHardwareRecords = list.ToArray(); } return ErrorCodes.ERROR_SUCCESS; } catch (Exception ex) { LogManager.Log(TraceEventType.Error, LogManager.LogEvents.TestSetups, $"GroupsGet failed - {ex.Message}"); return ErrorCodes.ERROR_UNKNOWN; } finally { cmd.Connection.Dispose(); } } public ulong GroupHardwareDelete(IUserDbRecord user, IConnectionDetails connection, int? groupId, int? dasId, 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_GroupHardwareDelete"); if (ret != ErrorCodes.ERROR_SUCCESS) { return ret; } var errorNumberULong = ErrorCodes.ERROR_SUCCESS; try { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@GroupId", SqlDbType.Int) { Value = groupId }); cmd.Parameters.Add(new SqlParameter("@DASId", SqlDbType.Int) { Value = dasId }); 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) { if (Convert.ToInt32(errorNumber.Value) != 0) { errorNumberULong = Convert.ToUInt64(errorNumber.Value); throw new Exception((string)errorMessage.Value); } } } catch (Exception ex) { //Concatenate any error string returned from the stored procedure call errorString = $"{ex.Message}; {errorString}"; return ErrorCodes.ERROR_UNKNOWN; } finally { cmd.Connection.Dispose(); } return errorNumberULong; } } }