/// <summary> Called to save a pdu into the database </summary> /// <param name="dataTransaction"></param> /// <param name="logKey"></param> /// <param name="smscServiceId"></param> /// <param name="pduDirectionType"></param> /// <param name="commandLength"></param> /// <param name="commandSet"></param> /// <param name="commandStatus"></param> /// <param name="sequenceNumber"></param> /// <param name="details"></param> /// <param name="pduDataBlocks"></param> /// <returns> long </returns> public static Guid? Insert(DataTransaction dataTransaction, string logKey, int smscServiceId, PduDirectionTypes pduDirectionType, long commandLength, CommandSet commandSet, CommandStatus commandStatus, long sequenceNumber, List<PduPropertyDetail> details, List<byte[]> pduDataBlocks) { Guid? pduHeaderId = null; // Prepare the database call using (DbCommand dbCommand = dataTransaction.GetStoredProcCommand("spSMPP_Pdu_Insert")) { // Prepare the call dataTransaction.AddInParameterString(dbCommand, "LogKey", logKey); dataTransaction.AddInParameterInteger(dbCommand, "SMSCServiceID", smscServiceId); dataTransaction.AddInParameterShort(dbCommand, "Direction", (short) pduDirectionType); dataTransaction.AddInParameterLong(dbCommand, "CommandLength", commandLength); dataTransaction.AddInParameterString(dbCommand, "CommandId", commandSet.ToString()); dataTransaction.AddInParameterString(dbCommand, "CommandStatusId", commandStatus.ToString()); dataTransaction.AddInParameterLong(dbCommand, "SequenceNumber", sequenceNumber); dataTransaction.AddInParameterTable(dbCommand, "PduPropertyDetails", new PduPropertyDetails(details)); dataTransaction.AddInParameterTable(dbCommand, "PduDataBlocks", new SMSCPduDataBlocks(pduDataBlocks)); dataTransaction.AddOutParameterGuid(dbCommand, "PduHeaderId"); dataTransaction.ExecuteNonQuery(dbCommand); pduHeaderId = dataTransaction.GetParameterValueGuid(dbCommand, "PduHeaderId"); } return pduHeaderId; }
/// <summary> Called to save a pdu by its property details </summary> /// <param name="logKey"></param> /// <param name="connection"></param> /// <param name="smscServiceId"></param> /// <param name="pduDirectionType"></param> /// <param name="details"></param> /// <param name="pduDataBlocks"></param> /// <param name="pduHeaderId"></param> /// <returns> ResultCodeTypes </returns> public static int InsertPdu(string logKey, string connection, int smscServiceId, PduDirectionTypes pduDirectionType, List<PduPropertyDetail> details, List<byte[]> pduDataBlocks, out Guid? pduHeaderId) { Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Started : LogKey[{0}] SMSCServiceId[{1}] PduDirectionType[{2}] DataBlocks[{3}]", logKey, smscServiceId, pduDirectionType, pduDataBlocks.Count); int resultType = 0; pduHeaderId = null; try { // Capture header fields long commandLength = (long) details[0].ValueUInt; CommandSet commandSet = CommandSet.Unknown; Enum.TryParse<CommandSet>(details[1].ValueUInt.ToString(), out commandSet); CommandStatus commandStatus = CommandStatus.Unknown; Enum.TryParse<CommandStatus>(details[2].ValueUInt.ToString(), out commandStatus); long sequenceNumber = (long) details[3].ValueUInt; if (connection != null) { // Capture a database connection using (DataTransaction dataTransaction = new DataTransaction(connection)) { // Insert the header pduHeaderId = PduData.Insert(dataTransaction, logKey, smscServiceId, pduDirectionType, commandLength, commandSet, commandStatus, sequenceNumber, details, pduDataBlocks); } } // Write header Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[0].StartingBytePosition, details[0].Name, BitConverter.ToString(details[0].DataBlock).Replace("-", " "), commandLength); Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[1].StartingBytePosition, details[1].Name, BitConverter.ToString(details[1].DataBlock).Replace("-", " "), commandSet); Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[2].StartingBytePosition, details[2].Name, BitConverter.ToString(details[2].DataBlock).Replace("-", " "), commandStatus); Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[3].StartingBytePosition, details[3].Name, BitConverter.ToString(details[3].DataBlock).Replace("-", " "), sequenceNumber); // Write the details for (int detail = 4; detail < details.Count; ++detail) { string dataBlock = null; if (details[detail].DataBlock != null) { dataBlock = BitConverter.ToString(details[detail].DataBlock).Replace("-", " "); } string dataValue = null; switch (details[detail].PduDataType) { case PduDataTypes.Byte: dataValue = details[detail].ValueByte.ToString(); break; case PduDataTypes.CString: case PduDataTypes.EncodedString: if (details[detail].ValueString != null) { dataValue = details[detail].ValueString; } break; case PduDataTypes.UInt: dataValue = details[detail].ValueUInt.ToString(); break; case PduDataTypes.UShort: dataValue = details[detail].ValueUShort.ToString(); break; case PduDataTypes.ByteArray: dataValue = BitConverter.ToString(details[detail].DataBlock).Replace("-", " "); break; } Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : PDU : {0} : {1} : {2} : {3}", details[detail].StartingBytePosition, details[detail].Name, dataBlock, dataValue); } } catch (Exception exception) { resultType = 900000; Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : ERROR : {0}", exception.ToString()); } Console.WriteLine("ArdanStudios.Common.SmppClient.App.PduApp : InsertPdu : Completed : ResultType[{0}]", resultType); return resultType; }