public static void SaveDiagMessage(SqlServer sqlServer, DiagOptions o, string message, ILogger logger) { if (o <= 0 || sqlServer == null || string.IsNullOrEmpty(message)) { return; } try { using (SqlConnection conn = sqlServer.GetConnection()) { conn.Open(); using (SqlCommand cmd = sqlServer.GetSpCommand("admin.DiagMessage_Save", conn)) { cmd.AddIntParam("@Options", (int)o); cmd.AddNVarCharMaxParam("@Message", message); cmd.ExecuteNonQuery(); } } } catch (Exception ex) { if (logger != null) { logger.LogError(ex, "Ошибка при добавлении диагностического сообщения"); } } }
private async Task <bool> ConvertPayment(OperationHistoryRequest.Operation o, string paymentJson, SqlConnection conn, SqlTransaction tx) { Payment payment; Exception exception; ConvertResult result; (result, payment, exception) = await this.ConvertPayment2(o, paymentJson, conn, tx); DiagOptions options = DiagOptions.Tech; string message; if (result == ConvertResult.CantConvert) { message = "ModApi: Конвертер не найден: " + paymentJson; } else if (result == ConvertResult.NoNeedToConvert) { message = "ModApi: Платёж не подлежит обработке: " + paymentJson; } else if (result == ConvertResult.Fail) { message = "ModApi: Ошибка \"" + exception.Message + "\" при проведении платежа: " + paymentJson; } else if (result == ConvertResult.Duplicate) { message = "ModApi: Платёж уже обработан: " + paymentJson; } else { options = DiagOptions.Biz | DiagOptions.Tech; if (payment.Status == PaymentStatus.Approved) { message = "ModApi: Платёж " + payment.Id.ToString() + " ожидает подтверждения: " + paymentJson; } else { message = "ModApi: Платёж " + payment.Id.ToString() + " успешно проведён: " + paymentJson; } } Helper.SaveDiagMessage(this._sqlServer, options, message, this._logger); return(result.IsAny(ConvertResult.Success, ConvertResult.NoNeedToConvert, ConvertResult.Duplicate)); }
private async Task ProcessRequest(PaymentRequest request, SqlConnection conn) { CreatePaymentResult result; Share.Payment payment = null; Exception exception = null; using (SqlTransaction tx = conn.BeginTransaction()) { (result, payment, exception) = await this.CreatePayment(request, conn, tx); if (result == CreatePaymentResult.Success) { await CompleteRequest(request, conn, tx); } else if (result == CreatePaymentResult.Fail) { await FailedToCompleteRequest(request, conn, tx); } tx.Commit(); } DiagOptions o = DiagOptions.Tech; string message; if (result == CreatePaymentResult.Success) { o = DiagOptions.Tech | DiagOptions.Biz; message = "SbAcq: Платёж " + payment.Id.ToString() + (payment.Status == Share.PaymentStatus.Approved ? " успешно проведён" : " ожидает подтверждения") + ": " + payment.RawData; } else if (result == CreatePaymentResult.Duplicate) { message = "SbAcq: Платёж уже обработан: " + payment.RawData; } else { message = "SbAcq: Ошибка \"" + exception.Message + "\" при проведении платежа: " + payment.RawData; } Helper.SaveDiagMessage(_sqlServer, o, message, _logger); }
private async Task ProcessCsvFile(SqlConnection conn) { CsvLineReader csv = new CsvLineReader(this._fileReader); for (int i = 1; ; i++) { CsvReadRecordResult result = csv.Read(); if (result.LineResult != CsvReadLineResult.Success) { break; } if (result.Fields.Count == 12) { CreatePaymentResult cpr; Payment payment = null; Exception exception = null; using (SqlTransaction tx = conn.BeginTransaction()) { (cpr, payment, exception) = await this.ProcessPayment(result.Fields, conn, tx); tx.Commit(); } DiagOptions o = DiagOptions.Tech; string message; if (cpr == CreatePaymentResult.Success) { o = DiagOptions.Tech | DiagOptions.Biz; message = "SbReg (" + _sourceFileName + "): Платёж " + payment.Id.ToString() + (payment.Status == Share.PaymentStatus.Approved ? " успешно проведён" : " ожидает подтверждения") + ": " + payment.RawData; } else if (cpr == CreatePaymentResult.Duplicate) { message = "SbReg (" + _sourceFileName + "): Платёж уже обработан: " + payment.RawData; await this._logger.WriteLine(i, "Платёж \"" + result.Fields[3] + "; " + result.Fields[4] + "\" уже создан"); } else { message = "SbReg (" + _sourceFileName + "): Ошибка \"" + exception.Message + "\" при проведении платежа: " + payment.RawData; await this._logger.WriteLine(i, exception.ToString()); } Helper.SaveDiagMessage(_sqlServer, o, message, null); } else if (result.Fields.Count == 6) { try { await this.ProcessTotal(result.Fields); } catch (Exception ex) { await this._logger.Write("Ошибка при обработке итоговой строки: " + ex.ToString(), true); } } else { await this._logger.WriteLine(i, "Строка неопознанного формата"); } } }