private static void WriteMessages(decimal slCost) { DateTime calcDate = DateTime.Now.Date.AddSeconds(-1); string clientsPath = Path.Combine(_settings.Report.Path, $"01_client_transport_{calcDate.ToString("ddMMyyyy_HHmmss")}.xml"); string walletsPath = Path.Combine(_settings.Report.Path, $"02_wallet_transport_{calcDate.ToString("ddMMyyyy_HHmmss")}.xml"); string opHistPath = Path.Combine(_settings.Report.Path, $"03_ophist_transport_{calcDate.ToString("ddMMyyyy_HHmmss")}.xml"); WriteLog( $"Вызываем расчет сообщений на дату {calcDate.ToString("dd.MM.yyyy HH:mm:ss")}. Проезд по серии SL стоит: {slCost}"); OracleTransaction tran = _connection.BeginTransaction(); try { OracleParameter pDate = new OracleParameter() { ParameterName = "pDate", OracleDbType = OracleDbType.Date, Value = calcDate }; DatabaseUtils.CallProcedure(_connection, "pkg$xftp_messages.createmessages", new OracleParameter[] { pDate, new OracleParameter() { ParameterName = "pSLTravelCost", OracleDbType = OracleDbType.Decimal, Value = slCost } }); OracleParameter pXml = new OracleParameter() { ParameterName = "pXml", OracleDbType = OracleDbType.Clob, Direction = ParameterDirection.Output }; DatabaseUtils.CallProcedure(_connection, "pkg$xftp_messages.getClients", new OracleParameter[] { pDate, pXml }); WriteXml(clientsPath, pXml.Value); DatabaseUtils.CallProcedure(_connection, "pkg$xftp_messages.getWallets", new OracleParameter[] { pDate, pXml }); WriteXml(walletsPath, pXml.Value); DatabaseUtils.CallProcedure(_connection, "pkg$xftp_messages.getOperationHistory", new OracleParameter[] { pDate, pXml }); WriteXml(opHistPath, pXml.Value); WriteFtp(_settings.Ftp.Path, _settings.Ftp.Login, _settings.Ftp.Password, clientsPath); WriteFtp(_settings.Ftp.Path, _settings.Ftp.Login, _settings.Ftp.Password, walletsPath); WriteFtp(_settings.Ftp.Path, _settings.Ftp.Login, _settings.Ftp.Password, opHistPath); tran.Commit(); } catch (Exception e) { tran.Rollback(); throw new Exception($"При формировании сообщения произошла ошибка:\r\n{e.Message}"); } }