Files
monorepo/LCU.API.Internal.OnlineLoanApp/CRIF.ACTion/Configuration/ConfigurationRequestResponseParser.cs
T
2026-03-11 11:18:25 -05:00

79 lines
3.0 KiB
C#

using System.Xml.Linq;
using Serilog;
using CRIF.ACTion.Common;
using CRIF.ACTion.Common.Parsers;
namespace CRIF.ACTion.Configuration
{
public class ConfigurationRequestResponseParser : IResponseParser<SortedList<int, string>>
{
private const string _channelsPath = "/actionAPI/getChannels/msg:maintExportResponse/msg:maintenanceEntities/maint:parties/common:channel/common:channelClassifications/common:channelClassification/common:channelClassificationItem";
public ConfigurationRequestResponseParser()
{
}
public SortedList<int, string> Parse(XElement xElement)
{
SortedList<int, string> mappingList = [];
try
{
var namespaceManager = CrifNamespaces.GetNamespaceManager(xElement);
IEnumerable<XElement> channelNodeList = xElement.XElementXPathSelectElements(_channelsPath, namespaceManager);
foreach (XElement channelNode in channelNodeList)
{
try
{
string nodeAttributeValue = StandardizedStringValue(channelNode.Attribute(CrifNamespaces.Common + "name").Value);
if (ChannelIsActive(nodeAttributeValue))
{
string partyIdString = channelNode.Parent.Parent.Parent.Attribute(CrifNamespaces.Common + "partyID").Value;
string name = channelNode.Parent.Parent.Parent.Attribute(CrifNamespaces.Common + "name").Value;
_ = int.TryParse(partyIdString, out int partyId);
mappingList.Add(partyId, name);
}
}
catch (Exception ex)
{
Log.Error("Error trying to parse CRIF BranchName Configuration Response", ex.Message, ex.StackTrace);
}
}
}
catch (Exception ex)
{
Log.Error("Error trying to parse CRIF BranchName Configuration Response", ex.Message, ex.StackTrace);
}
return mappingList;
}
private static bool ChannelIsActive(string nodeAttributeValue)
{
bool channelIsActive = false;
if (!string.IsNullOrWhiteSpace(nodeAttributeValue))
{
channelIsActive =
(
nodeAttributeValue.Equals("BRANCH") ||
nodeAttributeValue.Equals("INTERNET") ||
nodeAttributeValue.Equals("ON-LINE")
);
}
return channelIsActive;
}
private static string StandardizedStringValue(string InputString)
{
string standardizedString = "";
if (!string.IsNullOrWhiteSpace(InputString))
{
standardizedString = InputString.Trim().ToUpper();
}
return standardizedString;
}
}
}