public bool SelectFromDbMethod() { DbEntity result; PushNotificationsLists.ListNotificationsForSend.Clear(); try { OracleConnection conn = DBUtils.GetDBConnection(); // Создать объект Command. OracleCommand cmd = new OracleCommand(); // Сочетать Command с Connection. cmd.Connection = conn; cmd.CommandText = procedure1; try { if (conn?.State != System.Data.ConnectionState.Open) { conn.Open(); } using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { int numberOfColumns = reader.FieldCount; while (reader.Read()) { result = new DbEntity(); for (int i = 0; i < numberOfColumns; i++) { string nameOfColumn = reader.GetName(i); int indexOfFiled = reader.GetOrdinal(nameOfColumn); object fieldValue = reader.GetValue(indexOfFiled); switch (nameOfColumn) { case "MSG_ID": result.Message_id = fieldValue.ToString(); break; case "MSG_TEXT": result.Message_text = fieldValue.ToString(); break; case "PUSH_ID": result.Push_id = fieldValue.ToString(); break; case "PHONE": result.Phone = fieldValue.ToString(); break; case "SERVICE_ID": result.Service_id = fieldValue.ToString(); break; case "SERVICE_NAME": result.Service_name = fieldValue.ToString(); break; case "MSG_TTL": result.Msg_Ttl = Convert.ToInt32(fieldValue); break; default: Console.WriteLine($"Неизвестная ошибка. Поле [{nameOfColumn}] не опознано"); return(false); } } PushNotificationsLists.ListNotificationsForSend.Add(result); } } else { #if DEBUG Console.WriteLine("В БД нет новых данных для считывания"); #endif return(false); } } } catch (Exception ex) { Console.WriteLine("## ERROR: " + ex.Message); return(false); } finally { cmd.CommandText = "ROLLBACK"; if (conn?.State != System.Data.ConnectionState.Open) { conn.Open(); } cmd.ExecuteNonQuery(); if (conn.State != System.Data.ConnectionState.Closed) { conn.Close(); } conn?.Dispose(); } #if DEBUG Console.WriteLine("\n=====================\r\n============List of Android entities: ========="); foreach (var item in PushNotificationsLists .ListNotificationsForSend .Where(el => el.Service_name == "FCM")) { Console.WriteLine("================="); Console.WriteLine($"{nameof(item.Message_id)} :\t {item.Message_id}"); Console.WriteLine($"{nameof(item.Message_text)} :\t {item.Message_text}"); Console.WriteLine($"{nameof(item.Push_id)} :\t {item.Push_id}"); Console.WriteLine($"{nameof(item.Phone)} :\t {item.Phone}"); Console.WriteLine($"{nameof(item.Service_id)} :\t {item.Service_id}"); Console.WriteLine($"{nameof(item.Service_name)} :\t {item.Service_name}"); Console.WriteLine($"{nameof(item.Msg_Ttl)} :\t {item.Msg_Ttl}"); } Console.WriteLine("\n=====================\r\n============End of the List of Android ========"); Console.WriteLine("\n=====================\r\n================List of IOs entities: ========="); foreach (var item in PushNotificationsLists .ListNotificationsForSend .Where(el => el.Service_name == "APNS")) { Console.WriteLine("================="); Console.WriteLine($"{nameof(item.Message_id)} :\t {item.Message_id}"); Console.WriteLine($"{nameof(item.Message_text)} :\t {item.Message_text}"); Console.WriteLine($"{nameof(item.Push_id)} :\t {item.Push_id}"); Console.WriteLine($"{nameof(item.Phone)} :\t {item.Phone}"); Console.WriteLine($"{nameof(item.Service_id)} :\t {item.Service_id}"); Console.WriteLine($"{nameof(item.Service_name)} :\t {item.Service_name}"); Console.WriteLine($"{nameof(item.Msg_Ttl)} :\t {item.Msg_Ttl}"); } Console.WriteLine("\n=====================\r\n============End of the List of IOs ============"); Console.WriteLine($"Количество записей для отправки: {PushNotificationsLists.ListNotificationsForSend.Count}"); #endif return(PushNotificationsLists.ListNotificationsForSend.Count != 0); } catch (Exception ex) { Console.WriteLine($"Error: Exception.Message = [{ex.Message}], Exception.StackTrace = [{ex.StackTrace}]"); return(false); } }
public void SendToDb(List <InvalidPush> input) { #if DEBUG Console.WriteLine("Вошли в метод SendToDb"); #endif inAnswer = input.ToString(); OracleConnection conn = DBUtils.GetDBConnection(); #if DEBUG Console.WriteLine("Отправляем ответ ***************в БД"); #endif OracleCommand cmd = new OracleCommand(procedure, conn); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add(nameof(inAnswer), OracleDbType.Clob); cmd.Parameters.Add(new OracleParameter(nameof(outErrCode), OracleDbType.Int32)); cmd.Parameters.Add(new OracleParameter(nameof(outErrText), OracleDbType.Varchar2)); cmd.Parameters[nameof(inAnswer)].Direction = System.Data.ParameterDirection.Input; cmd.Parameters[nameof(outErrCode)].Direction = System.Data.ParameterDirection.Output; cmd.Parameters[nameof(outErrText)].Direction = System.Data.ParameterDirection.Output; cmd.Parameters[nameof(inAnswer)].Value = inAnswer; try { if (conn.State != System.Data.ConnectionState.Open) { conn.Open(); } cmd.ExecuteNonQuery(); #if DEBUG Console.WriteLine($"Процедура {procedure} извлечена успешно"); #endif inAnswer = cmd.Parameters[nameof(inAnswer)].Value.ToString(); outErrCode = Convert.ToInt32(cmd.Parameters[nameof(outErrCode)].Value?.ToString()); outErrText = cmd.Parameters[nameof(outErrText)].Value.ToString(); #if DEBUG Console.WriteLine(cmd.Parameters[nameof(inAnswer)].ParameterName + "\t:\t" + inAnswer); Console.WriteLine(cmd.Parameters[nameof(outErrCode)].ParameterName + "\t:\t" + outErrCode); Console.WriteLine(cmd.Parameters[nameof(outErrText)].ParameterName + "\t:\t" + outErrText); #endif #if !DEBUG if (outErrCode != 0) { Console.WriteLine(cmd.Parameters[nameof(outErrText)].ParameterName + "\t:\t" + outErrText); } #endif } catch (Exception ex) { Console.WriteLine("Error: " + ex); //Console.WriteLine(ex.StackTrace); } finally { if (conn.State != System.Data.ConnectionState.Closed) { conn.Close(); } conn?.Dispose(); } }
//static private ResponseEntity pushResult; public static void SendAnswer(DbEntity record, ResponseEntity pushResult) { #if DEBUG Console.WriteLine("Вошли в метод SendAnswer"); #endif //pushResult = result; inMsg_id = pushResult.MessageId; inAnswer = GetResponseXml(pushResult).ToString(); inStatus = pushResult.Exception == null ? 1 : -1; OracleConnection conn = DBUtils.GetDBConnection(); #if DEBUG Console.WriteLine("Отправляем ответ от сервера PUSH в БД"); #endif OracleCommand cmd = new OracleCommand(procedure, conn); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add(nameof(inMsg_id), OracleDbType.Varchar2); cmd.Parameters.Add(nameof(inStatus), OracleDbType.Int32); cmd.Parameters.Add(nameof(inAnswer), OracleDbType.Clob); cmd.Parameters.Add(new OracleParameter(nameof(outErrCode), OracleDbType.Int32)); cmd.Parameters.Add(new OracleParameter(nameof(outErrText), OracleDbType.Varchar2)); cmd.Parameters[nameof(inMsg_id)].Direction = System.Data.ParameterDirection.Input; cmd.Parameters[nameof(inStatus)].Direction = System.Data.ParameterDirection.Input; cmd.Parameters[nameof(inAnswer)].Direction = System.Data.ParameterDirection.Input; cmd.Parameters[nameof(outErrCode)].Direction = System.Data.ParameterDirection.Output; cmd.Parameters[nameof(outErrText)].Direction = System.Data.ParameterDirection.Output; cmd.Parameters[nameof(inMsg_id)].Value = inMsg_id; cmd.Parameters[nameof(inAnswer)].Value = inAnswer; cmd.Parameters[nameof(inStatus)].Value = inStatus; try { if (conn.State != System.Data.ConnectionState.Open) { conn.Open(); } cmd.ExecuteNonQuery(); #if DEBUG Console.WriteLine($"Процедура {procedure} извлечена успешно"); #endif inMsg_id = cmd.Parameters[nameof(inMsg_id)].Value.ToString(); inStatus = Convert.ToInt32(cmd.Parameters[nameof(inStatus)].Value?.ToString()); inAnswer = cmd.Parameters[nameof(inAnswer)].Value.ToString(); outErrCode = Convert.ToInt32(cmd.Parameters[nameof(outErrCode)].Value?.ToString()); outErrText = cmd.Parameters[nameof(outErrText)].Value.ToString(); #if DEBUG Console.WriteLine(cmd.Parameters[nameof(inMsg_id)].ParameterName + "\t:\t" + inMsg_id); Console.WriteLine(cmd.Parameters[nameof(inStatus)].ParameterName + "\t:\t" + inStatus); Console.WriteLine(cmd.Parameters[nameof(inAnswer)].ParameterName + "\t:\t" + inAnswer); Console.WriteLine(cmd.Parameters[nameof(outErrCode)].ParameterName + "\t:\t" + outErrCode); Console.WriteLine(cmd.Parameters[nameof(outErrText)].ParameterName + "\t:\t" + outErrText); #endif record.outErrCode = Convert.ToInt32(cmd.Parameters[nameof(outErrCode)].Value.ToString()); record.outErrText = cmd.Parameters[nameof(outErrText)].Value?.ToString(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); //Console.WriteLine(ex.StackTrace); } finally { if (conn.State != System.Data.ConnectionState.Closed) { conn.Close(); } conn?.Dispose(); //ErrorInfoClass.Dispose(responseEntity); //if ( ErrorInfoClass.ResponseEntities.All(en => en.Equals(responseEntity)) ) //{ // ErrorInfoClass.ResponseEntities = new System.Collections.Generic.List<ResponseEntity>(); //} } }