kreta/Kreta.Job.Tasks/OtpBankszamlaIgenylesJob.cs
2024-03-13 00:33:46 +01:00

74 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Security.Cryptography;
using Kreta.Core.Configuratiaton;
using Kreta.Core.Logic;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.Job.Tasks.Core;
namespace Kreta.Job.Tasks
{
public class OtpBankszamlaIgenylesJob : BankszamlaIgenylesJob, IOtpBankszamlaIgenylesJob
{
private readonly string OTP_IN = "\\OTP_IN\\";
private readonly string OTP_ERROR = "\\OTP_ERROR\\";
private readonly string OTP_OK = "\\OTP_OK\\";
private readonly string OTP_ARCHIVE = "\\OTP_ARCHIVE\\";
public void OtpBankszamlaIgenyles()
{
RunBankszamlaIgenylesJob<OtpBankszamlaIgenylesConfiguration>();
}
protected override string GetArchivePart()
{
return OTP_ARCHIVE;
}
protected override string GetErrorPart()
{
return OTP_ERROR;
}
protected override string GetInPart()
{
return OTP_IN;
}
protected override string GetOkPart()
{
return OTP_OK;
}
protected override bool HasRowWithError(List<BankszamlaIgenylesPco> bankszamlaIgenylesPcos)
{
// NOTE: OTP esetén csak akkor kell küldeni email-t, ha van hibás sor a feldolgozott állományban.
return bankszamlaIgenylesPcos.Any(x => x.IsError);
}
protected override string DecryptEgyediAzonosito(string receivedEgyediAzonosito)
{
// NOTE: az OTP a titkosított tokent küldi vissza az egyedi azonosítóban, ezért azt decrypt-álni kell
var configuration = (OtpBankszamlaIgenylesConfiguration)ConfigurationManager.GetSection(nameof(OtpBankszamlaIgenylesConfiguration));
if (string.IsNullOrWhiteSpace(receivedEgyediAzonosito))
{
return "";
}
try
{
return UrlLogic.JweDecrypt(configuration.PrivateKeyFileName, configuration.PrivateKeyFilePassword, receivedEgyediAzonosito);
}
catch (CryptographicException ex)
{
return "-";
}
catch (ArgumentOutOfRangeException aorex)
{
return "-";
}
}
}
}