Adding
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
**/*.bat
|
||||
**/*.log
|
||||
**/*.md
|
||||
**/*.yml
|
||||
**/.dockerignore
|
||||
**/.editorconfig
|
||||
**/.git
|
||||
**/.gitattributes
|
||||
**/.gitignore
|
||||
**/.vs
|
||||
**/.vscode
|
||||
**/bin
|
||||
**/dist
|
||||
**/dockerfile
|
||||
**/node_modules
|
||||
**/obj
|
||||
**/package-lock.json
|
||||
@@ -0,0 +1,362 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
@@ -0,0 +1,45 @@
|
||||
FROM mono:6.12 AS build
|
||||
WORKDIR /src
|
||||
|
||||
ARG PAT=bh2lq3jibktw67b2wdbqyfln7cd3je6lk52kijntpj43v6kimpgq
|
||||
|
||||
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org/debian-security|archive.debian.org/debian-security|g; s|deb.debian.org/debian-security|archive.debian.org/debian-security|g' /etc/apt/sources.list && \
|
||||
apt-get update && apt-get install -y --no-install-recommends ca-certificates curl mono-complete && \
|
||||
update-ca-certificates && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Bring in full source
|
||||
COPY . .
|
||||
|
||||
# Preconfigure Azure Artifacts feed credentials (PAT passed from pipeline)
|
||||
RUN nuget sources Add -Name "LCU-Internal" -Source "https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json" -Username "build" -Password "${PAT}" -StorePasswordInClearText
|
||||
|
||||
# Restore using the solution (now present after full copy)
|
||||
RUN nuget restore LCU.API.Internal.CoreSoapApiWrapper/LCU.API.Internal.CoreSoapApiWrapper.sln -NonInteractive
|
||||
|
||||
# Build a minimal site layout for xsp4 (/out contains Web.config + Global.asax + bin/)
|
||||
RUN mkdir -p /out/bin && \
|
||||
msbuild LCU.API.Internal.CoreSoapApiWrapper/LCU.API.Internal.CoreSoapApiWrapper.csproj /p:Configuration=Release /p:Platform=AnyCPU /p:OutputPath=/out/bin && \
|
||||
cp -a LCU.API.Internal.CoreSoapApiWrapper/Web.config LCU.API.Internal.CoreSoapApiWrapper/Global.asax /out/
|
||||
|
||||
FROM mono:6.12
|
||||
WORKDIR /app
|
||||
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org/debian-security|archive.debian.org/debian-security|g; s|deb.debian.org/debian-security|archive.debian.org/debian-security|g' /etc/apt/sources.list && \
|
||||
apt-get update && apt-get install -y --no-install-recommends \
|
||||
mono-xsp4 ca-certificates mono-utils && \
|
||||
update-ca-certificates && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=build /out/ .
|
||||
|
||||
ENV PEM_PATH=/etc/ssl/lcu-internal-ca-bundle.pem
|
||||
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["/bin/sh","-lc", "\
|
||||
if [ -f \"$PEM_PATH\" ]; then \
|
||||
cp \"$PEM_PATH\" /usr/local/share/ca-certificates/lcu-internal-ca-bundle.crt && \
|
||||
update-ca-certificates && \
|
||||
cert-sync /etc/ssl/certs/ca-certificates.crt || true; \
|
||||
fi; \
|
||||
exec xsp4 --port 8080 --nonstop --address 0.0.0.0 --applications '/:.' \
|
||||
"]
|
||||
@@ -0,0 +1,17 @@
|
||||
FROM soap
|
||||
|
||||
# Install OS CA tooling + mono cert sync tool (Debian/Ubuntu-based images)
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates mono-utils \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Add your internal CA chain as a trusted CA bundle
|
||||
COPY local-config/LandmarkRootCA.crt /usr/local/share/ca-certificates/LandmarkRootCA.crt
|
||||
COPY local-config/LandmarkIssuingCA1.crt /usr/local/share/ca-certificates/LandmarkIssuingCA1.crt
|
||||
|
||||
# Update OS trust + sync into Mono trust
|
||||
RUN update-ca-certificates \
|
||||
&& cert-sync /etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
# (Optional) Point SSL_CERT_FILE at the system bundle Mono is most likely to use
|
||||
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
using Swashbuckle.Swagger;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http.Description;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.App_Start
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds ApiKey + Client headers to every operation and (when available)
|
||||
/// marks them as security requirements so Swagger UI shows Authorize boxes.
|
||||
/// </summary>
|
||||
public class AssignSecurityRequirements : IOperationFilter
|
||||
{
|
||||
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
|
||||
{
|
||||
bool hasSecurityAttribute =
|
||||
apiDescription.ActionDescriptor
|
||||
.GetCustomAttributes<ApiKeyAuthorizeAttribute>().Any()
|
||||
|| apiDescription.ActionDescriptor.ControllerDescriptor
|
||||
.GetCustomAttributes<ApiKeyAuthorizeAttribute>().Any();
|
||||
|
||||
if (!hasSecurityAttribute)
|
||||
return;
|
||||
|
||||
// ensure parameter list
|
||||
operation.parameters = operation.parameters ?? new List<Parameter>();
|
||||
|
||||
// avoid duplicates if multiple filters run
|
||||
bool HasParam(string name) =>
|
||||
operation.parameters.Any(p => p.name == name && p.@in == "header");
|
||||
|
||||
if (!HasParam("ApiKey"))
|
||||
{
|
||||
operation.parameters.Add(new Parameter
|
||||
{
|
||||
name = "ApiKey",
|
||||
@in = "header",
|
||||
type = "string",
|
||||
required = false
|
||||
});
|
||||
}
|
||||
|
||||
if (!HasParam("Client"))
|
||||
{
|
||||
operation.parameters.Add(new Parameter
|
||||
{
|
||||
name = "Client",
|
||||
@in = "header",
|
||||
type = "string",
|
||||
required = false
|
||||
});
|
||||
}
|
||||
|
||||
// On newer swashbuckle-core builds, Operation has 'security'.
|
||||
// If your package doesn't, just delete this block.
|
||||
try
|
||||
{
|
||||
operation.security = operation.security ?? new List<IDictionary<string, IEnumerable<string>>>();
|
||||
if (!operation.security.Any(s => s.ContainsKey("ApiKey")))
|
||||
operation.security.Add(new Dictionary<string, IEnumerable<string>> { ["ApiKey"] = new string[0] });
|
||||
|
||||
if (!operation.security.Any(s => s.ContainsKey("Client")))
|
||||
operation.security.Add(new Dictionary<string, IEnumerable<string>> { ["Client"] = new string[0] });
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Older versions may not expose 'security' on Operation – safe to ignore.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper
|
||||
{
|
||||
public class FilterConfig
|
||||
{
|
||||
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
|
||||
{
|
||||
filters.Add(new HandleErrorAttribute());
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.App_Start
|
||||
{
|
||||
public class IocBootstrapper
|
||||
{
|
||||
public static void Run()
|
||||
{
|
||||
IocConfig.Initialize(GlobalConfiguration.Configuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
using Autofac;
|
||||
using Autofac.Integration.WebApi;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using Serilog;
|
||||
using Serilog.Events;
|
||||
using SerilogWeb.Classic.Enrichers;
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.App_Start
|
||||
{
|
||||
public class IocConfig
|
||||
{
|
||||
public static IContainer Container;
|
||||
|
||||
public static void Initialize(HttpConfiguration config)
|
||||
{
|
||||
Initialize(config, RegisterServices(new ContainerBuilder()));
|
||||
}
|
||||
|
||||
public static void Initialize(HttpConfiguration config, IContainer container)
|
||||
{
|
||||
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
||||
}
|
||||
|
||||
private static IContainer RegisterServices(ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
|
||||
builder.Register(c => { return new SoapConfiguration(); }).As<SoapConfiguration>();
|
||||
|
||||
RegisterServiceClasses(builder);
|
||||
RegisterDaoClasses(builder);
|
||||
RegisterSoapClasses(builder);
|
||||
|
||||
// Get apikey from secret file if available, otherwise fallback to appsettings
|
||||
var seqApiKey = ConfigurationManager.AppSettings["serilog:write-to:Seq.apiKey"];
|
||||
try
|
||||
{
|
||||
seqApiKey = File.ReadAllText("/vault/secrets/core-soap-api-wrapper-api-seq-api-key.json").Trim();
|
||||
} catch (Exception)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
builder.Register<ILogger>((c, p) =>
|
||||
{
|
||||
return new LoggerConfiguration().Enrich.FromLogContext()
|
||||
.Enrich.With<HttpRequestIdEnricher>()
|
||||
.WriteTo.Seq(ConfigurationManager.AppSettings["serilog:write-to:Seq.serverUrl"], LogEventLevel.Information, 1000, null, seqApiKey)
|
||||
.CreateLogger();
|
||||
}).SingleInstance();
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
private static void RegisterServiceClasses(ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterType<AccountService>().As<IAccountService>();
|
||||
builder.RegisterType<CollateralMaintenanceService>().As<ICollateralMaintenanceService>();
|
||||
builder.RegisterType<MonetaryTransactionService>().As<IMonetaryTransactionService>();
|
||||
builder.RegisterType<IndirectLoanService>().As<IIndirectLoanService>();
|
||||
builder.RegisterType<PersonAgreementService>().As<IPersonAgreementService>();
|
||||
builder.RegisterType<TaxService>().As<ITaxService>();
|
||||
}
|
||||
|
||||
private static void RegisterDaoClasses(ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterType<AccountDao>().As<IAccountDao>();
|
||||
builder.RegisterType<CollateralMaintenanceDao>().As<ICollateralMaintenanceDao>();
|
||||
builder.RegisterType<MonetaryTransactionDao>().As<IMonetaryTransactionDao>();
|
||||
builder.RegisterType<IndirectLoanDao>().As<IIndirectLoanDao>();
|
||||
builder.RegisterType<PersonAgreementDao>().As<IPersonAgreementDao>();
|
||||
builder.RegisterType<TaxDao>().As<ITaxDao>();
|
||||
}
|
||||
|
||||
private static void RegisterSoapClasses(ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterType<CoreSoapConnection>().As<ICoreSoapConnection>();
|
||||
builder.RegisterType<CoreSoapRequest>().As<ICoreSoapRequest>();
|
||||
builder.RegisterType<CoreCmcConnection>().As<ICoreCmcConnection>();
|
||||
}
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper
|
||||
{
|
||||
public class RouteConfig
|
||||
{
|
||||
public static void RegisterRoutes(RouteCollection routes)
|
||||
{
|
||||
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
||||
|
||||
routes.MapRoute(
|
||||
name: "Default",
|
||||
url: "{controller}/{action}/{id}",
|
||||
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
+313
@@ -0,0 +1,313 @@
|
||||
using System.Web.Http;
|
||||
using WebActivatorEx;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper;
|
||||
using Swashbuckle.Application;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.App_Start;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
|
||||
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper
|
||||
{
|
||||
public class SwaggerConfig
|
||||
{
|
||||
public static void Register()
|
||||
{
|
||||
var thisAssembly = typeof(SwaggerConfig).Assembly;
|
||||
|
||||
GlobalConfiguration.Configuration
|
||||
.EnableSwagger(c =>
|
||||
{
|
||||
// By default, the service root url is inferred from the request used to access the docs.
|
||||
// However, there may be situations (e.g. proxy and load-balanced environments) where this does not
|
||||
// resolve correctly. You can workaround this by providing your own code to determine the root URL.
|
||||
//
|
||||
c.RootUrl(GetRootUrlFromProxyHeaders);
|
||||
|
||||
// If schemes are not explicitly provided in a Swagger 2.0 document, then the scheme used to access
|
||||
// the docs is taken as the default. If your API supports multiple schemes and you want to be explicit
|
||||
// about them, you can use the "Schemes" option as shown below.
|
||||
//
|
||||
//c.Schemes(new[] { "http", "https" });
|
||||
|
||||
// Use "SingleApiVersion" to describe a single version API. Swagger 2.0 includes an "Info" object to
|
||||
// hold additional metadata for an API. Version and title are required but you can also provide
|
||||
// additional fields by chaining methods off SingleApiVersion.
|
||||
//
|
||||
c.SingleApiVersion("v1", "LCU.API.Internal.CoreSoapApiWrapper");
|
||||
|
||||
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
|
||||
//
|
||||
//c.PrettyPrint();
|
||||
|
||||
// If your API has multiple versions, use "MultipleApiVersions" instead of "SingleApiVersion".
|
||||
// In this case, you must provide a lambda that tells Swashbuckle which actions should be
|
||||
// included in the docs for a given API version. Like "SingleApiVersion", each call to "Version"
|
||||
// returns an "Info" builder so you can provide additional metadata per API version.
|
||||
//
|
||||
//c.MultipleApiVersions(
|
||||
// (apiDesc, targetApiVersion) => ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),
|
||||
// (vc) =>
|
||||
// {
|
||||
// vc.Version("v2", "Swashbuckle Dummy API V2");
|
||||
// vc.Version("v1", "Swashbuckle Dummy API V1");
|
||||
// });
|
||||
|
||||
// You can use "BasicAuth", "ApiKey" or "OAuth2" options to describe security schemes for the API.
|
||||
// See https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md for more details.
|
||||
// NOTE: These only define the schemes and need to be coupled with a corresponding "security" property
|
||||
// at the document or operation level to indicate which schemes are required for an operation. To do this,
|
||||
// you'll need to implement a custom IDocumentFilter and/or IOperationFilter to set these properties
|
||||
// according to your specific authorization implementation
|
||||
//
|
||||
//c.BasicAuth("basic")
|
||||
// .Description("Basic HTTP Authentication");
|
||||
//
|
||||
// NOTE: You must also configure 'EnableApiKeySupport' below in the SwaggerUI section
|
||||
//c.ApiKey("apiKey")
|
||||
// .Description("API Key Authentication")
|
||||
// .Name("apiKey")
|
||||
// .In("header");
|
||||
//
|
||||
//c.OAuth2("oauth2")
|
||||
// .Description("OAuth2 Implicit Grant")
|
||||
// .Flow("implicit")
|
||||
// .AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog")
|
||||
// //.TokenUrl("https://tempuri.org/token")
|
||||
// .Scopes(scopes =>
|
||||
// {
|
||||
// scopes.Add("read", "Read access to protected resources");
|
||||
// scopes.Add("write", "Write access to protected resources");
|
||||
// });
|
||||
|
||||
// Set this flag to omit descriptions for any actions decorated with the Obsolete attribute
|
||||
//c.IgnoreObsoleteActions();
|
||||
|
||||
// Each operation be assigned one or more tags which are then used by consumers for various reasons.
|
||||
// For example, the swagger-ui groups operations according to the first tag of each operation.
|
||||
// By default, this will be controller name but you can use the "GroupActionsBy" option to
|
||||
// override with any value.
|
||||
//
|
||||
//c.GroupActionsBy(apiDesc => apiDesc.HttpMethod.ToString());
|
||||
|
||||
// You can also specify a custom sort order for groups (as defined by "GroupActionsBy") to dictate
|
||||
// the order in which operations are listed. For example, if the default grouping is in place
|
||||
// (controller name) and you specify a descending alphabetic sort order, then actions from a
|
||||
// ProductsController will be listed before those from a CustomersController. This is typically
|
||||
// used to customize the order of groupings in the swagger-ui.
|
||||
//
|
||||
//c.OrderActionGroupsBy(new DescendingAlphabeticComparer());
|
||||
|
||||
// If you annotate Controllers and API Types with
|
||||
// Xml comments (http://msdn.microsoft.com/en-us/library/b2s063f7(v=vs.110).aspx), you can incorporate
|
||||
// those comments into the generated docs and UI. You can enable this by providing the path to one or
|
||||
// more Xml comment files.
|
||||
//
|
||||
//c.IncludeXmlComments(GetXmlCommentsPath());
|
||||
|
||||
// Swashbuckle makes a best attempt at generating Swagger compliant JSON schemas for the various types
|
||||
// exposed in your API. However, there may be occasions when more control of the output is needed.
|
||||
// This is supported through the "MapType" and "SchemaFilter" options:
|
||||
//
|
||||
// Use the "MapType" option to override the Schema generation for a specific type.
|
||||
// It should be noted that the resulting Schema will be placed "inline" for any applicable Operations.
|
||||
// While Swagger 2.0 supports inline definitions for "all" Schema types, the swagger-ui tool does not.
|
||||
// It expects "complex" Schemas to be defined separately and referenced. For this reason, you should only
|
||||
// use the "MapType" option when the resulting Schema is a primitive or array type. If you need to alter a
|
||||
// complex Schema, use a Schema filter.
|
||||
//
|
||||
//c.MapType<ProductType>(() => new Schema { type = "integer", format = "int32" });
|
||||
|
||||
// If you want to post-modify "complex" Schemas once they've been generated, across the board or for a
|
||||
// specific type, you can wire up one or more Schema filters.
|
||||
//
|
||||
//c.SchemaFilter<ApplySchemaVendorExtensions>();
|
||||
|
||||
// In a Swagger 2.0 document, complex types are typically declared globally and referenced by unique
|
||||
// Schema Id. By default, Swashbuckle does NOT use the full type name in Schema Ids. In most cases, this
|
||||
// works well because it prevents the "implementation detail" of type namespaces from leaking into your
|
||||
// Swagger docs and UI. However, if you have multiple types in your API with the same class name, you'll
|
||||
// need to opt out of this behavior to avoid Schema Id conflicts.
|
||||
//
|
||||
//c.UseFullTypeNameInSchemaIds();
|
||||
|
||||
// Alternatively, you can provide your own custom strategy for inferring SchemaId's for
|
||||
// describing "complex" types in your API.
|
||||
//
|
||||
//c.SchemaId(t => t.FullName.Contains('`') ? t.FullName.Substring(0, t.FullName.IndexOf('`')) : t.FullName);
|
||||
|
||||
// Set this flag to omit schema property descriptions for any type properties decorated with the
|
||||
// Obsolete attribute
|
||||
//c.IgnoreObsoleteProperties();
|
||||
|
||||
// In accordance with the built in JsonSerializer, Swashbuckle will, by default, describe enums as integers.
|
||||
// You can change the serializer behavior by configuring the StringToEnumConverter globally or for a given
|
||||
// enum type. Swashbuckle will honor this change out-of-the-box. However, if you use a different
|
||||
// approach to serialize enums as strings, you can also force Swashbuckle to describe them as strings.
|
||||
//
|
||||
//c.DescribeAllEnumsAsStrings();
|
||||
|
||||
// Similar to Schema filters, Swashbuckle also supports Operation and Document filters:
|
||||
//
|
||||
// Post-modify Operation descriptions once they've been generated by wiring up one or more
|
||||
// Operation filters.
|
||||
//
|
||||
//c.OperationFilter<AddDefaultResponse>();
|
||||
//
|
||||
// If you've defined an OAuth2 flow as described above, you could use a custom filter
|
||||
// to inspect some attribute on each action and infer which (if any) OAuth2 scopes are required
|
||||
// to execute the operation
|
||||
//
|
||||
//c.OperationFilter<AssignOAuth2SecurityRequirements>();
|
||||
|
||||
// Post-modify the entire Swagger document by wiring up one or more Document filters.
|
||||
// This gives full control to modify the final SwaggerDocument. You should have a good understanding of
|
||||
// the Swagger 2.0 spec. - https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
|
||||
// before using this option.
|
||||
//
|
||||
//c.DocumentFilter<ApplyDocumentVendorExtensions>();
|
||||
|
||||
// In contrast to WebApi, Swagger 2.0 does not include the query string component when mapping a URL
|
||||
// to an action. As a result, Swashbuckle will raise an exception if it encounters multiple actions
|
||||
// with the same path (sans query string) and HTTP method. You can workaround this by providing a
|
||||
// custom strategy to pick a winner or merge the descriptions for the purposes of the Swagger docs
|
||||
//
|
||||
//c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
|
||||
|
||||
// Wrap the default SwaggerGenerator with additional behavior (e.g. caching) or provide an
|
||||
// alternative implementation for ISwaggerProvider with the CustomProvider option.
|
||||
//
|
||||
//c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
|
||||
c.ApiKey("ApiKey")
|
||||
.Description("API Key Header")
|
||||
.Name("ApiKey")
|
||||
.In("header");
|
||||
|
||||
c.ApiKey("Client")
|
||||
.Description("Client Header")
|
||||
.Name("Client")
|
||||
.In("header");
|
||||
|
||||
c.OperationFilter<AssignSecurityRequirements>();
|
||||
})
|
||||
.EnableSwaggerUi(c =>
|
||||
{
|
||||
// Use the "DocumentTitle" option to change the Document title.
|
||||
// Very helpful when you have multiple Swagger pages open, to tell them apart.
|
||||
//
|
||||
//c.DocumentTitle("My Swagger UI");
|
||||
|
||||
// Use the "InjectStylesheet" option to enrich the UI with one or more additional CSS stylesheets.
|
||||
// The file must be included in your project as an "Embedded Resource", and then the resource's
|
||||
// "Logical Name" is passed to the method as shown below.
|
||||
//
|
||||
//c.InjectStylesheet(containingAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
|
||||
|
||||
// Use the "InjectJavaScript" option to invoke one or more custom JavaScripts after the swagger-ui
|
||||
// has loaded. The file must be included in your project as an "Embedded Resource", and then the resource's
|
||||
// "Logical Name" is passed to the method as shown above.
|
||||
//
|
||||
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
|
||||
|
||||
// The swagger-ui renders boolean data types as a dropdown. By default, it provides "true" and "false"
|
||||
// strings as the possible choices. You can use this option to change these to something else,
|
||||
// for example 0 and 1.
|
||||
//
|
||||
//c.BooleanValues(new[] { "0", "1" });
|
||||
|
||||
// By default, swagger-ui will validate specs against swagger.io's online validator and display the result
|
||||
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the
|
||||
// feature entirely.
|
||||
//c.SetValidatorUrl("http://localhost/validator");
|
||||
//c.DisableValidator();
|
||||
|
||||
// Use this option to control how the Operation listing is displayed.
|
||||
// It can be set to "None" (default), "List" (shows operations for each resource),
|
||||
// or "Full" (fully expanded: shows operations and their details).
|
||||
//
|
||||
//c.DocExpansion(DocExpansion.List);
|
||||
|
||||
// Specify which HTTP operations will have the 'Try it out!' option. An empty paramter list disables
|
||||
// it for all operations.
|
||||
//
|
||||
//c.SupportedSubmitMethods("GET", "HEAD");
|
||||
|
||||
// Use the CustomAsset option to provide your own version of assets used in the swagger-ui.
|
||||
// It's typically used to instruct Swashbuckle to return your version instead of the default
|
||||
// when a request is made for "index.html". As with all custom content, the file must be included
|
||||
// in your project as an "Embedded Resource", and then the resource's "Logical Name" is passed to
|
||||
// the method as shown below.
|
||||
//
|
||||
//c.CustomAsset("index", containingAssembly, "YourWebApiProject.SwaggerExtensions.index.html");
|
||||
|
||||
// If your API has multiple versions and you've applied the MultipleApiVersions setting
|
||||
// as described above, you can also enable a select box in the swagger-ui, that displays
|
||||
// a discovery URL for each version. This provides a convenient way for users to browse documentation
|
||||
// for different API versions.
|
||||
//
|
||||
//c.EnableDiscoveryUrlSelector();
|
||||
|
||||
// If your API supports the OAuth2 Implicit flow, and you've described it correctly, according to
|
||||
// the Swagger 2.0 specification, you can enable UI support as shown below.
|
||||
//
|
||||
//c.EnableOAuth2Support(
|
||||
// clientId: "test-client-id",
|
||||
// clientSecret: null,
|
||||
// realm: "test-realm",
|
||||
// appName: "Swagger UI"
|
||||
// //additionalQueryStringParams: new Dictionary<string, string>() { { "foo", "bar" } }
|
||||
//);
|
||||
|
||||
// If your API supports ApiKey, you can override the default values.
|
||||
// "apiKeyIn" can either be "query" or "header"
|
||||
//
|
||||
//c.EnableApiKeySupport("apiKey", "header");
|
||||
});
|
||||
}
|
||||
|
||||
private static string GetRootUrlFromProxyHeaders(HttpRequestMessage request)
|
||||
{
|
||||
var forwardedProto = GetFirstHeaderValue(request, "X-Forwarded-Proto");
|
||||
var forwardedHost = GetFirstHeaderValue(request, "X-Forwarded-Host");
|
||||
var forwardedPrefix = GetFirstHeaderValue(request, "X-Forwarded-Prefix");
|
||||
|
||||
var scheme = string.IsNullOrWhiteSpace(forwardedProto) ? request.RequestUri.Scheme : forwardedProto;
|
||||
var authority = !string.IsNullOrWhiteSpace(forwardedHost)
|
||||
? forwardedHost
|
||||
: (string.IsNullOrWhiteSpace(request.Headers.Host) ? request.RequestUri.Authority : request.Headers.Host);
|
||||
|
||||
var pathBase = request.GetRequestContext()?.VirtualPathRoot ?? "/";
|
||||
var prefix = NormalizePrefix(forwardedPrefix);
|
||||
if (!string.IsNullOrWhiteSpace(prefix) && prefix != "/")
|
||||
{
|
||||
pathBase = prefix;
|
||||
}
|
||||
|
||||
return $"{scheme}://{authority}{(pathBase ?? "/").TrimEnd('/')}";
|
||||
}
|
||||
|
||||
private static string GetFirstHeaderValue(HttpRequestMessage request, string headerName)
|
||||
{
|
||||
if (request == null) return null;
|
||||
if (string.IsNullOrWhiteSpace(headerName)) return null;
|
||||
|
||||
if (!request.Headers.TryGetValues(headerName, out var values)) return null;
|
||||
|
||||
var value = values?.FirstOrDefault();
|
||||
if (string.IsNullOrWhiteSpace(value)) return null;
|
||||
|
||||
return value.Split(',').Select(v => v.Trim()).FirstOrDefault(v => !string.IsNullOrWhiteSpace(v));
|
||||
}
|
||||
|
||||
private static string NormalizePrefix(string prefix)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(prefix)) return null;
|
||||
|
||||
var trimmed = prefix.Trim();
|
||||
if (!trimmed.StartsWith("/")) trimmed = "/" + trimmed;
|
||||
return trimmed.EndsWith("/") && trimmed.Length > 1 ? trimmed.TrimEnd('/') : trimmed;
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
using System.Web.Http;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper
|
||||
{
|
||||
public static class WebApiConfig
|
||||
{
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
// Web API configuration and services
|
||||
config.EnableCors();
|
||||
|
||||
// Web API routes
|
||||
config.MapHttpAttributeRoutes();
|
||||
|
||||
config.Routes.MapHttpRoute(
|
||||
name: "DefaultApi",
|
||||
routeTemplate: "v1/{controller}/{id}",
|
||||
defaults: new { id = RouteParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.Controllers;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Attributes
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
|
||||
public sealed class ApiKeyAuthorizeAttribute : AuthorizeAttribute
|
||||
{
|
||||
private const string AuthFailureMessage = "Unauthorized client: ";
|
||||
private const string NotProvidedMessage = "Header Not Provided: ";
|
||||
private const string KeySetPrefix = "ApiSecurityConfiguration:ExternalApiKeySet:";
|
||||
private readonly Dictionary<string, string> _externalApiKeySet;
|
||||
private readonly string _authenticationFailureBehavior;
|
||||
|
||||
public ApiKeyAuthorizeAttribute()
|
||||
{
|
||||
_externalApiKeySet = ConfigurationManager.AppSettings.AllKeys
|
||||
.Where(k => k.StartsWith(KeySetPrefix))
|
||||
.ToDictionary(
|
||||
k => k.Substring(KeySetPrefix.Length),
|
||||
k => ConfigurationManager.AppSettings[k]);
|
||||
|
||||
try
|
||||
{
|
||||
var coreSoapApiWrapperKey = File.ReadAllText("/vault/secrets/core-soap-api-wrapper-external-api-key-core-soap-api-wrapper.json").Trim();
|
||||
_externalApiKeySet["CoreSoapApiWrapper"] = coreSoapApiWrapperKey;
|
||||
} catch(Exception)
|
||||
{
|
||||
// do nothing, fallback to appsettings value if secret file is not found or cannot be read
|
||||
}
|
||||
|
||||
_authenticationFailureBehavior = ConfigurationManager.AppSettings["ApiSecurityConfiguration:ApiKeyAuthenticationFailureBehavior"] ?? "Error";
|
||||
}
|
||||
|
||||
protected override bool IsAuthorized(HttpActionContext actionContext)
|
||||
{
|
||||
var request = actionContext.Request;
|
||||
if (!request.Headers.TryGetValues("ApiKey", out var apiKeys))
|
||||
{
|
||||
return HandleFailure(NotProvidedMessage, "ApiKey");
|
||||
}
|
||||
|
||||
if (!request.Headers.TryGetValues("Client", out var clients))
|
||||
{
|
||||
return HandleFailure(NotProvidedMessage, "Client");
|
||||
}
|
||||
|
||||
var apiKey = apiKeys.FirstOrDefault();
|
||||
var client = clients.FirstOrDefault();
|
||||
_externalApiKeySet.TryGetValue(client, out var externalApiKey);
|
||||
if (string.IsNullOrEmpty(apiKey) || !apiKey.Equals(externalApiKey))
|
||||
{
|
||||
return HandleFailure(AuthFailureMessage, "ApiKey");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool HandleFailure(string message, string type)
|
||||
{
|
||||
if (_authenticationFailureBehavior.Equals("Warn", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
Log.Warning(message + type);
|
||||
return true;
|
||||
}
|
||||
|
||||
Log.Error(message + type);
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
|
||||
{
|
||||
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
|
||||
{
|
||||
Content = new StringContent(AuthFailureMessage + "ApiKey")
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
+241
@@ -0,0 +1,241 @@
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/Account")]
|
||||
public class AccountController : ApiController
|
||||
{
|
||||
private readonly IAccountService _accountService;
|
||||
|
||||
public AccountController(IAccountService accountService)
|
||||
{
|
||||
_accountService = accountService;
|
||||
}
|
||||
|
||||
[Route("{accountNumber:long}/GetAccountByAccountNumber")]
|
||||
public IHttpActionResult GetAccountByAccountNumber(long accountNumber)
|
||||
{
|
||||
if (accountNumber <= 0)
|
||||
{
|
||||
Log.Warning($"Account number must be greater than 0. AccountNumber: {accountNumber}");
|
||||
return BadRequest("Account number must be greater than 0");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountOwnerships = _accountService.GetAccountByAccountNumber(accountNumber);
|
||||
return Ok(accountOwnerships);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountMaintenanceRequest")]
|
||||
public IHttpActionResult PutAccountMaintenanceRequest(AccountMaintenanceRequest accountMaintenanceRequest)
|
||||
{
|
||||
if (accountMaintenanceRequest == null)
|
||||
{
|
||||
return BadRequest("AccountMaintenance Request cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountMaintenanceResponse = _accountService.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
return Ok(accountMaintenanceResponse);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountBranchUpdateRequest")]
|
||||
public IHttpActionResult PutAccountBranchUpdateRequest(AccountBranchUpdateRequest accountBranchUpdateRequest)
|
||||
{
|
||||
if (accountBranchUpdateRequest == null)
|
||||
{
|
||||
return BadRequest("AccountBranchUpdate Request cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountBranchUpdateResponse = _accountService.SendAccountBranchUpdateRequest(accountBranchUpdateRequest);
|
||||
return Ok(accountBranchUpdateResponse);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountLtvUpdateRequest")]
|
||||
public IHttpActionResult PutAccountLtvUpdateRequest(AccountLtvUpdateRequest accountLtvUpdateRequest)
|
||||
{
|
||||
if (accountLtvUpdateRequest == null)
|
||||
{
|
||||
return BadRequest("AccountLtvUpdateRequest Request cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountLtvUpdateResponse = _accountService.SendAccountLtvUpdateRequest(accountLtvUpdateRequest);
|
||||
return Ok(accountLtvUpdateResponse);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountAnalysisGroupMaintenanceRequest")]
|
||||
public IHttpActionResult PutAccountAnalysisGroupMaintenanceRequest(AccountAnalysisGroupMaintenanceRequest accountAnalysisGroupMaintenanceRequest)
|
||||
{
|
||||
if (accountAnalysisGroupMaintenanceRequest == null)
|
||||
{
|
||||
return BadRequest("AccountAnalysisGroupMaintenance Request cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountAnalysisUpdateResponse = _accountService.SendAccountAnalysisGroupMaintenanceRequest(accountAnalysisGroupMaintenanceRequest);
|
||||
return Ok(accountAnalysisUpdateResponse);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PersonAccountRequest")]
|
||||
public IHttpActionResult PostPersonAccountRequest([FromBody] CreatePersonAccountRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return BadRequest("CreatePersonAccountRequest cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _accountService.AddPersonAccount(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("OrganizationAccountRequest")]
|
||||
public IHttpActionResult PostOrganizationAccountRequest([FromBody] CreateOrganizationAccountRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return BadRequest("CreateOrganizationAccountRequest cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _accountService.AddOrganizationAccount(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("OrganizationMaintenanceRequest")]
|
||||
public IHttpActionResult PutOrganizationMaintenanceRequest([FromBody] OrganizationMaintenanceRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return BadRequest("OrganizationMaintenanceRequest cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _accountService.AddOrganizationControlPerson(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountNickNameUpdateRequest")]
|
||||
public IHttpActionResult PutAccountNickNameUpdateRequest([FromBody] AccountNickNameUpdateRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return BadRequest("AccountNickNameUpdateRequest cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _accountService.SendAccountNickNameUpdateRequest(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountCreditReportTypeRequest")]
|
||||
public IHttpActionResult PutAccountCreditReportTypeUpdateRequest(AccountCreditReportTypeUpdateRequest accountCreditReportTypeUpdateRequest)
|
||||
{
|
||||
if (accountCreditReportTypeUpdateRequest == null)
|
||||
{
|
||||
return BadRequest("AccountCreditReportTypeUpdateRequest Request cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var accountCreditReportTypeUpdateResponse = _accountService.SendAccountCreditReportTypeUpdateRequest(accountCreditReportTypeUpdateRequest);
|
||||
return Ok(accountCreditReportTypeUpdateResponse);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("AccountContractDateUpdateRequest")]
|
||||
public IHttpActionResult PutAccountContractDateUpdateRequest([FromBody] AccountContractDateUpdateRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return BadRequest("AccountContractDateUpdateRequest cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _accountService.SendAccountContractDateUpdateRequest(request);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/CollateralMaintenance")]
|
||||
public class CollateralMaintenanceController : ApiController
|
||||
{
|
||||
private readonly ICollateralMaintenanceService _collateralMaintenanceService;
|
||||
public CollateralMaintenanceController(ICollateralMaintenanceService collateralMaintenanceService)
|
||||
{
|
||||
_collateralMaintenanceService = collateralMaintenanceService;
|
||||
}
|
||||
|
||||
[Route("{propertyNumber:long}/GetCollateralByPropertyNumber")]
|
||||
public IHttpActionResult Get(long propertyNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (propertyNumber <= 0)
|
||||
{
|
||||
Log.Warning($"Property number must be greater than 0. AccountNumber: {propertyNumber}");
|
||||
return BadRequest("Property number must be greater than 0");
|
||||
}
|
||||
var collateral = _collateralMaintenanceService.GetCollateralMaintenanceByPropertyNumber(propertyNumber);
|
||||
return Ok(collateral);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PostCollateralMaintenance")]
|
||||
public IHttpActionResult PostCollateralMaintenance([FromBody] UserFieldRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
Log.Warning($"Request cannot be null");
|
||||
return BadRequest("Request cannot be null");
|
||||
}
|
||||
var collateral = _collateralMaintenanceService.InsertCollateralMaintenance(request);
|
||||
return Ok(collateral);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PutCollateralMaintenance")]
|
||||
public IHttpActionResult PutCollateralMaintenance([FromBody] UserFieldRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
Log.Warning($"Request cannot be null");
|
||||
return BadRequest("Request cannot be null");
|
||||
}
|
||||
var collateral = _collateralMaintenanceService.UpdateCollateralMaintenance(request);
|
||||
return Ok(collateral);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Serilog;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/IndirectLoan")]
|
||||
public class IndirectLoanController : ApiController
|
||||
{
|
||||
private readonly IIndirectLoanService _indirectLoanService;
|
||||
|
||||
public IndirectLoanController (IIndirectLoanService indirectLoanService)
|
||||
{
|
||||
_indirectLoanService = indirectLoanService;
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PutDealerOriginalBalance")]
|
||||
public IHttpActionResult PutDealerOriginalBalance(string accountNumber)
|
||||
{
|
||||
if (string.IsNullOrEmpty(accountNumber))
|
||||
{
|
||||
Log.Warning($"Account number is invalid");
|
||||
return BadRequest("Account number cannot be null.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _indirectLoanService.UpdateDealerOriginalBalances(accountNumber);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/MonetaryTransaction")]
|
||||
public class MonetaryTransactionController : ApiController
|
||||
{
|
||||
private readonly IMonetaryTransactionService _monetaryTransactionService;
|
||||
|
||||
public MonetaryTransactionController(IMonetaryTransactionService monetaryTransactionService)
|
||||
{
|
||||
_monetaryTransactionService = monetaryTransactionService;
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PostMonetaryTransactions")]
|
||||
public IHttpActionResult PostMonetaryTransactions(List<GroupedMonetaryTransactionRequest> requests)
|
||||
{
|
||||
if (requests == null)
|
||||
{
|
||||
Log.Warning($"Request cannot be null");
|
||||
return BadRequest("Invalid Request");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _monetaryTransactionService.AddMonetaryTransactions(requests);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PostFundsToAccount")]
|
||||
public IHttpActionResult PostFundsToAccount([FromBody] List<FundsToAccountRequest> requests)
|
||||
{
|
||||
if (requests == null)
|
||||
{
|
||||
return BadRequest("Invalid Request");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest("FundsToAccountRequest is invalid.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var response = _monetaryTransactionService.AddFundsToAccount(requests);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Attributes;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/PersonAgreement")]
|
||||
public class PersonAgreementController : ApiController
|
||||
{
|
||||
private readonly IPersonAgreementService _personAgreementService;
|
||||
|
||||
public PersonAgreementController(IPersonAgreementService personAgreementService)
|
||||
{
|
||||
_personAgreementService = personAgreementService;
|
||||
}
|
||||
|
||||
[ApiKeyAuthorize]
|
||||
[Route("PutPersonAgreementsDetailTypes")]
|
||||
public IHttpActionResult PutPersonAgreementsDetailTypes([FromBody] PersonAgreementDetailTypeRequest personAgreementDetailTypeRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest("PersonAgreementDetailTypeRequest is invalid.");
|
||||
}
|
||||
|
||||
if (personAgreementDetailTypeRequest == null)
|
||||
{
|
||||
return BadRequest("PersonAgreementDetailTypeRequest Request cannot be null.");
|
||||
}
|
||||
|
||||
var response = _personAgreementService.UpdatePersonAgreementsDetailTypes(personAgreementDetailTypeRequest);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.Web.Http;
|
||||
using Serilog;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/status")]
|
||||
public class StatusController : ApiController
|
||||
{
|
||||
public StatusController()
|
||||
{
|
||||
}
|
||||
|
||||
[Route("")]
|
||||
public IHttpActionResult Get()
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = new EnvironmentView();
|
||||
result.Application = "LCU.API.Internal.CoreSoapApiWrapper";
|
||||
result.CurrentDate = DateTime.Now;
|
||||
result.Environment = ConfigurationManager.AppSettings["KnownEnvironment"];
|
||||
Log.Verbose($"{result.Application}'s status endpoint was hit in {result.Environment}");
|
||||
return Ok(result);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, "Error getting status.");
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Controllers
|
||||
{
|
||||
[RoutePrefix("api/core/Tax")]
|
||||
public class TaxController : ApiController
|
||||
{
|
||||
private readonly ITaxService _taxService;
|
||||
|
||||
public TaxController(ITaxService taxService)
|
||||
{
|
||||
_taxService = taxService;
|
||||
}
|
||||
|
||||
[Route("{taxId:long}/GetTaxIdData")]
|
||||
public IHttpActionResult GetTaxIdData(long taxId)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (taxId == 0)
|
||||
{
|
||||
return BadRequest("A taxId must be provided, and cannot be 0.");
|
||||
}
|
||||
|
||||
var response = _taxService.GetTaxIdData(taxId);
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public class CoreCmcConnection : ICoreCmcConnection
|
||||
{
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
private const int WhoIsTokenRequestTimeOut = 10 * 60 * 1000;
|
||||
|
||||
public CoreCmcConnection(SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public Cmc.Transaction<TRequest> CreateSocketTransactionRequest<TRequest>(TRequest request)
|
||||
{
|
||||
var whoIsToken = GetWhoIsToken();
|
||||
|
||||
var userAuthentication = new Cmc.UserAuthentication()
|
||||
{
|
||||
AuthTyp = _soapConfiguration.AuthenticationType,
|
||||
ApplNbr = _soapConfiguration.SocketApplicationId,
|
||||
PhysAddr = _soapConfiguration.SocketDeviceId,
|
||||
Passwd = whoIsToken
|
||||
};
|
||||
|
||||
var requestsBase = new List<TRequest>();
|
||||
|
||||
requestsBase.Add(request);
|
||||
|
||||
var input = new Cmc.Input<TRequest>()
|
||||
{
|
||||
UserAuthentication = userAuthentication,
|
||||
Requests = requestsBase
|
||||
};
|
||||
|
||||
var transaction = new Cmc.Transaction<TRequest>()
|
||||
{
|
||||
Input = input,
|
||||
CommitRollbackYN = "Y"
|
||||
};
|
||||
|
||||
return transaction;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This code could be refactored, some of this logic is duplicated.
|
||||
/// </summary>
|
||||
public string GetWhoIsToken()
|
||||
{
|
||||
try
|
||||
{
|
||||
var signOnResponse = DirectSSORequest();
|
||||
var xmlResponseDocument = new XmlDocument();
|
||||
xmlResponseDocument.LoadXml(signOnResponse);
|
||||
|
||||
var unSuccessful = !Convert.ToBoolean(xmlResponseDocument.DocumentElement.Attributes["Successful"].Value);
|
||||
if (unSuccessful)
|
||||
{
|
||||
var exceptionCode = xmlResponseDocument.DocumentElement.Attributes["ExceptionCode"].Value;
|
||||
var exceptionMessage = xmlResponseDocument.DocumentElement.Attributes["ExceptionMessage"].Value;
|
||||
throw new Exception($"Unsuccessfull direct signon. ExceptionCode: {exceptionCode}, ExceptionMessage: {exceptionMessage}");
|
||||
}
|
||||
|
||||
var ssoTicketNode = xmlResponseDocument.DocumentElement.SelectSingleNode("SSOTicket");
|
||||
var ssoTicket = ssoTicketNode.InnerText;
|
||||
return RequestWhoIsToken(ssoTicket);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to get a who is token. Exception: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This code could be refactored, some of this logic is duplicated.
|
||||
/// </summary>
|
||||
private string DirectSSORequest()
|
||||
{
|
||||
try
|
||||
{
|
||||
var xmlRequest = new StringBuilder();
|
||||
var settings = new XmlWriterSettings
|
||||
{
|
||||
Indent = true
|
||||
};
|
||||
|
||||
using (Utf8StringWriter utf8StringWriter = new Utf8StringWriter(xmlRequest))
|
||||
using (XmlWriter writer = XmlWriter.Create(utf8StringWriter, settings))
|
||||
{
|
||||
writer.WriteStartDocument();
|
||||
|
||||
writer.WriteStartElement("DirectSSORequest");
|
||||
writer.WriteAttributeString("MessageDateTime",
|
||||
System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime.ToString(DateTime.Now));
|
||||
writer.WriteAttributeString("TrackingId", Guid.NewGuid().ToString());
|
||||
writer.WriteElementString("DeviceId", _soapConfiguration.SocketDeviceId);
|
||||
writer.WriteElementString("UserId", _soapConfiguration.SocketUserId);
|
||||
writer.WriteElementString("Password", _soapConfiguration.SocketPassword);
|
||||
writer.WriteElementString("ProdEnvCd", _soapConfiguration.EnvironmentCode);
|
||||
writer.WriteElementString("ProdDefCd", _soapConfiguration.DefCode);
|
||||
writer.WriteEndElement();
|
||||
|
||||
writer.WriteEndDocument();
|
||||
}
|
||||
|
||||
var xml = xmlRequest.ToString();
|
||||
var productIntegration = new ProductIntegration()
|
||||
{
|
||||
Url = _soapConfiguration.SafUrl,
|
||||
UseDefaultCredentials = true
|
||||
};
|
||||
|
||||
var xmlResponse = productIntegration.DirectSignon(xmlRequest.ToString());
|
||||
|
||||
return xmlResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to make direct SSO request. Exception:{ex}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This code could be refactored, some of this logic is duplicated.
|
||||
/// </summary>
|
||||
private class Utf8StringWriter : StringWriter
|
||||
{
|
||||
public Utf8StringWriter(StringBuilder sb) : base(sb) { }
|
||||
public override Encoding Encoding { get { return Encoding.UTF8; } }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This code could be refactored, some of this logic is duplicated.
|
||||
/// </summary>
|
||||
private string RequestWhoIsToken(string ssoTicket)
|
||||
{
|
||||
try
|
||||
{
|
||||
var xmlResponse = WhoIsRequest(ssoTicket);
|
||||
var xmlResponseDocument = new XmlDocument();
|
||||
xmlResponseDocument.LoadXml(xmlResponse);
|
||||
xmlResponseDocument.RemoveChild(xmlResponseDocument.FirstChild);
|
||||
|
||||
var unSuccessful = !Convert.ToBoolean(xmlResponseDocument.DocumentElement.Attributes["Successful"].Value);
|
||||
if (unSuccessful)
|
||||
{
|
||||
var exceptionCode = xmlResponseDocument.DocumentElement.Attributes["ExceptionCode"].Value;
|
||||
var exceptionMessage = xmlResponseDocument.DocumentElement.Attributes["ExceptionMessage"].Value;
|
||||
throw new Exception($"Unsuccessfull direct signon. ExceptionCode: {exceptionCode}, ExceptionMessage: {exceptionMessage}");
|
||||
}
|
||||
|
||||
return xmlResponseDocument.InnerXml;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to request a who is token. Exception: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This code could be refactored, some of this logic is duplicated.
|
||||
/// </summary>
|
||||
private string WhoIsRequest(string ssoTicket)
|
||||
{
|
||||
var xmlRequest = new StringBuilder();
|
||||
var settings = new XmlWriterSettings()
|
||||
{
|
||||
Indent = true
|
||||
};
|
||||
|
||||
using (Utf8StringWriter str = new Utf8StringWriter(xmlRequest))
|
||||
using (XmlWriter writer = XmlWriter.Create(str, settings))
|
||||
{
|
||||
writer.WriteStartDocument();
|
||||
writer.WriteStartElement("WhoIsRequest");
|
||||
writer.WriteAttributeString("MessageDateTime",
|
||||
System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime.ToString(DateTime.Now));
|
||||
writer.WriteAttributeString("TrackingId", Guid.NewGuid().ToString());
|
||||
writer.WriteAttributeString("SSOTicket", ssoTicket);
|
||||
writer.WriteElementString("LookupSSOTicket", ssoTicket);
|
||||
writer.WriteEndDocument();
|
||||
}
|
||||
|
||||
var productIntegration = new ProductIntegration()
|
||||
{
|
||||
Url = _soapConfiguration.SafUrl,
|
||||
UseDefaultCredentials = true,
|
||||
Timeout = WhoIsTokenRequestTimeOut
|
||||
};
|
||||
var xmlResponse = productIntegration.WhoIs(xmlRequest.ToString());
|
||||
|
||||
return xmlResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public class CoreSoapConnection : ICoreSoapConnection
|
||||
{
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
private const int WhoIsTokenRequestTimeOut = 10 * 60 * 1000;
|
||||
|
||||
public CoreSoapConnection(SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public TransactionInput CreateTransactionInput<TRequest>(TRequest request) where TRequest : RequestBase
|
||||
{
|
||||
var requests = new List<TRequest>() { request };
|
||||
return CreateTransactionInput(requests);
|
||||
}
|
||||
|
||||
public TransactionInput CreateTransactionInput<TRequest>(List<TRequest> requests) where TRequest : RequestBase
|
||||
{
|
||||
var whoIsToken = GetWhoIsToken();
|
||||
|
||||
var userAuthentication = new UAInput()
|
||||
{
|
||||
ApplID = _soapConfiguration.ApplicationId,
|
||||
AuthorizationType = AuthTypes.SingleSignOn,
|
||||
Password = whoIsToken,
|
||||
NetworkNodeName = _soapConfiguration.DeviceId
|
||||
};
|
||||
|
||||
var requestsBase = new RequestBase[requests.Count];
|
||||
var requestIndex = 0;
|
||||
foreach (var request in requests)
|
||||
{
|
||||
requestsBase[requestIndex] = request;
|
||||
requestIndex++;
|
||||
}
|
||||
|
||||
var input = new Input()
|
||||
{
|
||||
Requests = requestsBase,
|
||||
UserAuthentication = userAuthentication
|
||||
};
|
||||
|
||||
var transactionInput = new TransactionInput()
|
||||
{
|
||||
Input = input
|
||||
};
|
||||
|
||||
return transactionInput;
|
||||
}
|
||||
|
||||
public string GetWhoIsToken()
|
||||
{
|
||||
try
|
||||
{
|
||||
var signOnResponse = DirectSSORequest();
|
||||
var xmlResponseDocument = new XmlDocument();
|
||||
xmlResponseDocument.LoadXml(signOnResponse);
|
||||
|
||||
var unSuccessful = !Convert.ToBoolean(xmlResponseDocument.DocumentElement.Attributes["Successful"].Value);
|
||||
if (unSuccessful)
|
||||
{
|
||||
var exceptionCode = xmlResponseDocument.DocumentElement.Attributes["ExceptionCode"].Value;
|
||||
var exceptionMessage = xmlResponseDocument.DocumentElement.Attributes["ExceptionMessage"].Value;
|
||||
throw new Exception($"Unsuccessfull direct signon. ExceptionCode: {exceptionCode}, ExceptionMessage: {exceptionMessage}");
|
||||
}
|
||||
|
||||
var ssoTicketNode = xmlResponseDocument.DocumentElement.SelectSingleNode("SSOTicket");
|
||||
var ssoTicket = ssoTicketNode.InnerText;
|
||||
return RequestWhoIsToken(ssoTicket);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to get a who is token. Exception: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
private string DirectSSORequest()
|
||||
{
|
||||
try
|
||||
{
|
||||
var xmlRequest = new StringBuilder();
|
||||
var settings = new XmlWriterSettings
|
||||
{
|
||||
Indent = true
|
||||
};
|
||||
|
||||
using (Utf8StringWriter utf8StringWriter = new Utf8StringWriter(xmlRequest))
|
||||
using (XmlWriter writer = XmlWriter.Create(utf8StringWriter, settings))
|
||||
{
|
||||
writer.WriteStartDocument();
|
||||
|
||||
writer.WriteStartElement("DirectSSORequest");
|
||||
writer.WriteAttributeString("MessageDateTime",
|
||||
System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime.ToString(DateTime.Now));
|
||||
writer.WriteAttributeString("TrackingId", Guid.NewGuid().ToString());
|
||||
writer.WriteElementString("DeviceId", _soapConfiguration.DeviceId);
|
||||
writer.WriteElementString("UserId", _soapConfiguration.UserId);
|
||||
writer.WriteElementString("Password", _soapConfiguration.Password);
|
||||
writer.WriteElementString("ProdEnvCd", _soapConfiguration.EnvironmentCode);
|
||||
writer.WriteElementString("ProdDefCd", _soapConfiguration.DefCode);
|
||||
writer.WriteEndElement();
|
||||
|
||||
writer.WriteEndDocument();
|
||||
}
|
||||
|
||||
var xml = xmlRequest.ToString();
|
||||
var productIntegration = new ProductIntegration()
|
||||
{
|
||||
Url = _soapConfiguration.SafUrl,
|
||||
UseDefaultCredentials = true
|
||||
};
|
||||
|
||||
var xmlResponse = productIntegration.DirectSignon(xmlRequest.ToString());
|
||||
|
||||
return xmlResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to make direct SSO request. Exception:{ex}");
|
||||
}
|
||||
}
|
||||
|
||||
private class Utf8StringWriter : StringWriter
|
||||
{
|
||||
public Utf8StringWriter(StringBuilder sb) : base(sb) { }
|
||||
public override Encoding Encoding { get { return Encoding.UTF8; } }
|
||||
}
|
||||
|
||||
private string RequestWhoIsToken(string ssoTicket)
|
||||
{
|
||||
try
|
||||
{
|
||||
var xmlResponse = WhoIsRequest(ssoTicket);
|
||||
var xmlResponseDocument = new XmlDocument();
|
||||
xmlResponseDocument.LoadXml(xmlResponse);
|
||||
xmlResponseDocument.RemoveChild(xmlResponseDocument.FirstChild);
|
||||
|
||||
var unSuccessful = !Convert.ToBoolean(xmlResponseDocument.DocumentElement.Attributes["Successful"].Value);
|
||||
if (unSuccessful)
|
||||
{
|
||||
var exceptionCode = xmlResponseDocument.DocumentElement.Attributes["ExceptionCode"].Value;
|
||||
var exceptionMessage = xmlResponseDocument.DocumentElement.Attributes["ExceptionMessage"].Value;
|
||||
throw new Exception($"Unsuccessfull direct signon. ExceptionCode: {exceptionCode}, ExceptionMessage: {exceptionMessage}");
|
||||
}
|
||||
|
||||
return xmlResponseDocument.InnerXml;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Failure to request a who is token. Exception: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
private string WhoIsRequest(string ssoTicket)
|
||||
{
|
||||
var xmlRequest = new StringBuilder();
|
||||
var settings = new XmlWriterSettings()
|
||||
{
|
||||
Indent = true
|
||||
};
|
||||
|
||||
using (Utf8StringWriter str = new Utf8StringWriter(xmlRequest))
|
||||
using (XmlWriter writer = XmlWriter.Create(str, settings))
|
||||
{
|
||||
writer.WriteStartDocument();
|
||||
writer.WriteStartElement("WhoIsRequest");
|
||||
writer.WriteAttributeString("MessageDateTime",
|
||||
System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime.ToString(DateTime.Now));
|
||||
writer.WriteAttributeString("TrackingId", Guid.NewGuid().ToString());
|
||||
writer.WriteAttributeString("SSOTicket", ssoTicket);
|
||||
writer.WriteElementString("LookupSSOTicket", ssoTicket);
|
||||
writer.WriteEndDocument();
|
||||
}
|
||||
|
||||
var productIntegration = new ProductIntegration()
|
||||
{
|
||||
Url = _soapConfiguration.SafUrl,
|
||||
UseDefaultCredentials = true,
|
||||
Timeout = WhoIsTokenRequestTimeOut
|
||||
};
|
||||
var xmlResponse = productIntegration.WhoIs(xmlRequest.ToString());
|
||||
|
||||
return xmlResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public class CoreSoapRequest : ICoreSoapRequest
|
||||
{
|
||||
private readonly ICoreSoapConnection _coreSoapConnection;
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
|
||||
public CoreSoapRequest(ICoreSoapConnection coreSoapConnection,
|
||||
SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_coreSoapConnection = coreSoapConnection;
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public TResponse SubmitRequest<TRequest, TResponse>(TRequest request)
|
||||
where TRequest : RequestBase
|
||||
where TResponse : ResponseBase
|
||||
{
|
||||
var transactionInput = _coreSoapConnection.CreateTransactionInput(request);
|
||||
var output = SubmitTransactionInput(transactionInput);
|
||||
var response = (TResponse)output.Output.Responses[0];
|
||||
return response;
|
||||
}
|
||||
|
||||
public List<TResponse> SubmitRequests<TRequest, TResponse>(List<TRequest> requests)
|
||||
where TRequest : RequestBase
|
||||
where TResponse : ResponseBase
|
||||
{
|
||||
var transaction = _coreSoapConnection.CreateTransactionInput(requests);
|
||||
var output = SubmitTransactionInput(transaction);
|
||||
var responses = new List<TResponse>();
|
||||
|
||||
foreach (var outputResponse in output.Output.Responses)
|
||||
{
|
||||
responses.Add((TResponse)outputResponse);
|
||||
}
|
||||
|
||||
return responses;
|
||||
}
|
||||
|
||||
private TransactionOutput SubmitTransactionInput(TransactionInput transactionInput)
|
||||
{
|
||||
var client = new CoreApiServiceClient(_soapConfiguration.Endpoint);
|
||||
TransactionOutput output = client.SubmitRequest(transactionInput);
|
||||
|
||||
if (output?.Output?.UserAuthentication == null || output?.Output?.Responses == null)
|
||||
{
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
if (output.Output.UserAuthentication.Errors != null)
|
||||
{
|
||||
throw new Exception(output.Output.UserAuthentication.Errors[0].ErrorMessage);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public interface ICoreCmcConnection
|
||||
{
|
||||
Cmc.Transaction<TRequest> CreateSocketTransactionRequest<TRequest> (TRequest request);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public interface ICoreSoapConnection
|
||||
{
|
||||
TransactionInput CreateTransactionInput<TRequest>(TRequest request) where TRequest : RequestBase;
|
||||
TransactionInput CreateTransactionInput<TRequest>(List<TRequest> request) where TRequest : RequestBase;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities
|
||||
{
|
||||
public interface ICoreSoapRequest
|
||||
{
|
||||
TResponse SubmitRequest<TRequest, TResponse>(TRequest request)
|
||||
where TRequest : RequestBase
|
||||
where TResponse : ResponseBase;
|
||||
|
||||
List<TResponse> SubmitRequests<TRequest, TResponse>(List<TRequest> requests)
|
||||
where TRequest : RequestBase
|
||||
where TResponse : ResponseBase;
|
||||
}
|
||||
}
|
||||
+1370
File diff suppressed because it is too large
Load Diff
+95245
File diff suppressed because it is too large
Load Diff
+47
@@ -0,0 +1,47 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class AccountDao : BaseDao, IAccountDao
|
||||
{
|
||||
private const string AvailableMethodCode = "ABHP";
|
||||
|
||||
public AccountDao(ICoreSoapRequest coreSoapConnection) : base(coreSoapConnection)
|
||||
{
|
||||
}
|
||||
|
||||
public AccountDetailInquiryResponse FindAccountByAccountNumber(long accountNumber)
|
||||
{
|
||||
var accountDetailInquiryRequest = new AccountDetailInquiryRequest()
|
||||
{
|
||||
AccountNumber = accountNumber,
|
||||
AvailableMethodCode = AvailableMethodCode,
|
||||
IsExternalEntity = false,
|
||||
IsGetRTXNData = false
|
||||
};
|
||||
|
||||
var response =
|
||||
_coreSoapRequest.SubmitRequest<AccountDetailInquiryRequest, AccountDetailInquiryResponse>(
|
||||
accountDetailInquiryRequest);
|
||||
return response;
|
||||
}
|
||||
|
||||
public AccountMaintenanceResponse SendAccountMaintenanceRequest(AccountMaintenanceRequest accountMaintenanceRequest)
|
||||
{
|
||||
var response = _coreSoapRequest.SubmitRequest<AccountMaintenanceRequest, AccountMaintenanceResponse>(accountMaintenanceRequest);
|
||||
return response;
|
||||
}
|
||||
|
||||
public AccountAnalysisMaintenanceResponse SendAccountAnalysisMaintenanceRequest(AccountAnalysisMaintenanceRequest accountAnalysisMaintenanceRequest)
|
||||
{
|
||||
var response = _coreSoapRequest.SubmitRequest<AccountAnalysisMaintenanceRequest, AccountAnalysisMaintenanceResponse>(accountAnalysisMaintenanceRequest);
|
||||
return response;
|
||||
}
|
||||
|
||||
public OrgMaintenanceResponse SendOrgMaintenanceRequest(OrgMaintenanceRequest orgMaintenanceRequest)
|
||||
{
|
||||
var response = _coreSoapRequest.SubmitRequest<OrgMaintenanceRequest, OrgMaintenanceResponse>(orgMaintenanceRequest);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public abstract class BaseDao
|
||||
{
|
||||
protected readonly ICoreSoapRequest _coreSoapRequest;
|
||||
|
||||
public BaseDao(ICoreSoapRequest coreSoapRequest)
|
||||
{
|
||||
_coreSoapRequest = coreSoapRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class CollateralMaintenanceDao: BaseDao, ICollateralMaintenanceDao
|
||||
{
|
||||
public CollateralMaintenanceDao(ICoreSoapRequest coreSoapConnection) : base(coreSoapConnection)
|
||||
{
|
||||
}
|
||||
|
||||
public CollateralMaintenanceResponse AddCollateralMaintenanceByPropertyNumber(CollateralMaintenanceRequest request)
|
||||
{
|
||||
return _coreSoapRequest.SubmitRequest<CollateralMaintenanceRequest, CollateralMaintenanceResponse>(request);
|
||||
}
|
||||
|
||||
public CollateralSearchResponse FindCollateralMaintenanceByPropertyNumber(long propertyNumber)
|
||||
{
|
||||
var collateralRequest = new CollateralSearchRequest();
|
||||
collateralRequest.PropertyCollateral = new PropertyCollateralRequest();
|
||||
collateralRequest.PropertyCollateral.PropertyNumber = propertyNumber;
|
||||
var response = _coreSoapRequest.SubmitRequest<CollateralSearchRequest, CollateralSearchResponse>(collateralRequest);
|
||||
return response;
|
||||
}
|
||||
|
||||
public CollateralMaintenanceResponse UpdateCollateralMaintenanceByPropertyNumber(CollateralMaintenanceRequest request)
|
||||
{
|
||||
return _coreSoapRequest.SubmitRequest<CollateralMaintenanceRequest, CollateralMaintenanceResponse>(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface IAccountDao
|
||||
{
|
||||
AccountDetailInquiryResponse FindAccountByAccountNumber(long accountNumber);
|
||||
AccountMaintenanceResponse SendAccountMaintenanceRequest(AccountMaintenanceRequest accountMaintenanceRequest);
|
||||
AccountAnalysisMaintenanceResponse SendAccountAnalysisMaintenanceRequest(AccountAnalysisMaintenanceRequest accountAnalysisMaintenanceRequest);
|
||||
OrgMaintenanceResponse SendOrgMaintenanceRequest(OrgMaintenanceRequest orgMaintenanceRequest);
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface ICollateralMaintenanceDao
|
||||
{
|
||||
CollateralSearchResponse FindCollateralMaintenanceByPropertyNumber(long propertyNumber);
|
||||
CollateralMaintenanceResponse AddCollateralMaintenanceByPropertyNumber(CollateralMaintenanceRequest request);
|
||||
CollateralMaintenanceResponse UpdateCollateralMaintenanceByPropertyNumber(CollateralMaintenanceRequest request);
|
||||
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface IIndirectLoanDao
|
||||
{
|
||||
Cmc.Transaction<TRequest> UpdateDealerOriginalBalance<TRequest>(Cmc.Transaction<TRequest> transaction);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface IMonetaryTransactionDao
|
||||
{
|
||||
List<MonetaryTransactionResponse> AddMonetaryTransactions (List<MonetaryTransactionRequest> request);
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface IPersonAgreementDao
|
||||
{
|
||||
PersonAgreementMaintenanceResponse SendPersonAgreementMaintenanceRequest(PersonAgreementMaintenanceRequest personAgreementMaintenanceRequest);
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public interface ITaxDao
|
||||
{
|
||||
GetTaxIdDataResponse GetTaxIdData(long taxId);
|
||||
}
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using Serilog;
|
||||
using System.Xml.Serialization;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class IndirectLoanDao : IIndirectLoanDao
|
||||
{
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
|
||||
public IndirectLoanDao (SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public Cmc.Transaction<TRequest> UpdateDealerOriginalBalance<TRequest>(Cmc.Transaction<TRequest> transaction)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SendRequest<TRequest>(transaction);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while updating accounts");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
private Cmc.Transaction<TRequest> SendRequest<TRequest>(Cmc.Transaction<TRequest> transaction)
|
||||
{
|
||||
byte[] byteBuffer = new byte[50000];
|
||||
byte[] message;
|
||||
int bytesSent;
|
||||
int bytesReceived;
|
||||
|
||||
IPAddress ipAddress = IPAddress.Parse(_soapConfiguration.IPAddress);
|
||||
IPEndPoint remoteEP = new IPEndPoint(ipAddress, _soapConfiguration.PortId);
|
||||
Socket socketSender = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
|
||||
try
|
||||
{
|
||||
socketSender.SendTimeout = _soapConfiguration.SocketTimeout;
|
||||
socketSender.ReceiveTimeout = _soapConfiguration.SocketTimeout;
|
||||
socketSender.Connect(remoteEP);
|
||||
string xmlString;
|
||||
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Cmc.Transaction<TRequest>));
|
||||
|
||||
using (var stringWriter = new StringWriter())
|
||||
{
|
||||
using (XmlWriter writer = XmlWriter.Create(stringWriter))
|
||||
{
|
||||
xmlSerializer.Serialize(writer, transaction);
|
||||
xmlString = stringWriter.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
message = Encoding.ASCII.GetBytes(xmlString);
|
||||
bytesSent = socketSender.Send(message);
|
||||
bytesReceived = socketSender.Receive(byteBuffer);
|
||||
|
||||
string response = Encoding.ASCII.GetString(byteBuffer, 0, bytesReceived);
|
||||
|
||||
var transactionResult = new Cmc.Transaction<TRequest>();
|
||||
using (var stringReader = new StringReader(response))
|
||||
{
|
||||
transactionResult = (Cmc.Transaction<TRequest>)xmlSerializer.Deserialize(stringReader);
|
||||
}
|
||||
socketSender.Shutdown(SocketShutdown.Both);
|
||||
socketSender.Close();
|
||||
|
||||
return transactionResult;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
socketSender.Shutdown(SocketShutdown.Both);
|
||||
socketSender.Close();
|
||||
Log.Error(ex, $"There was an error while updating accounts.");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class MonetaryTransactionDao : BaseDao, IMonetaryTransactionDao
|
||||
{
|
||||
public MonetaryTransactionDao(ICoreSoapRequest coreSoapConnection) : base(coreSoapConnection)
|
||||
{
|
||||
}
|
||||
|
||||
public List<MonetaryTransactionResponse> AddMonetaryTransactions (List<MonetaryTransactionRequest> requests)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _coreSoapRequest.SubmitRequests<MonetaryTransactionRequest, MonetaryTransactionResponse>(requests);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
throw exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class PersonAgreementDao : BaseDao, IPersonAgreementDao
|
||||
{
|
||||
|
||||
public PersonAgreementDao(ICoreSoapRequest coreSoapConnection) : base(coreSoapConnection)
|
||||
{
|
||||
}
|
||||
|
||||
public PersonAgreementMaintenanceResponse SendPersonAgreementMaintenanceRequest(PersonAgreementMaintenanceRequest personAgreementMaintenanceRequest)
|
||||
{
|
||||
var response = _coreSoapRequest.SubmitRequest<PersonAgreementMaintenanceRequest, PersonAgreementMaintenanceResponse>(personAgreementMaintenanceRequest);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.DataAccess
|
||||
{
|
||||
public class TaxDao : BaseDao, ITaxDao
|
||||
{
|
||||
private const int MethodCodeForTaxIdRequest = 1;
|
||||
|
||||
public TaxDao(ICoreSoapRequest coreSoapConnection) : base(coreSoapConnection)
|
||||
{
|
||||
}
|
||||
|
||||
public GetTaxIdDataResponse GetTaxIdData(long taxId)
|
||||
{
|
||||
|
||||
var taxIdDataRequest = new GetTaxIdDataRequest
|
||||
{
|
||||
MethodNumber = MethodCodeForTaxIdRequest,
|
||||
ReferenceNumber = taxId.ToString()
|
||||
};
|
||||
|
||||
return _coreSoapRequest.SubmitRequest<GetTaxIdDataRequest, GetTaxIdDataResponse>(taxIdDataRequest);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<%@ Application Codebehind="Global.asax.cs" Inherits="LCU.API.Internal.CoreSoapApiWrapper.WebApiApplication" Language="C#" %>
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
using Serilog;
|
||||
using System.Net;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.App_Start;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper
|
||||
{
|
||||
public class WebApiApplication : System.Web.HttpApplication
|
||||
{
|
||||
protected void Application_Start()
|
||||
{
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
IocBootstrapper.Run();
|
||||
GlobalConfiguration.Configure(WebApiConfig.Register);
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
|
||||
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings
|
||||
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
|
||||
GlobalConfiguration.Configuration.Formatters
|
||||
.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
|
||||
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.ReadFrom.AppSettings()
|
||||
.Enrich.WithMachineName()
|
||||
.Enrich.WithEnvironmentUserName()
|
||||
.Enrich.WithHttpRequestClientHostIP()
|
||||
.Enrich.WithHttpRequestClientHostName()
|
||||
.Enrich.WithHttpRequestRawUrl()
|
||||
.Enrich.WithHttpRequestType()
|
||||
.Enrich.WithHttpRequestUrl()
|
||||
.Enrich.WithHttpRequestUrlReferrer()
|
||||
.Enrich.WithWebApiActionName()
|
||||
.Enrich.WithWebApiControllerName()
|
||||
.Enrich.WithWebApiRouteData()
|
||||
.Enrich.WithWebApiRouteTemplate()
|
||||
.CreateLogger();
|
||||
|
||||
Log.Information("Core Soap Api Wrapper Starting Up");
|
||||
}
|
||||
}
|
||||
}
|
||||
+339
@@ -0,0 +1,339 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>
|
||||
</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LCU.API.Internal.CoreSoapApiWrapper</RootNamespace>
|
||||
<AssemblyName>LCU.API.Internal.CoreSoapApiWrapper</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<MvcBuildViews>false</MvcBuildViews>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<Use64BitIISExpress />
|
||||
<IISExpressSSLPort>44329</IISExpressSSLPort>
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Autofac, Version=4.9.2.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Autofac.4.9.2\lib\net45\Autofac.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Autofac.Integration.WebApi, Version=4.2.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Autofac.WebApi2.4.2.1\lib\net45\Autofac.Integration.WebApi.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Azure.Documents.Client, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.Azure.DocumentDB.2.4.1\lib\net45\Microsoft.Azure.Documents.Client.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.2.10.0\lib\net45\Serilog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Enrichers.Environment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Enrichers.Environment.2.1.3\lib\net45\Serilog.Enrichers.Environment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Formatting.Compact, Version=1.1.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Formatting.Compact.1.1.0\lib\net452\Serilog.Formatting.Compact.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Settings.AppSettings, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Settings.AppSettings.2.2.2\lib\net45\Serilog.Settings.AppSettings.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Sinks.AzureDocumentDB, Version=4.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Sinks.AzureDocumentDB.4.0.0\lib\net45\Serilog.Sinks.AzureDocumentDB.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Sinks.Console, Version=3.1.1.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Sinks.Console.3.1.1\lib\net45\Serilog.Sinks.Console.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Sinks.File, Version=5.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Sinks.File.5.0.0\lib\net45\Serilog.Sinks.File.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Sinks.PeriodicBatching, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Sinks.PeriodicBatching.2.3.0\lib\net45\Serilog.Sinks.PeriodicBatching.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Serilog.Sinks.Seq, Version=5.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Serilog.Sinks.Seq.5.0.0\lib\net45\Serilog.Sinks.Seq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SerilogWeb.Classic, Version=5.0.0.0, Culture=neutral, PublicKeyToken=9462ddd55fbc0e7f, processorArchitecture=MSIL">
|
||||
<HintPath>packages\SerilogWeb.Classic.5.0.48\lib\net45\SerilogWeb.Classic.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SerilogWeb.Classic.WebApi, Version=4.0.0.0, Culture=neutral, PublicKeyToken=9462ddd55fbc0e7f, processorArchitecture=MSIL">
|
||||
<HintPath>packages\SerilogWeb.Classic.WebApi.4.0.5\lib\net45\SerilogWeb.Classic.WebApi.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Runtime.Caching" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Web.Cors, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.AspNet.Cors.5.2.4\lib\net45\System.Web.Cors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Abstractions" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Http.Cors, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.AspNet.WebApi.Cors.5.2.4\lib\net45\System.Web.Http.Cors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Routing" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json">
|
||||
<HintPath>packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http">
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.WebRequest">
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http.WebHost, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Optimization">
|
||||
<HintPath>packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="WebActivatorEx, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\WebActivatorEx.2.0\lib\net40\WebActivatorEx.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WebGrease">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Antlr3.Runtime">
|
||||
<Private>True</Private>
|
||||
<HintPath>packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="App_Start\AssignSecurityRequirements.cs" />
|
||||
<Compile Include="Attributes\ApiKeyAuthorizeAttribute.cs" />
|
||||
<Compile Include="App_Start\FilterConfig.cs" />
|
||||
<Compile Include="App_Start\IocBootstrapper.cs" />
|
||||
<Compile Include="App_Start\IocConfig.cs" />
|
||||
<Compile Include="App_Start\RouteConfig.cs" />
|
||||
<Compile Include="App_Start\SwaggerConfig.cs" />
|
||||
<Compile Include="App_Start\WebApiConfig.cs" />
|
||||
<Compile Include="Controllers\CollateralMaintenanceController.cs" />
|
||||
<Compile Include="Controllers\PersonAgreementController.cs" />
|
||||
<Compile Include="Controllers\IndirectLoanController.cs" />
|
||||
<Compile Include="Controllers\MonetaryTransactionController.cs" />
|
||||
<Compile Include="Controllers\AccountController.cs" />
|
||||
<Compile Include="Controllers\StatusController.cs" />
|
||||
<Compile Include="Controllers\TaxController.cs" />
|
||||
<Compile Include="CoreSoapUtilities\CoreCMCConnection.cs" />
|
||||
<Compile Include="CoreSoapUtilities\CoreSoapConnection.cs" />
|
||||
<Compile Include="CoreSoapUtilities\CoreSoapRequest.cs" />
|
||||
<Compile Include="CoreSoapUtilities\ICoreCMCConnection.cs" />
|
||||
<Compile Include="CoreSoapUtilities\ICoreSoapConnection.cs" />
|
||||
<Compile Include="CoreSoapUtilities\ICoreSoapRequest.cs" />
|
||||
<Compile Include="DataAccess\CollateralMaintenanceDao.cs" />
|
||||
<Compile Include="DataAccess\ICollateralMaintenanceDao.cs" />
|
||||
<Compile Include="DataAccess\IPersonAgreementDao.cs" />
|
||||
<Compile Include="DataAccess\ITaxDao.cs" />
|
||||
<Compile Include="DataAccess\PersonAgreementDao.cs" />
|
||||
<Compile Include="DataAccess\IIndirectLoanDao.cs" />
|
||||
<Compile Include="DataAccess\IMonetaryTransactionDao.cs" />
|
||||
<Compile Include="DataAccess\IndirectLoanDao.cs" />
|
||||
<Compile Include="DataAccess\MonetaryTransactionDao.cs" />
|
||||
<Compile Include="DataAccess\AccountDao.cs" />
|
||||
<Compile Include="DataAccess\BaseDao.cs" />
|
||||
<Compile Include="DataAccess\IAccountDao.cs" />
|
||||
<Compile Include="DataAccess\TaxDao.cs" />
|
||||
<Compile Include="Global.asax.cs">
|
||||
<DependentUpon>Global.asax</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Models\CMC\Account.cs" />
|
||||
<Compile Include="Models\CMC\Error.cs" />
|
||||
<Compile Include="Models\CMC\Output.cs" />
|
||||
<Compile Include="Models\CMC\Response.cs" />
|
||||
<Compile Include="Models\Constants\EntityTypeCodes.cs" />
|
||||
<Compile Include="Models\Requests\AccountContractDateUpdateRequest.cs" />
|
||||
<Compile Include="Models\Requests\AccountCreditReportTypeUpdateRequest.cs" />
|
||||
<Compile Include="Models\Requests\AccountAnalysisGroupMaintenanceRequest.cs" />
|
||||
<Compile Include="Models\Requests\AccountNickNameUpdateRequest.cs" />
|
||||
<Compile Include="Models\Requests\AccountLtvUpdateRequest.cs" />
|
||||
<Compile Include="Models\Requests\CreateAccountRequest.cs" />
|
||||
<Compile Include="Models\Requests\CreateCollateralMaintenanceRequest.cs" />
|
||||
<Compile Include="Models\Requests\OrganizationMaintenanceRequest.cs" />
|
||||
<Compile Include="Models\Requests\CreateOrganizationAccountRequest.cs" />
|
||||
<Compile Include="Models\Requests\CreatePersonAccountRequest.cs" />
|
||||
<Compile Include="Models\Requests\FundRequest.cs" />
|
||||
<Compile Include="Models\Requests\FundsToAccountRequest.cs" />
|
||||
<Compile Include="Models\Requests\AccountBranchUpdateRequest.cs" />
|
||||
<Compile Include="Models\Requests\DetailType.cs" />
|
||||
<Compile Include="Models\Requests\PersonAgreementDetailTypeRequest.cs" />
|
||||
<Compile Include="Models\Requests\UserFieldRequest.cs" />
|
||||
<Compile Include="Models\Responses\BasicResponse.cs" />
|
||||
<Compile Include="Models\Responses\CreatedAccountResponse.cs" />
|
||||
<Compile Include="Models\Responses\UpdateDealerOriginalBalanceResponse.cs" />
|
||||
<Compile Include="Models\CMC\Transaction.cs" />
|
||||
<Compile Include="Models\CMC\AccountRequest.cs" />
|
||||
<Compile Include="Models\CMC\Input.cs" />
|
||||
<Compile Include="Models\CMC\UserAuthentication.cs" />
|
||||
<Compile Include="Models\EnvironmentView.cs" />
|
||||
<Compile Include="Models\Requests\GroupedMonetaryTransactionsRequest.cs" />
|
||||
<Compile Include="Models\SoapConfiguration.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="CoreSoapUtilities\SafLevel1Proxy.cs" />
|
||||
<Compile Include="CoreSoapUtilities\ServiceReference.cs" />
|
||||
<Compile Include="Services\CollateralMaintenanceService.cs" />
|
||||
<Compile Include="Services\ICollateralMaintenanceService.cs" />
|
||||
<Compile Include="Services\IPersonAgreementService.cs" />
|
||||
<Compile Include="Services\PersonAgreementService.cs" />
|
||||
<Compile Include="Services\IIndirectLoanService.cs" />
|
||||
<Compile Include="Services\IMonetaryTransactionService.cs" />
|
||||
<Compile Include="Services\IndirectLoanService.cs" />
|
||||
<Compile Include="Services\MonetaryTransactionService.cs" />
|
||||
<Compile Include="Services\AccountService.cs" />
|
||||
<Compile Include="Services\IAccountService.cs" />
|
||||
<Compile Include="Services\TaxService.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="favicon.ico" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.Debug.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Web.Release.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Web.Uat.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Connected Services\" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Uat|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>59554</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>https://localhost:44329/</IISUrl>
|
||||
<OverrideIISAppRootUrl>True</OverrideIISAppRootUrl>
|
||||
<IISAppRootUrl>https://localhost:44329/swagger/ui/index</IISAppRootUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\Microsoft.Azure.DocumentDB.2.4.1\build\Microsoft.Azure.DocumentDB.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Azure.DocumentDB.2.4.1\build\Microsoft.Azure.DocumentDB.targets'))" />
|
||||
<!-- <Error Condition="!Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />-->
|
||||
</Target>
|
||||
<Import Project="packages\Microsoft.Azure.DocumentDB.2.4.1\build\Microsoft.Azure.DocumentDB.targets" Condition="Exists('packages\Microsoft.Azure.DocumentDB.2.4.1\build\Microsoft.Azure.DocumentDB.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target> -->
|
||||
</Project>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30804.86
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LCU.API.Internal.CoreSoapApiWrapper", "LCU.API.Internal.CoreSoapApiWrapper.csproj", "{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LCU.API.Internal.CoreSoapApiWrapperTest", "..\LCU.API.Internal.CoreSoapApiWrapperTest\LCU.API.Internal.CoreSoapApiWrapperTest.csproj", "{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Uat|Any CPU = Uat|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Uat|Any CPU.ActiveCfg = Uat|Any CPU
|
||||
{8D3B1FC1-7D69-4CBA-932C-4C8B49047394}.Uat|Any CPU.Build.0 = Uat|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Uat|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C6DFD7D1-6678-4A6C-A74A-B0FDFFD71DA3}.Uat|Any CPU.Build.0 = Debug|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {CA8CD165-2FAE-4F34-B3A0-6F30295E3F7E}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class Account
|
||||
{
|
||||
[XmlAttribute("acctNbr")]
|
||||
public string AcctNbr { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class AccountRequest
|
||||
{
|
||||
[XmlAttribute("reqTypCd")]
|
||||
public string ReqTypCd { get; set; }
|
||||
|
||||
public Account Account { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class Error
|
||||
{
|
||||
public string ErrorMsg { get; set; }
|
||||
|
||||
public int ErrorNbr { get; set; }
|
||||
|
||||
public string AcctNbr { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class Input<TRequest>
|
||||
{
|
||||
[XmlArrayItem("Request")]
|
||||
public List<TRequest> Requests { get; set; }
|
||||
|
||||
public UserAuthentication UserAuthentication { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class Output
|
||||
{
|
||||
[XmlArrayItem("Response")]
|
||||
public List<Response> Responses { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
[XmlType("Response")]
|
||||
public class Response
|
||||
{
|
||||
[IgnoreDataMember]
|
||||
[XmlAttribute("successYN")]
|
||||
public string SuccessYN { get; set; }
|
||||
|
||||
[IgnoreDataMember]
|
||||
[XmlArrayItem("Error")]
|
||||
public List<Error> Errors { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
[XmlRoot("Transaction")]
|
||||
public class Transaction<TRequest>
|
||||
{
|
||||
public Input<TRequest> Input { get; set; }
|
||||
|
||||
public Output Output { get; set; }
|
||||
|
||||
[XmlAttribute("commitRollbackYN")]
|
||||
public string CommitRollbackYN { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc
|
||||
{
|
||||
public class UserAuthentication
|
||||
{
|
||||
[XmlAttribute("authTyp")]
|
||||
public string AuthTyp { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string ApplNbr { get; set; }
|
||||
|
||||
public string PhysAddr { get; set; }
|
||||
|
||||
public string Passwd { get; set; }
|
||||
|
||||
[XmlAttribute("successYN")]
|
||||
public string SuccessYN { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Constants
|
||||
{
|
||||
public static class EntityTypeCodes
|
||||
{
|
||||
public const string PersonEntityTypeCode = "PERS";
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models
|
||||
{
|
||||
public class EnvironmentView
|
||||
{
|
||||
public string Application { get; set; }
|
||||
public DateTime CurrentDate { get; set; }
|
||||
public string BuildVersion { get; set; }
|
||||
public DateTime? BuildDate { get; set; }
|
||||
public string Environment { get; set; }
|
||||
public string ApexConn { get; set; }
|
||||
}
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountAnalysisGroupMaintenanceRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
|
||||
public bool IsGenerateAnalysisStatement { get; set; }
|
||||
|
||||
public bool IsPrintAnalysisStatement { get; set; }
|
||||
|
||||
public bool IsUseForServiceCharge { get; set; }
|
||||
|
||||
public static AccountAnalysisMaintenanceRequest UpdateAccountAnalysisMaintenanceRequest(AccountAnalysisGroupMaintenanceRequest accountAnalysisGroupMaintenanceRequest)
|
||||
{
|
||||
var accountList = new List<AccountAnalysisMaintenance>()
|
||||
{
|
||||
new AccountAnalysisMaintenance()
|
||||
{
|
||||
AccountNumber = accountAnalysisGroupMaintenanceRequest.AccountNumber
|
||||
}
|
||||
};
|
||||
|
||||
var accountGroupsList = new List<AccountGroupMaintenance>()
|
||||
{
|
||||
new AccountGroupMaintenance()
|
||||
{
|
||||
AccountGroupNumber = 0, //If new group number assign zero
|
||||
IsGenerateAnalysisStatement = accountAnalysisGroupMaintenanceRequest.IsGenerateAnalysisStatement,
|
||||
IsPrintAnalysisStatement = accountAnalysisGroupMaintenanceRequest.IsPrintAnalysisStatement,
|
||||
IsUseForServiceCharge = accountAnalysisGroupMaintenanceRequest.IsUseForServiceCharge,
|
||||
ServiceChargeAccountNumber = accountAnalysisGroupMaintenanceRequest.AccountNumber,
|
||||
StatementAccountNumber = accountAnalysisGroupMaintenanceRequest.AccountNumber,
|
||||
Accounts = accountList.ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
var accountAnalysisMaintenanceRequest = new AccountAnalysisMaintenanceRequest()
|
||||
{
|
||||
AccountGroups = accountGroupsList.ToArray()
|
||||
};
|
||||
|
||||
return accountAnalysisMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountBranchUpdateRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public long BranchOrganizationNumber { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintenanceRequest(AccountBranchUpdateRequest updateAccountRequest)
|
||||
{
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountNumber = updateAccountRequest.AccountNumber,
|
||||
BranchOrganizationNumber = updateAccountRequest.BranchOrganizationNumber,
|
||||
IsAccountMaintenance = true
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountContractDateUpdateRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public DateTime ContractDate { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintenanceRequest(AccountContractDateUpdateRequest accountContractDateUpdateRequest)
|
||||
{
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountNumber = accountContractDateUpdateRequest.AccountNumber,
|
||||
IsAccountMaintenance = true,
|
||||
ContractDate = accountContractDateUpdateRequest.ContractDate
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountCreditReportTypeUpdateRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public string CreditReportType { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintenanceRequest(AccountCreditReportTypeUpdateRequest accountCreditReportTypeUpdateRequest)
|
||||
{
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountNumber = accountCreditReportTypeUpdateRequest.AccountNumber,
|
||||
IsAccountMaintenance = true,
|
||||
AccountLoanDetail = new AccountLoanDetail()
|
||||
{
|
||||
AccountLoanInformation = new AccountLoanInformation()
|
||||
{
|
||||
CreditReportTypeCode = accountCreditReportTypeUpdateRequest.CreditReportType
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountLtvUpdateRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public double LoanToValue { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintenanceRequest(AccountLtvUpdateRequest accountLtvUpdateRequest)
|
||||
{
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountNumber = accountLtvUpdateRequest.AccountNumber,
|
||||
IsAccountMaintenance = true,
|
||||
AccountLoanDetail = new AccountLoanDetail()
|
||||
{
|
||||
AccountLoanInformation = new AccountLoanInformation()
|
||||
{
|
||||
OrignalLTVRatio = accountLtvUpdateRequest.LoanToValue
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class AccountNickNameUpdateRequest
|
||||
{
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public string AccountDescription { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintenanceRequest(AccountNickNameUpdateRequest updateAccountRequest)
|
||||
{
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountNumber = updateAccountRequest.AccountNumber,
|
||||
AccountDescription = updateAccountRequest.AccountDescription,
|
||||
IsAccountMaintenance = true
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class CreateAccountRequest
|
||||
{
|
||||
|
||||
[Required, Display(Description = "ACCTDESC - The Account Description column is a textual description of the account.")]
|
||||
public string AccountDescription { get; set; }
|
||||
|
||||
[Required]
|
||||
public int BankOrganizationNumber { get; set; }
|
||||
|
||||
[Required]
|
||||
public int BranchOrganizationNumber { get; set; }
|
||||
|
||||
[Required, Display(Description = "CURRMIACCTTYPCD -The Current Minor Account Type Code identifies the secondary product grouping for the account.")]
|
||||
public string CurrentMinorAccountTypeCode { get; set; }
|
||||
|
||||
[Required]
|
||||
public string DeliveryMethodCode { get; set; }
|
||||
|
||||
[Required, Display(Description = "MJACCTTYPCD - The Major Account Type Code identifies the highest product grouping for the account.")]
|
||||
public string MajorAccountTypeCode { get; set; }
|
||||
|
||||
[Required, Display(Description = "OWNCD - The Ownership Code identifies the kind of ownership that pertains to the account.")]
|
||||
public string OwnershipCode { get; set; }
|
||||
|
||||
[Required, Display(Description = "TAXRPTFOROWNYN - The Tax Reported For Owner indicates if the account has a tax reported for owner. Y = Yes N = No")]
|
||||
public bool IsTaxReportedForOwner { get; set; }
|
||||
|
||||
[Required, Display(Description = "TAXRPTFORSIGYN - The Tax Reported For Signatory indicates if the account has a tax reported for signator. Y = Yes N = NO")]
|
||||
public bool IsTaxReportedForSigner { get; set; }
|
||||
|
||||
[Required, Display(Description = "VALIDYN - The Valid indicator indicates if the account has been validated for transaction processing. Validation does NOT necessarily mean approval. Y = Yes N = No")]
|
||||
public bool IsValid { get; set; }
|
||||
|
||||
[Required]
|
||||
public string CurrentAccountStatusCode { get; set; }
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class CreateCollateralMaintenanceRequest
|
||||
{
|
||||
[Required]
|
||||
public long PropertyNumber { get; set; }
|
||||
[Required]
|
||||
public string Value { get; set; }
|
||||
[Required]
|
||||
public string Code { get; set; }
|
||||
|
||||
public static CollateralMaintenanceRequest CreateMaintenanceRequest(UserFieldRequest request)
|
||||
{
|
||||
var userFields = new List<UserField>()
|
||||
{
|
||||
new UserField()
|
||||
{
|
||||
Code = request.UserFieldCode,
|
||||
Value = request.Value
|
||||
}
|
||||
};
|
||||
|
||||
var newAccounts = new List<CollateralMaintenancePropertyRequest>()
|
||||
{
|
||||
new CollateralMaintenancePropertyRequest()
|
||||
{
|
||||
PropertyNumber = request.PropertyNumber,
|
||||
UserFields = userFields.ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
var collateralMaintenanceRequest = new CollateralMaintenanceRequest()
|
||||
{
|
||||
PropertyList = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return collateralMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class CreateOrganizationAccountRequest : CreateAccountRequest
|
||||
{
|
||||
[Required]
|
||||
public long OrganizationNumber { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintanceRequest(CreateOrganizationAccountRequest createAccountRequest)
|
||||
{
|
||||
var accountMaintenanceOrganizations = new List<Organization>()
|
||||
{
|
||||
new Organization()
|
||||
{
|
||||
IsTaxReportedForOwner = createAccountRequest.IsTaxReportedForOwner,
|
||||
IsTaxReportedForSigner = createAccountRequest.IsTaxReportedForSigner,
|
||||
OrganizationNumber = createAccountRequest.OrganizationNumber,
|
||||
}
|
||||
};
|
||||
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountDescription = createAccountRequest.AccountDescription,
|
||||
BankOrganizationNumber = createAccountRequest.BankOrganizationNumber,
|
||||
BranchOrganizationNumber = createAccountRequest.BranchOrganizationNumber,
|
||||
CurrentMinorAccountTypeCode = createAccountRequest.CurrentMinorAccountTypeCode,
|
||||
CurrentAccountStatusCode = createAccountRequest.CurrentAccountStatusCode,
|
||||
DeliveryMethodCode = createAccountRequest.DeliveryMethodCode,
|
||||
MajorAccountTypeCode = createAccountRequest.MajorAccountTypeCode,
|
||||
OwnershipCode = createAccountRequest.OwnershipCode,
|
||||
Organizations = accountMaintenanceOrganizations.ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class CreatePersonAccountRequest : CreateAccountRequest
|
||||
{
|
||||
[Required]
|
||||
public long? PersonNumber { get; set; }
|
||||
public string FirstName { get; set; }
|
||||
public string LastName { get; set; }
|
||||
|
||||
public static AccountMaintenanceRequest CreateAccountMaintanceRequest(CreatePersonAccountRequest createAccountRequest)
|
||||
{
|
||||
var accountMaintenancePersons = new List<AccountMaintenancePerson>()
|
||||
{
|
||||
new AccountMaintenancePerson()
|
||||
{
|
||||
Identification = new AccountMaintenanceIdentification()
|
||||
{
|
||||
IsTaxReportedForOwner = createAccountRequest.IsTaxReportedForOwner,
|
||||
IsTaxReportedForSigner = createAccountRequest.IsTaxReportedForSigner,
|
||||
},
|
||||
IsValid = createAccountRequest?.IsValid,
|
||||
IsSupportPatriotActValidation = true,
|
||||
Name = new PersonName()
|
||||
{
|
||||
FirstName = createAccountRequest.FirstName,
|
||||
LastName = createAccountRequest.LastName
|
||||
},
|
||||
PersonNumber = createAccountRequest.PersonNumber,
|
||||
Demographics = new AccountMaintenanceDemographics ()
|
||||
{
|
||||
MemberGroupCode = "REGM"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var newAccounts = new List<MaintenanceAccount>()
|
||||
{
|
||||
new MaintenanceAccount()
|
||||
{
|
||||
AccountDescription = createAccountRequest.AccountDescription,
|
||||
BankOrganizationNumber = createAccountRequest.BankOrganizationNumber,
|
||||
BranchOrganizationNumber = createAccountRequest.BranchOrganizationNumber,
|
||||
CurrentMinorAccountTypeCode = createAccountRequest.CurrentMinorAccountTypeCode,
|
||||
CurrentAccountStatusCode = createAccountRequest.CurrentAccountStatusCode,
|
||||
DeliveryMethodCode = createAccountRequest.DeliveryMethodCode,
|
||||
MajorAccountTypeCode = createAccountRequest.MajorAccountTypeCode,
|
||||
OwnershipCode = createAccountRequest.OwnershipCode,
|
||||
Persons = accountMaintenancePersons.ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
var accountMaintenanceRequest = new AccountMaintenanceRequest()
|
||||
{
|
||||
Accounts = newAccounts.ToArray()
|
||||
};
|
||||
|
||||
return accountMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class DetailType
|
||||
{
|
||||
[Required]
|
||||
public string DetailTypeCode { get; set; }
|
||||
[Required]
|
||||
public string DetailValue { get; set; }
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class FundRequest
|
||||
{
|
||||
[Required]
|
||||
public string ClearingCategoryCode { get; set; }
|
||||
[Required]
|
||||
public double? FundAmount { get; set; }
|
||||
[Required]
|
||||
public string FundTypeCode { get; set; }
|
||||
[Required]
|
||||
public string FundTypeDetailCode { get; set; }
|
||||
|
||||
public static Fund CreateFund(FundRequest fundRequest)
|
||||
{
|
||||
var fund = new Fund()
|
||||
{
|
||||
ClearingCategoryCode = fundRequest.ClearingCategoryCode,
|
||||
FundAmount = fundRequest.FundAmount,
|
||||
FundTypeCode = fundRequest.FundTypeCode,
|
||||
FundTypeDetailCode = fundRequest.FundTypeDetailCode
|
||||
};
|
||||
|
||||
return fund;
|
||||
}
|
||||
|
||||
public static List<Fund> CreateFunds(List<FundRequest> fundRequests)
|
||||
{
|
||||
var funds = new List<Fund>();
|
||||
foreach (FundRequest fundRequest in fundRequests)
|
||||
{
|
||||
var fund = FundRequest.CreateFund(fundRequest);
|
||||
funds.Add(fund);
|
||||
}
|
||||
|
||||
return funds;
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class FundsToAccountRequest
|
||||
{
|
||||
private const string SingleRequestNumber = "1";
|
||||
|
||||
[Required]
|
||||
public long AccountNumber { get; set; }
|
||||
[Required]
|
||||
public string Description { get; set; }
|
||||
[Required]
|
||||
public double? TransactionAmount { get; set; }
|
||||
[Required]
|
||||
public string TransactionTypeCode { get; set; }
|
||||
[Required]
|
||||
public List<FundRequest> FundRequests { get; set; }
|
||||
|
||||
public static MonetaryTransactionRequest CreateMonetaryTransactionRequest(FundsToAccountRequest request, SoapConfiguration soapConfiguration)
|
||||
{
|
||||
var funds = FundRequest.CreateFunds(request.FundRequests);
|
||||
var monetaryTransactionRequest = new MonetaryTransactionRequest()
|
||||
{
|
||||
OverrideCashBoxNumber = long.Parse(soapConfiguration.OverrideCashBoxNumber),
|
||||
ApprovalPersonNumber = long.Parse(soapConfiguration.ApprovalPersonNumber),
|
||||
RequestNumber = SingleRequestNumber,
|
||||
AccountNumber = request.AccountNumber,
|
||||
Description = request.Description,
|
||||
TransactionAmount = request.TransactionAmount,
|
||||
TransactionTypeCode = request.TransactionTypeCode,
|
||||
Funds = funds.ToArray()
|
||||
};
|
||||
|
||||
return monetaryTransactionRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
|
||||
public class GroupedMonetaryTransactionRequest
|
||||
{
|
||||
|
||||
public string ParentRequestNumber { get; set; }
|
||||
|
||||
public List<MonetaryTransactionRequest> MonetaryTransactionRequests { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class OrganizationMaintenanceRequest
|
||||
{
|
||||
|
||||
[Required]
|
||||
public long OrganizationNumber { get; set; }
|
||||
[Required]
|
||||
public long? ControllingPersonNumber { get; set; }
|
||||
|
||||
public static OrgMaintenanceRequest CreateOrgMaintenanceRequest(OrganizationMaintenanceRequest orgMaintenanceRequest)
|
||||
{
|
||||
var orgOwnerPersons = new List<OrganizationOwnerPerson>()
|
||||
{
|
||||
new OrganizationOwnerPerson()
|
||||
{
|
||||
IsControllingPerson = true,
|
||||
OwnerPersonNumber = orgMaintenanceRequest.ControllingPersonNumber,
|
||||
OwnershipPercent = 1
|
||||
}
|
||||
};
|
||||
|
||||
var organizationMaintenanceRequest = new OrgMaintenanceRequest()
|
||||
{
|
||||
OrganizationOwnerPersons = orgOwnerPersons.ToArray(),
|
||||
OrgNumber = orgMaintenanceRequest.OrganizationNumber
|
||||
};
|
||||
|
||||
return organizationMaintenanceRequest;
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class PersonAgreementDetailTypeRequest
|
||||
{
|
||||
[Required]
|
||||
public long PersonNumber { get; set; }
|
||||
[Required]
|
||||
public decimal AgreeNumber { get; set; }
|
||||
[Required]
|
||||
public string AgreeTypeCode { get; set; }
|
||||
[Required]
|
||||
public List<DetailType> DetailTypes { get; set; }
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Requests
|
||||
{
|
||||
public class UserFieldRequest
|
||||
{
|
||||
public long PropertyNumber { get; set; }
|
||||
public string UserFieldCode { get; set; }
|
||||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Responses
|
||||
{
|
||||
public class BasicResponse
|
||||
{
|
||||
public BasicResponse(ResponseBase response)
|
||||
{
|
||||
Success = response.WasSuccessful == null ? true : (bool)response.WasSuccessful;
|
||||
Errors = new List<string>();
|
||||
|
||||
if(response.Errors == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var error in response.Errors)
|
||||
{
|
||||
Errors.Add(error.ErrorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
public bool Success { get; set; }
|
||||
public List<string> Errors { get; set; }
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Responses
|
||||
{
|
||||
public class CreatedAccountResponse
|
||||
{
|
||||
public CreatedAccountResponse(AccountMaintenanceResponse accountMaintenanceResponse)
|
||||
{
|
||||
if (accountMaintenanceResponse?.ResponseAccounts != null && accountMaintenanceResponse?.ResponseAccounts.Length > 0)
|
||||
{
|
||||
AccountNumber = accountMaintenanceResponse?.ResponseAccounts[0]?.AccountNumber;
|
||||
MajorTypeCode = accountMaintenanceResponse?.ResponseAccounts[0]?.MajorTypeCode;
|
||||
MinorTypeCode = accountMaintenanceResponse?.ResponseAccounts[0]?.MinorTypeCode;
|
||||
}
|
||||
|
||||
BasicResponse = new BasicResponse(accountMaintenanceResponse);
|
||||
}
|
||||
|
||||
public long? AccountNumber { get; set; }
|
||||
public string MajorTypeCode { get; set; }
|
||||
public string MinorTypeCode { get; set; }
|
||||
public BasicResponse BasicResponse { get; set; }
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models.Response
|
||||
{
|
||||
[XmlType("Response")]
|
||||
public class UpdateDealerOriginalBalanceResponse
|
||||
{
|
||||
public string AccountNumber { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Models
|
||||
{
|
||||
public class SoapConfiguration
|
||||
{
|
||||
public SoapConfiguration()
|
||||
{
|
||||
int defaultValue;
|
||||
|
||||
SafUrl = ConfigurationManager.AppSettings["soapconnection:safUrl"];
|
||||
DeviceId = ConfigurationManager.AppSettings["soapconnection:deviceId"];
|
||||
UserId = ReadSecret("/vault/secrets/core-soap-api-wrapper-soap-connection-user-id.json") ?? ConfigurationManager.AppSettings["soapconnection:userId"];
|
||||
Password = ReadSecret("/vault/secrets/core-soap-api-wrapper-soap-connection-password.json") ?? ConfigurationManager.AppSettings["soapconnection:password"];
|
||||
EnvironmentCode = ConfigurationManager.AppSettings["soapconnection:prodEnvCd"];
|
||||
DefCode = ConfigurationManager.AppSettings["soapconnection:prodDefCd"];
|
||||
ApplicationId = ConfigurationManager.AppSettings["soapconnection:applId"];
|
||||
Endpoint = ConfigurationManager.AppSettings["soapconnection:endpoint"];
|
||||
ApprovalPersonNumber = ConfigurationManager.AppSettings["soapconnection:approvalpersonnumber"];
|
||||
OverrideCashBoxNumber = ConfigurationManager.AppSettings["soapconnection:overridecashboxnumber"];
|
||||
SocketDeviceId = ConfigurationManager.AppSettings["socketconnection:deviceId"];
|
||||
SocketApplicationId = ConfigurationManager.AppSettings["socketconnection:applId"];
|
||||
SocketUserId = ReadSecret("/vault/secrets/core-soap-api-wrapper-socket-connection-user-id.json") ?? ConfigurationManager.AppSettings["socketconnection:userId"];
|
||||
SocketPassword = ReadSecret("/vault/secrets/core-soap-api-wrapper-socket-connection-password.json") ?? ConfigurationManager.AppSettings["socketconnection:password"];
|
||||
SocketTimeout = int.TryParse(ConfigurationManager.AppSettings["socketconnection:timeout"], out defaultValue) ? defaultValue : 10000;
|
||||
IPAddress = ConfigurationManager.AppSettings["socketconnection:ipAddress"];
|
||||
PortId = int.TryParse(ConfigurationManager.AppSettings["socketconnection:portId"], out defaultValue) ? defaultValue : 2503;
|
||||
RequestType = ConfigurationManager.AppSettings["socketconnection:reqType"];
|
||||
AuthenticationType = ConfigurationManager.AppSettings["socketconnection:authType"];
|
||||
|
||||
string ReadSecret(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
var s = File.ReadAllText(path).Trim();
|
||||
if (string.IsNullOrWhiteSpace(s))
|
||||
throw new InvalidOperationException($"Secret file '{path}' is empty.");
|
||||
return s;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string SafUrl { get; set; }
|
||||
public string DeviceId { get; set; }
|
||||
public string UserId { get; set; }
|
||||
public string Password { get; set; }
|
||||
public string EnvironmentCode { get; set; }
|
||||
public string DefCode { get; set; }
|
||||
public string ApplicationId { get; set; }
|
||||
public string Endpoint { get; set; }
|
||||
public string ApprovalPersonNumber { get; set; }
|
||||
public string OverrideCashBoxNumber { get; set; }
|
||||
public string SocketDeviceId { get; set; }
|
||||
public string SocketApplicationId { get; set; }
|
||||
public string SocketUserId { get; set; }
|
||||
public string SocketPassword { get; set; }
|
||||
public int SocketTimeout { get; set; }
|
||||
public string IPAddress { get; set; }
|
||||
public int PortId { get; set; }
|
||||
public string RequestType { get; set; }
|
||||
public string AuthenticationType { get; set; }
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("LCU.API.Internal.CoreSoapApiWrapper")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("LCU.API.Internal.CoreSoapApiWrapper")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2021")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f624cf44-1861-45ec-8b1f-13b95310318d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using Serilog;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public class AccountService : IAccountService
|
||||
{
|
||||
private readonly IAccountDao _accountDao;
|
||||
|
||||
public AccountService(IAccountDao accountDao)
|
||||
{
|
||||
_accountDao = accountDao;
|
||||
}
|
||||
|
||||
public AccountDetailInquiryResponse GetAccountByAccountNumber(long accountNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _accountDao.FindAccountByAccountNumber(accountNumber);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while getting account by account number {accountNumber}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public AccountMaintenanceResponse SendAccountMaintenanceRequest(AccountMaintenanceRequest accountMaintenanceRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while submitting the following AccountMaintenanceRequest: {accountMaintenanceRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountBranchUpdateRequest(AccountBranchUpdateRequest accountBranchUpdateRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccountMaintenanceRequest accountMaintenanceRequest = new AccountMaintenanceRequest();
|
||||
accountMaintenanceRequest = AccountBranchUpdateRequest.CreateAccountMaintenanceRequest(accountBranchUpdateRequest);
|
||||
var result = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while submitting the following AccountBranchUpdateRequest: {accountBranchUpdateRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountAnalysisGroupMaintenanceRequest(AccountAnalysisGroupMaintenanceRequest accountAnalysisGroupMaintenanceRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = _accountDao.SendAccountAnalysisMaintenanceRequest(AccountAnalysisGroupMaintenanceRequest.UpdateAccountAnalysisMaintenanceRequest(accountAnalysisGroupMaintenanceRequest));
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while submitting the following AccountAnalysisGroupMaintenanceRequest: {accountAnalysisGroupMaintenanceRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountLtvUpdateRequest(AccountLtvUpdateRequest accountLtvUpdateRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccountMaintenanceRequest accountMaintenanceRequest = new AccountMaintenanceRequest();
|
||||
accountMaintenanceRequest = AccountLtvUpdateRequest.CreateAccountMaintenanceRequest(accountLtvUpdateRequest);
|
||||
var result = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while submitting the following AccountLtvUpdateRequest: {accountLtvUpdateRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public CreatedAccountResponse AddPersonAccount(CreatePersonAccountRequest createAccountRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var accountMaintenanceRequest = CreatePersonAccountRequest.CreateAccountMaintanceRequest(createAccountRequest);
|
||||
var accountMaintenanceResponse = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var createdAccountResponse = new CreatedAccountResponse(accountMaintenanceResponse);
|
||||
return createdAccountResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following " +
|
||||
$"CreatePersonAccountRequest: {JsonConvert.SerializeObject(createAccountRequest)}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public CreatedAccountResponse AddOrganizationAccount(CreateOrganizationAccountRequest createAccountRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var accountMaintenanceRequest = CreateOrganizationAccountRequest.CreateAccountMaintanceRequest(createAccountRequest);
|
||||
var accountMaintenanceResponse = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var createdAccountResponse = new CreatedAccountResponse(accountMaintenanceResponse);
|
||||
return createdAccountResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following " +
|
||||
$"CreateOrganizationAccountRequest: {JsonConvert.SerializeObject(createAccountRequest)}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse AddOrganizationControlPerson(OrganizationMaintenanceRequest orgMaintRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var organizationMaintenanceRequest = OrganizationMaintenanceRequest.CreateOrgMaintenanceRequest(orgMaintRequest);
|
||||
var orgMaintenanceResponse = _accountDao.SendOrgMaintenanceRequest(organizationMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(orgMaintenanceResponse);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following " +
|
||||
$"OrganizationMaintenanceRequest: {JsonConvert.SerializeObject(orgMaintRequest)}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountNickNameUpdateRequest(AccountNickNameUpdateRequest accountNickNameUpdateRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccountMaintenanceRequest accountMaintenanceRequest = new AccountMaintenanceRequest();
|
||||
accountMaintenanceRequest = AccountNickNameUpdateRequest.CreateAccountMaintenanceRequest(accountNickNameUpdateRequest);
|
||||
var result = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following AccountNickNameUpdateRequest: {accountNickNameUpdateRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountCreditReportTypeUpdateRequest(AccountCreditReportTypeUpdateRequest accountCreditReportTypeUpdateRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccountMaintenanceRequest accountMaintenanceRequest = new AccountMaintenanceRequest();
|
||||
accountMaintenanceRequest = AccountCreditReportTypeUpdateRequest.CreateAccountMaintenanceRequest(accountCreditReportTypeUpdateRequest);
|
||||
var result = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following AccountCreditReportTypeUpdateRequest: {accountCreditReportTypeUpdateRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse SendAccountContractDateUpdateRequest(AccountContractDateUpdateRequest accountContractDateUpdateRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccountMaintenanceRequest accountMaintenanceRequest = new AccountMaintenanceRequest();
|
||||
accountMaintenanceRequest = AccountContractDateUpdateRequest.CreateAccountMaintenanceRequest(accountContractDateUpdateRequest);
|
||||
var result = _accountDao.SendAccountMaintenanceRequest(accountMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while submitting the following AccountContractDateUpdateRequest: {accountContractDateUpdateRequest}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
using Serilog;
|
||||
using System;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public class CollateralMaintenanceService : ICollateralMaintenanceService
|
||||
{
|
||||
private readonly ICollateralMaintenanceDao _collateralMaintenanceDao;
|
||||
public CollateralMaintenanceService(ICollateralMaintenanceDao collateralMaintenanceDao)
|
||||
{
|
||||
_collateralMaintenanceDao = collateralMaintenanceDao;
|
||||
}
|
||||
public CollateralSearchResponse GetCollateralMaintenanceByPropertyNumber(long propertyNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _collateralMaintenanceDao.FindCollateralMaintenanceByPropertyNumber(propertyNumber);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while getting property information by propery number {propertyNumber}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse InsertCollateralMaintenance(UserFieldRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var maintenanceRequest = CreateCollateralMaintenanceRequest.CreateMaintenanceRequest(request);
|
||||
var result = _collateralMaintenanceDao.AddCollateralMaintenanceByPropertyNumber(maintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while adding property information");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public BasicResponse UpdateCollateralMaintenance(UserFieldRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var maintenanceRequest = CreateCollateralMaintenanceRequest.CreateMaintenanceRequest(request);
|
||||
var result = _collateralMaintenanceDao.UpdateCollateralMaintenanceByPropertyNumber(maintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while updating property information");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface IAccountService
|
||||
{
|
||||
AccountDetailInquiryResponse GetAccountByAccountNumber(long accountNumber);
|
||||
AccountMaintenanceResponse SendAccountMaintenanceRequest(AccountMaintenanceRequest accountMaintenanceRequest);
|
||||
BasicResponse SendAccountBranchUpdateRequest(AccountBranchUpdateRequest accountMaintenanceRequest);
|
||||
BasicResponse SendAccountLtvUpdateRequest(AccountLtvUpdateRequest accountLtvUpdateRequest);
|
||||
BasicResponse SendAccountAnalysisGroupMaintenanceRequest(AccountAnalysisGroupMaintenanceRequest accountAnalysisGroupMaintenanceRequest);
|
||||
CreatedAccountResponse AddPersonAccount(CreatePersonAccountRequest createAccountRequest);
|
||||
CreatedAccountResponse AddOrganizationAccount(CreateOrganizationAccountRequest createAccountRequest);
|
||||
BasicResponse AddOrganizationControlPerson(OrganizationMaintenanceRequest orgMaintRequest);
|
||||
BasicResponse SendAccountNickNameUpdateRequest(AccountNickNameUpdateRequest accountNickNameUpdateRequest);
|
||||
BasicResponse SendAccountCreditReportTypeUpdateRequest(AccountCreditReportTypeUpdateRequest accountCreditReportTypeUpdateRequest);
|
||||
BasicResponse SendAccountContractDateUpdateRequest(AccountContractDateUpdateRequest request);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface ICollateralMaintenanceService
|
||||
{
|
||||
CollateralSearchResponse GetCollateralMaintenanceByPropertyNumber(long propertyNumber);
|
||||
BasicResponse InsertCollateralMaintenance(UserFieldRequest request);
|
||||
BasicResponse UpdateCollateralMaintenance(UserFieldRequest request);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Response;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface IIndirectLoanService
|
||||
{
|
||||
List<UpdateDealerOriginalBalanceResponse> UpdateDealerOriginalBalances (string accountNumber);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface IMonetaryTransactionService
|
||||
{
|
||||
List<MonetaryTransactionResponse> AddMonetaryTransactions (List<GroupedMonetaryTransactionRequest> requests);
|
||||
List<BasicResponse> AddFundsToAccount(List<FundsToAccountRequest> requests);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface IPersonAgreementService
|
||||
{
|
||||
BasicResponse UpdatePersonAgreementsDetailTypes(PersonAgreementDetailTypeRequest personAgreementDetailTypeRequest);
|
||||
}
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Serilog;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Response;
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public class IndirectLoanService : IIndirectLoanService
|
||||
{
|
||||
private readonly IIndirectLoanDao _indirectLoanDao;
|
||||
private readonly ICoreCmcConnection _coreCMCConnection;
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
|
||||
public IndirectLoanService(IIndirectLoanDao indirectLoanDao, ICoreCmcConnection coreCMCConnection, SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_coreCMCConnection = coreCMCConnection;
|
||||
_indirectLoanDao = indirectLoanDao;
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public List<UpdateDealerOriginalBalanceResponse> UpdateDealerOriginalBalances(string accountNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
var responseList = new List<UpdateDealerOriginalBalanceResponse>();
|
||||
|
||||
var accountValue = new Cmc.Account()
|
||||
{
|
||||
AcctNbr = accountNumber
|
||||
};
|
||||
var accountRequest = new Cmc.AccountRequest()
|
||||
{
|
||||
Account = accountValue,
|
||||
ReqTypCd = _soapConfiguration.RequestType
|
||||
};
|
||||
|
||||
var transaction = _coreCMCConnection.CreateSocketTransactionRequest(accountRequest);
|
||||
var transactionResponse = _indirectLoanDao.UpdateDealerOriginalBalance(transaction);
|
||||
var response = AssignAccountError(transactionResponse, accountNumber);
|
||||
|
||||
if (!String.IsNullOrEmpty(response.ErrorMessage))
|
||||
{
|
||||
responseList.Add(response); //unsuccessful return account and error messaging
|
||||
}
|
||||
|
||||
return responseList;
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while updating account: {accountNumber}");
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
private UpdateDealerOriginalBalanceResponse AssignAccountError(Cmc.Transaction<Cmc.AccountRequest> transactionResponse, string account)
|
||||
{
|
||||
var stringBuilder = new StringBuilder();
|
||||
foreach (var result in transactionResponse.Output.Responses)
|
||||
{
|
||||
if (result.Errors != null || result.Errors.Any())
|
||||
{
|
||||
var response = new UpdateDealerOriginalBalanceResponse();
|
||||
foreach (var error in result.Errors)
|
||||
{
|
||||
response.AccountNumber = account;
|
||||
stringBuilder.Append($"Error: { error.ErrorNbr } {error.ErrorMsg},");
|
||||
response.ErrorMessage = stringBuilder.ToString();
|
||||
}
|
||||
return response;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using Serilog;
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public class MonetaryTransactionService : IMonetaryTransactionService
|
||||
{
|
||||
private readonly IMonetaryTransactionDao _monetaryTransactionDao;
|
||||
private readonly SoapConfiguration _soapConfiguration;
|
||||
|
||||
public MonetaryTransactionService(IMonetaryTransactionDao monetaryTransactionDao, SoapConfiguration soapConfiguration)
|
||||
{
|
||||
_monetaryTransactionDao = monetaryTransactionDao;
|
||||
_soapConfiguration = soapConfiguration;
|
||||
}
|
||||
|
||||
public List<MonetaryTransactionResponse> AddMonetaryTransactions (List<GroupedMonetaryTransactionRequest> requests)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = new List<MonetaryTransactionResponse>();
|
||||
foreach (var request in requests) //add monetary transactions from the grouped list
|
||||
{
|
||||
foreach (var transactionrequest in request.MonetaryTransactionRequests) {
|
||||
transactionrequest.OverrideCashBoxNumber = long.Parse(_soapConfiguration.OverrideCashBoxNumber);
|
||||
transactionrequest.ApprovalPersonNumber = long.Parse(_soapConfiguration.ApprovalPersonNumber);
|
||||
}
|
||||
response.AddRange(_monetaryTransactionDao.AddMonetaryTransactions(request.MonetaryTransactionRequests));
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while saving a transaction");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public List<BasicResponse> AddFundsToAccount(List<FundsToAccountRequest> requests)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<MonetaryTransactionRequest> fundRequestList = new List<MonetaryTransactionRequest>();
|
||||
List<BasicResponse> basicResponseList = new List<BasicResponse>();
|
||||
|
||||
foreach (var fundRequests in requests)
|
||||
{
|
||||
var monetaryTransactionRequest = FundsToAccountRequest.CreateMonetaryTransactionRequest(fundRequests, _soapConfiguration);
|
||||
fundRequestList.Add(monetaryTransactionRequest);
|
||||
}
|
||||
|
||||
var monetaryTransactionResponse = _monetaryTransactionDao.AddMonetaryTransactions(fundRequestList);
|
||||
foreach (var transactionResponse in monetaryTransactionResponse)
|
||||
{
|
||||
basicResponseList.Add(new BasicResponse(transactionResponse));
|
||||
}
|
||||
|
||||
return basicResponseList;
|
||||
}
|
||||
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"There was an error while saving funds to account.");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Serilog;
|
||||
using Newtonsoft.Json;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Constants;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public class PersonAgreementService : IPersonAgreementService
|
||||
{
|
||||
private readonly IPersonAgreementDao _personAgreementDao;
|
||||
|
||||
public PersonAgreementService(IPersonAgreementDao personAgreementDao)
|
||||
{
|
||||
_personAgreementDao = personAgreementDao;
|
||||
}
|
||||
|
||||
public BasicResponse UpdatePersonAgreementsDetailTypes(PersonAgreementDetailTypeRequest personAgreementDetailTypeRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(personAgreementDetailTypeRequest.DetailTypes == null)
|
||||
{
|
||||
throw new ArgumentNullException("DetailTypes");
|
||||
}
|
||||
|
||||
Detail[] details = personAgreementDetailTypeRequest
|
||||
.DetailTypes.Select(detailType =>
|
||||
new Detail()
|
||||
{
|
||||
DetailTypeCode = detailType.DetailTypeCode,
|
||||
Value = detailType.DetailValue
|
||||
}).ToArray();
|
||||
|
||||
var personMaintAgreement = new PersonMaintAgreement()
|
||||
{
|
||||
AgreeNumber = personAgreementDetailTypeRequest.AgreeNumber,
|
||||
TypeCode = personAgreementDetailTypeRequest.AgreeTypeCode,
|
||||
Details = details
|
||||
};
|
||||
|
||||
var personAgreementMaintenanceRequest = new PersonAgreementMaintenanceRequest()
|
||||
{
|
||||
EntityTypeCode = EntityTypeCodes.PersonEntityTypeCode,
|
||||
EntityNumber = personAgreementDetailTypeRequest.PersonNumber,
|
||||
Agreements = new PersonMaintAgreement[] { personMaintAgreement }
|
||||
};
|
||||
|
||||
var result = _personAgreementDao.SendPersonAgreementMaintenanceRequest(personAgreementMaintenanceRequest);
|
||||
var basicSoapResponse = new BasicResponse(result);
|
||||
return basicSoapResponse;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error UpdatePersonAgreementsDetailTypes with the following " +
|
||||
$"PersonAgreementDetailTypeRequest: {JsonConvert.SerializeObject(personAgreementDetailTypeRequest)}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using Serilog;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.DataAccess;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapper.Services
|
||||
{
|
||||
public interface ITaxService
|
||||
{
|
||||
GetTaxIdDataResponse GetTaxIdData(long taxId);
|
||||
}
|
||||
|
||||
public class TaxService : ITaxService
|
||||
{
|
||||
private readonly ITaxDao _taxDao;
|
||||
|
||||
public TaxService(ITaxDao taxDao)
|
||||
{
|
||||
_taxDao = taxDao;
|
||||
}
|
||||
|
||||
public GetTaxIdDataResponse GetTaxIdData(long taxId)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _taxDao.GetTaxIdData(taxId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"There was an error while getting TaxIdData for taxId: {taxId}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
|
||||
<appSettings xdt:Transform="RemoveAttributes(file)">
|
||||
<!-- LOGGING -->
|
||||
<add key="serilog:write-to:Seq.serverUrl" value="https://qa-seq.lcu-internal.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:write-to:Seq.apiKey" value="byPieHGnsNNUTfpDZpjq" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:enrich:with-property:Environment" value="Development" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END LOGGING -->
|
||||
<!-- SECURITY -->
|
||||
<add key="ApiSecurityConfiguration:ApiKeyAuthenticationFailureBehavior" value="Error" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="ApiSecurityConfiguration:ExternalApiKeySet:CoreSoapApiWrapper" value="55ffc97e-aead-4baf-acae-27723257db95" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END SECURITY -->
|
||||
<add key="KnownEnvironment" value="Development" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Soap Connection-->
|
||||
<add key="soapconnection:safUrl" value="https://UATapi.dna.lcu-internal.com:10005/SAF/ProductIntegration/ProductIntegration.asmx" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:userId" value="ASERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:password" value="ASland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodEnvCd" value="PRODUCTION" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodDefCd" value="SAF2006" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:applId" value="7e837e75-2e19-45d5-8c3a-4735a275a6cf" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:endpoint" value="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:approvalpersonnumber" value="5775" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:overridecashboxnumber" value="800" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Socket Connection-->
|
||||
<add key="socketconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:applId" value="7726" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:userId" value="CMCSERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:password" value="CSland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:ipAddress" value="10.10.3.72" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:portId" value="2503" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:timeout" value="10000" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:reqType" value="16340" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:authType" value="3" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END Soap Connection -->
|
||||
</appSettings>
|
||||
<system.serviceModel>
|
||||
<client>
|
||||
<endpoint address="https://UATapi.dna.lcu-internal.com:10005/Extensions/DNA.CoreApiService/CoreApiService.svc/Soap11" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities.ICoreApiService" name="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<system.web>
|
||||
<httpModules xdt:Transform="Remove" />
|
||||
</system.web>
|
||||
</configuration>
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
|
||||
|
||||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
|
||||
<appSettings xdt:Transform="RemoveAttributes(file)">
|
||||
<!-- LOGGING -->
|
||||
<add key="serilog:write-to:Seq.serverUrl" value="https://seq.lcu-internal.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:write-to:Seq.apiKey" value="9IIfjzJP9LUiFFY3G4Qs" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:enrich:with-property:Environment" value="Production" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END LOGGING -->
|
||||
<!-- SECURITY -->
|
||||
<add key="ApiSecurityConfiguration:ApiKeyAuthenticationFailureBehavior" value="Error" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="ApiSecurityConfiguration:ExternalApiKeySet:CoreSoapApiWrapper" value="674c1654-e24c-4a98-8f9a-ee8a6ddb30ac" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END SECURITY -->
|
||||
<add key="KnownEnvironment" value="Production" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Soap Connection-->
|
||||
<add key="soapconnection:safUrl" value="https://prodapi.dna.lcu-internal.com:10002/SAF/ProductIntegration/ProductIntegration.asmx" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:userId" value="ASERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:password" value="ASland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodEnvCd" value="PRODUCTION" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodDefCd" value="SAF2006" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:applId" value="7e837e75-2e19-45d5-8c3a-4735a275a6cf" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:endpoint" value="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:approvalpersonnumber" value="5775" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:overridecashboxnumber" value="800" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Socket Connection-->
|
||||
<add key="socketconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:applId" value="7726" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:userId" value="CMCSERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:password" value="CSland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:ipAddress" value="10.10.3.26" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:portId" value="2500" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:timeout" value="10000" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:reqType" value="16340" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:authType" value="3" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END Soap Connection -->
|
||||
</appSettings>
|
||||
<system.serviceModel>
|
||||
<client>
|
||||
<endpoint address="https://prodapi.dna.lcu-internal.com:10002/Extensions/DNA.CoreApiService/CoreApiService.svc/Soap11" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities.ICoreApiService" name="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<system.web>
|
||||
<compilation xdt:Transform="RemoveAttributes(debug)"/>
|
||||
<httpModules xdt:Transform="Remove" />
|
||||
</system.web>
|
||||
</configuration>
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
|
||||
|
||||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
|
||||
<appSettings xdt:Transform="RemoveAttributes(file)">
|
||||
<!-- LOGGING -->
|
||||
<add key="serilog:write-to:Seq.serverUrl" value="https://uat-seq.lcu-internal.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:write-to:Seq.apiKey" value="PMxyyWRWmKAwrsQXjjnX" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="serilog:enrich:with-property:Environment" value="UAT" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END LOGGING -->
|
||||
<!-- SECURITY -->
|
||||
<add key="ApiSecurityConfiguration:ApiKeyAuthenticationFailureBehavior" value="Error" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="ApiSecurityConfiguration:ExternalApiKeySet:CoreSoapApiWrapper" value="c2be5f10-a723-4425-89f2-7923e28689d2" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END SECURITY -->
|
||||
<add key="KnownEnvironment" value="Staging" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Soap Connection-->
|
||||
<add key="soapconnection:safUrl" value="https://UATapi.dna.lcu-internal.com:10005/SAF/ProductIntegration/ProductIntegration.asmx" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:userId" value="ASERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:password" value="ASland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodEnvCd" value="PRODUCTION" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:prodDefCd" value="SAF2006" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:applId" value="7e837e75-2e19-45d5-8c3a-4735a275a6cf" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:endpoint" value="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:approvalpersonnumber" value="5775" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="soapconnection:overridecashboxnumber" value="800" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- Socket Connection-->
|
||||
<add key="socketconnection:deviceId" value="FULL" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:applId" value="7726" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:userId" value="CMCSERVICE" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:password" value="CSland21!!" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:ipAddress" value="10.10.3.72" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:portId" value="2503" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:timeout" value="10000" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:reqType" value="16340" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="socketconnection:authType" value="3" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!-- END Soap Connection -->
|
||||
</appSettings>
|
||||
<system.serviceModel>
|
||||
<client>
|
||||
<endpoint address="https://UATapi.dna.lcu-internal.com:10005/Extensions/DNA.CoreApiService/CoreApiService.svc/Soap11" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities.ICoreApiService" name="lcu_10002" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<system.web>
|
||||
<compilation xdt:Transform="RemoveAttributes(debug)"/>
|
||||
<httpModules xdt:Transform="Remove" />
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,154 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<appSettings file="/app/config/environment-appsettings/appsettings.config">
|
||||
<!-- LOGGING -->
|
||||
<add key="serilog:level-switch:$controlSwitch" value="Verbose" />
|
||||
<add key="serilog:minimum-level:controlled-by" value="$controlSwitch" />
|
||||
<add key="serilog:using:Console" value="Serilog.Sinks.Console" />
|
||||
<add key="serilog:write-to:Console" />
|
||||
<add key="serilog:using:Seq" value="Serilog.Sinks.Seq" />
|
||||
<add key="serilog:write-to:Seq.serverUrl" value="https://localhost" />
|
||||
<add key="serilog:write-to:Seq.apiKey" value="VALUE-IN-KEYVAULT" />
|
||||
<add key="serilog:write-to:Seq.controlLevelSwitch" value="$controlSwitch" />
|
||||
<add key="serilog:using:File" value="Serilog.Sinks.File" />
|
||||
<add key="serilog:write-to:File.path" value="C:\Logs\CoreAPI.txt" />
|
||||
<add key="serilog:write-to:File.rollingInterval" value="Day" />
|
||||
<add key="serilog:write-to:File.retainedFileCountLimit" value="4" />
|
||||
<add key="serilog:enrich:with-property:Application" value="Core Soap API Wrapper" />
|
||||
<add key="serilog:enrich:with-property:Environment" value="Development" />
|
||||
<!-- END LOGGING -->
|
||||
<!-- SECURITY -->
|
||||
<add key="ApiSecurityConfiguration:ApiKeyAuthenticationFailureBehavior" value="Error"/>
|
||||
<add key="ApiSecurityConfiguration:ExternalApiKeySet:CoreSoapApiWrapper" value="VALUE-IN-KEYVAULT"/>
|
||||
<!-- END SECURITY -->
|
||||
<add key="webpages:Version" value="3.0.0.0" />
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
<add key="ClientValidationEnabled" value="true" />
|
||||
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
|
||||
<add key="KnownEnvironment" value="Local" />
|
||||
<!-- Soap Connection-->
|
||||
<add key="soapconnection:safUrl" value="https://UATapi.dna.lcu-internal.com:10005/SAF/ProductIntegration/ProductIntegration.asmx" />
|
||||
<add key="soapconnection:deviceId" value="FULL" />
|
||||
<add key="soapconnection:userId" value="VALUE-IN-KEYVAULT" />
|
||||
<add key="soapconnection:password" value="VALUE-IN-KEYVAULT" />
|
||||
<add key="soapconnection:prodEnvCd" value="PRODUCTION" />
|
||||
<add key="soapconnection:prodDefCd" value="SAF2006" />
|
||||
<add key="soapconnection:applId" value="7e837e75-2e19-45d5-8c3a-4735a275a6cf" />
|
||||
<add key="soapconnection:endpoint" value="lcu_10002" />
|
||||
<add key="soapconnection:approvalpersonnumber" value="5775" />
|
||||
<add key="soapconnection:overridecashboxnumber" value="800" />
|
||||
<!-- END Soap Connection -->
|
||||
<!-- Socket Connection-->
|
||||
<add key="socketconnection:deviceId" value="FULL" />
|
||||
<add key="socketconnection:applId" value="7726" />
|
||||
<add key="socketconnection:userId" value="VALUE-IN-KEYVAULT" />
|
||||
<add key="socketconnection:password" value="VALUE-IN-KEYVAULT" />
|
||||
<add key="socketconnection:ipAddress" value="10.10.3.72" />
|
||||
<add key="socketconnection:portId" value="2503" />
|
||||
<add key="socketconnection:timeout" value="10000"/>
|
||||
<add key="socketconnection:reqType" value="16340" />
|
||||
<add key="socketconnection:authType" value="3" />
|
||||
<!-- END Socket Connection -->
|
||||
</appSettings>
|
||||
<system.serviceModel>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
<binding name="secureHttpBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483646" maxBufferSize="2147483646" maxReceivedMessageSize="2147483646" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483646" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="Transport">
|
||||
<transport clientCredentialType="None" />
|
||||
</security>
|
||||
</binding>
|
||||
<binding name="BasicHttpBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" maxReceivedMessageSize="483646" useDefaultWebProxy="true" />
|
||||
<binding name="BasicHttpBinding_ICoreApiService" />
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<client>
|
||||
<endpoint address="https://UATapi.dna.lcu-internal.com:10005/Extensions/DNA.CoreApiService/CoreApiService.svc/Soap11" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities.ICoreApiService" name="lcu_10002"/>
|
||||
</client>
|
||||
<diagnostics>
|
||||
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
|
||||
<endToEndTracing activityTracing="true" />
|
||||
</diagnostics>
|
||||
</system.serviceModel>
|
||||
<!--
|
||||
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
|
||||
|
||||
The following attributes can be set on the <httpRuntime> tag.
|
||||
<system.Web>
|
||||
<httpRuntime targetFramework="4.6.1" />
|
||||
</system.Web>
|
||||
-->
|
||||
<system.web>
|
||||
<compilation debug="true" targetFramework="4.5.2" />
|
||||
<httpRuntime targetFramework="4.5.2" />
|
||||
<httpModules>
|
||||
<remove name="UrlRoutingModule-4.0" />
|
||||
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||
</httpModules>
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<handlers>
|
||||
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
|
||||
<remove name="OPTIONSVerbHandler" />
|
||||
<remove name="TRACEVerbHandler" />
|
||||
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
|
||||
<bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.9.2.0" newVersion="4.9.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Azure.Documents.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.4.0.0" newVersion="2.4.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Serilog.Sinks.File" publicKeyToken="24c2f752a8e58a10" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
+40
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Antlr" version="3.5.0.2" targetFramework="net472" />
|
||||
<package id="Autofac" version="4.9.2" targetFramework="net452" />
|
||||
<package id="Autofac.WebApi2" version="4.2.1" targetFramework="net452" />
|
||||
<package id="bootstrap" version="3.4.1" targetFramework="net472" />
|
||||
<package id="jQuery" version="3.4.1" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Cors" version="5.2.4" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.4" targetFramework="net452" />
|
||||
<package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net472" />
|
||||
<package id="Microsoft.Azure.DocumentDB" version="2.4.1" targetFramework="net452" />
|
||||
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net452" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net472" />
|
||||
<package id="Modernizr" version="2.8.3" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net472" />
|
||||
<package id="Serilog" version="2.10.0" targetFramework="net452" />
|
||||
<package id="Serilog.Enrichers.Environment" version="2.1.3" targetFramework="net452" />
|
||||
<package id="Serilog.Formatting.Compact" version="1.1.0" targetFramework="net452" />
|
||||
<package id="Serilog.Settings.AppSettings" version="2.2.2" targetFramework="net452" />
|
||||
<package id="Serilog.Sinks.AzureDocumentDB" version="4.0.0" targetFramework="net452" />
|
||||
<package id="Serilog.Sinks.Console" version="3.1.1" targetFramework="net452" />
|
||||
<package id="Serilog.Sinks.File" version="5.0.0" targetFramework="net452" />
|
||||
<package id="Serilog.Sinks.PeriodicBatching" version="2.3.0" targetFramework="net452" />
|
||||
<package id="Serilog.Sinks.Seq" version="5.0.0" targetFramework="net452" />
|
||||
<package id="SerilogWeb.Classic" version="5.0.48" targetFramework="net452" />
|
||||
<package id="SerilogWeb.Classic.WebApi" version="4.0.5" targetFramework="net452" />
|
||||
<package id="Swashbuckle" version="5.6.0" targetFramework="net452" />
|
||||
<package id="Swashbuckle.Core" version="5.6.0" targetFramework="net452" />
|
||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net452" />
|
||||
<package id="WebActivatorEx" version="2.0" targetFramework="net452" />
|
||||
<package id="WebGrease" version="1.6.0" targetFramework="net472" />
|
||||
</packages>
|
||||
+1
@@ -0,0 +1 @@
|
||||
ASland21!!
|
||||
+1
@@ -0,0 +1 @@
|
||||
ASERVICE
|
||||
+310
@@ -0,0 +1,310 @@
|
||||
using Moq;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Web.Http.Results;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Controllers;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class AccountControllerTest
|
||||
{
|
||||
private AccountController _controller;
|
||||
private Mock<IAccountService> _mockAccountService;
|
||||
|
||||
public AccountControllerTest()
|
||||
{
|
||||
_mockAccountService = new Mock<IAccountService>();
|
||||
_controller = new AccountController(_mockAccountService.Object);
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public void GetAccountByAccountNumber_OK()
|
||||
{
|
||||
|
||||
var maintenanceResponse = new AccountDetailInquiryResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.GetAccountByAccountNumber(100L)).Returns(maintenanceResponse).Verifiable();
|
||||
|
||||
var result = _controller.GetAccountByAccountNumber(100L);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<AccountDetailInquiryResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.WasSuccessful);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetAccountByAccountNumber_LongIsZero_BadRequest()
|
||||
{
|
||||
|
||||
_mockAccountService.Verify(x => x.GetAccountByAccountNumber(It.IsAny<long>()),
|
||||
Times.Never);
|
||||
|
||||
var result = _controller.GetAccountByAccountNumber(0);
|
||||
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify(x => x.GetAccountByAccountNumber(It.IsAny<long>()), Times.Never);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetAccountByAccountNumber_Exception()
|
||||
{
|
||||
_mockAccountService.Setup(x => x.GetAccountByAccountNumber(100L)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.GetAccountByAccountNumber(100);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountMaintenanceRequest_OK()
|
||||
{
|
||||
var maintenanceRequest = new AccountMaintenanceRequest
|
||||
{
|
||||
Accounts = new[]{
|
||||
new MaintenanceAccount
|
||||
{
|
||||
AccountNumber = 123456,
|
||||
DeliveryMethodCode = "PRNT"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var maintenanceResponse = new AccountMaintenanceResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountMaintenanceRequest(maintenanceRequest)).Returns(maintenanceResponse).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountMaintenanceRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<AccountMaintenanceResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.WasSuccessful);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountMaintenanceRequest_Null_BadRequest()
|
||||
{
|
||||
|
||||
_mockAccountService.Verify(x => x.SendAccountMaintenanceRequest(It.IsAny<AccountMaintenanceRequest>()),
|
||||
Times.Never);
|
||||
|
||||
var result = _controller.PutAccountMaintenanceRequest(null);
|
||||
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify(x => x.SendAccountMaintenanceRequest(It.IsAny<AccountMaintenanceRequest>()),
|
||||
Times.Never);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountMaintenanceRequest_Exception()
|
||||
{
|
||||
var maintenanceRequest = new AccountMaintenanceRequest
|
||||
{
|
||||
Accounts = new[]{
|
||||
new MaintenanceAccount
|
||||
{
|
||||
AccountNumber = 123456,
|
||||
DeliveryMethodCode = "PRNT"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountMaintenanceRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountMaintenanceRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountAnalysisGroupMaintenanceRequest_OK()
|
||||
{
|
||||
var maintenanceRequest = new AccountAnalysisGroupMaintenanceRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
IsGenerateAnalysisStatement = true,
|
||||
IsPrintAnalysisStatement = true,
|
||||
IsUseForServiceCharge = true,
|
||||
};
|
||||
|
||||
var maintenanceResponse = new AccountAnalysisMaintenanceResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountAnalysisGroupMaintenanceRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountAnalysisGroupMaintenanceRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountAnalysisGroupMaintenanceRequest_Exception()
|
||||
{
|
||||
var maintenanceRequest = new AccountAnalysisGroupMaintenanceRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
IsGenerateAnalysisStatement = true,
|
||||
IsPrintAnalysisStatement = true,
|
||||
IsUseForServiceCharge = true,
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountAnalysisGroupMaintenanceRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountAnalysisGroupMaintenanceRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
[TestMethod]
|
||||
public void PutAccountNickNameUpdateRequest_OK()
|
||||
{
|
||||
var maintenanceRequest = new AccountNickNameUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
AccountDescription = "TestSuccess"
|
||||
};
|
||||
|
||||
var maintenanceResponse = new AccountAnalysisMaintenanceResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountNickNameUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountNickNameUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountNickNameUpdateRequest_Exception()
|
||||
{
|
||||
var maintenanceRequest = new AccountNickNameUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
AccountDescription = "TestException"
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountNickNameUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountNickNameUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
[TestMethod]
|
||||
public void PutAccountCreditReportTypeUpdateRequest_OK()
|
||||
{
|
||||
var maintenanceRequest = new AccountCreditReportTypeUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
CreditReportType = "EXCL"
|
||||
};
|
||||
|
||||
var maintenanceResponse = new AccountAnalysisMaintenanceResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountCreditReportTypeUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountCreditReportTypeUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountCreditReportTypeUpdateRequest_Exception()
|
||||
{
|
||||
var maintenanceRequest = new AccountCreditReportTypeUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
CreditReportType = "EXCL"
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountCreditReportTypeUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountCreditReportTypeUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountContractDateUpdateRequest_OK()
|
||||
{
|
||||
var maintenanceRequest = new AccountContractDateUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
ContractDate = DateTime.Now,
|
||||
};
|
||||
|
||||
var maintenanceResponse = new AccountAnalysisMaintenanceResponse
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountContractDateUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountContractDateUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountContractDateUpdateRequest_Exception()
|
||||
{
|
||||
var maintenanceRequest = new AccountContractDateUpdateRequest
|
||||
{
|
||||
AccountNumber = 11111111,
|
||||
ContractDate = DateTime.Now,
|
||||
};
|
||||
|
||||
_mockAccountService.Setup(x => x.SendAccountContractDateUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutAccountContractDateUpdateRequest(maintenanceRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockAccountService.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
+158
@@ -0,0 +1,158 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Controllers;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
using System;
|
||||
using System.Web.Http.Results;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class CollateralMaintenanceControllerTest
|
||||
{
|
||||
private CollateralMaintenanceController _controller;
|
||||
private Mock<ICollateralMaintenanceService> _mockCollateralMaintenanceService;
|
||||
|
||||
public CollateralMaintenanceControllerTest()
|
||||
{
|
||||
_mockCollateralMaintenanceService = new Mock<ICollateralMaintenanceService>();
|
||||
_controller = new CollateralMaintenanceController(_mockCollateralMaintenanceService.Object);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetPropertyByPropertyNumber_OK()
|
||||
{
|
||||
var searchResponse = new CollateralSearchResponse()
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockCollateralMaintenanceService.Setup(x => x.GetCollateralMaintenanceByPropertyNumber(15000)).Returns(searchResponse).Verifiable();
|
||||
|
||||
var result = _controller.Get(15000);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<CollateralSearchResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.WasSuccessful);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetPropertyByPropertyNumber_IntIsZero_BadRequest()
|
||||
{
|
||||
|
||||
_mockCollateralMaintenanceService.Verify(x => x.GetCollateralMaintenanceByPropertyNumber(It.IsAny<int>()),
|
||||
Times.Never);
|
||||
|
||||
var result = _controller.Get(0);
|
||||
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockCollateralMaintenanceService.Verify(x => x.GetCollateralMaintenanceByPropertyNumber(It.IsAny<int>()), Times.Never);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void GetPropertyByPropertyNumber_Exception()
|
||||
{
|
||||
_mockCollateralMaintenanceService.Setup(x => x.GetCollateralMaintenanceByPropertyNumber(15000)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.Get(15000);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutCollateralMaintenanceRequest_OK()
|
||||
{
|
||||
var fieldRequest = new UserFieldRequest()
|
||||
{
|
||||
PropertyNumber = 11111,
|
||||
UserFieldCode = "TEST",
|
||||
Value = "TEST"
|
||||
};
|
||||
|
||||
var maintenanceResponse = new CollateralMaintenanceResponse()
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockCollateralMaintenanceService.Setup(x => x.UpdateCollateralMaintenance(fieldRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PutCollateralMaintenance(fieldRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutAccountMaintenanceRequest_Exception()
|
||||
{
|
||||
var fieldRequest = new UserFieldRequest()
|
||||
{
|
||||
PropertyNumber = 11111,
|
||||
UserFieldCode = "TEST",
|
||||
Value = "TEST"
|
||||
};
|
||||
|
||||
_mockCollateralMaintenanceService.Setup(x => x.UpdateCollateralMaintenance(fieldRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutCollateralMaintenance(fieldRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PostCollateralMaintenanceRequest_OK()
|
||||
{
|
||||
var fieldRequest = new UserFieldRequest()
|
||||
{
|
||||
PropertyNumber = 11111,
|
||||
UserFieldCode = "TEST",
|
||||
Value = "TEST"
|
||||
};
|
||||
|
||||
var maintenanceResponse = new CollateralMaintenanceResponse()
|
||||
{
|
||||
WasSuccessful = true
|
||||
};
|
||||
|
||||
_mockCollateralMaintenanceService.Setup(x => x.InsertCollateralMaintenance(fieldRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable();
|
||||
|
||||
var result = _controller.PostCollateralMaintenance(fieldRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as OkNegotiatedContentResult<BasicResponse>;
|
||||
Assert.IsNotNull(okResult);
|
||||
Assert.IsTrue((bool)okResult.Content.Success);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PostCollateralMaintenanceRequest_Exception()
|
||||
{
|
||||
var fieldRequest = new UserFieldRequest()
|
||||
{
|
||||
PropertyNumber = 11111,
|
||||
UserFieldCode = "TEST",
|
||||
Value = "TEST"
|
||||
};
|
||||
|
||||
_mockCollateralMaintenanceService.Setup(x => x.InsertCollateralMaintenance(fieldRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PostCollateralMaintenance(fieldRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockCollateralMaintenanceService.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
using System.Web.Http.Results;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Controllers;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Response;
|
||||
using Cmc = LCU.API.Internal.CoreSoapApiWrapper.Models.Cmc;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class indirectLoanControllerTest
|
||||
{
|
||||
private IndirectLoanController _controller;
|
||||
private Mock<IIndirectLoanService> _mockIndirectLoanService;
|
||||
|
||||
public indirectLoanControllerTest()
|
||||
{
|
||||
_mockIndirectLoanService = new Mock<IIndirectLoanService>();
|
||||
_controller = new IndirectLoanController(_mockIndirectLoanService.Object);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutDealerOriginalBalanceRequest_OK()
|
||||
{
|
||||
var request = "19618754052";
|
||||
var response = new UpdateDealerOriginalBalanceResponse();
|
||||
|
||||
var responseList = new List<UpdateDealerOriginalBalanceResponse> { response };
|
||||
_mockIndirectLoanService.Setup(x => x.UpdateDealerOriginalBalances(request)).Returns(responseList).Verifiable();
|
||||
|
||||
var result = _controller.PutDealerOriginalBalance(request);
|
||||
Assert.IsNotNull(result);
|
||||
|
||||
var okResult = result as OkNegotiatedContentResult<List<UpdateDealerOriginalBalanceResponse>>;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockIndirectLoanService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutDealerOriginalBalance_Exception()
|
||||
{
|
||||
|
||||
var request = "19618754052";
|
||||
var response = new UpdateDealerOriginalBalanceResponse()
|
||||
{
|
||||
AccountNumber = "19618754052",
|
||||
ErrorMessage = "Error: 000000 This account has failed to update."
|
||||
};
|
||||
|
||||
var responseList = new List<UpdateDealerOriginalBalanceResponse> { response };
|
||||
_mockIndirectLoanService.Setup(x => x.UpdateDealerOriginalBalances(request)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutDealerOriginalBalance(request);
|
||||
Assert.IsNotNull(result);
|
||||
var badResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(badResult);
|
||||
_mockIndirectLoanService.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
+210
@@ -0,0 +1,210 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Controllers;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
using System;
|
||||
using System.Web.Http.Results;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class MonetaryTransactionControllerTest
|
||||
{
|
||||
private MonetaryTransactionController _controller;
|
||||
private Mock<IMonetaryTransactionService> _mockMonetaryTransactionService;
|
||||
|
||||
public MonetaryTransactionControllerTest()
|
||||
{
|
||||
_mockMonetaryTransactionService = new Mock<IMonetaryTransactionService>();
|
||||
_controller = new MonetaryTransactionController(_mockMonetaryTransactionService.Object);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PostMonetaryTransactionsRequest_OK()
|
||||
{
|
||||
|
||||
var groupRequest = new GroupedMonetaryTransactionRequest()
|
||||
{
|
||||
|
||||
MonetaryTransactionRequests = new List<MonetaryTransactionRequest>() {
|
||||
|
||||
new MonetaryTransactionRequest()
|
||||
{
|
||||
AccountNumber = 19618756535,
|
||||
RequestNumber = "1",
|
||||
TransactionTypeCode = "DEXP",
|
||||
|
||||
FundBalanceTypes = new FundBalanceType[1]
|
||||
{
|
||||
new FundBalanceType()
|
||||
{
|
||||
FundBalanceAmount = 1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "IMED"
|
||||
}
|
||||
},
|
||||
|
||||
BalanceTypes = new BalanceType1[1] {
|
||||
new BalanceType1() {
|
||||
BalanceCategoryCode = "UPFR",
|
||||
BalanceTypeCode = "DLR",
|
||||
BalanceTypeAmount = 1.25
|
||||
}
|
||||
},
|
||||
|
||||
Funds = new Fund[1] {
|
||||
new Fund() {
|
||||
ClearingCategoryCode = "IMED",
|
||||
FundAmount = 1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "INTR",
|
||||
NumberOfItems = 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
new MonetaryTransactionRequest()
|
||||
{
|
||||
AccountNumber = 19617805142,
|
||||
TransactionAmount = -1.25,
|
||||
ParentRequestNumber = "1",
|
||||
RequestNumber = "2",
|
||||
TransactionTypeCode = "DRIR",
|
||||
Description = "",
|
||||
|
||||
BalanceTypes = new BalanceType1[1] {
|
||||
new BalanceType1() {
|
||||
BalanceCategoryCode = "UPFR",
|
||||
BalanceTypeCode = "DLR",
|
||||
BalanceTypeAmount = -1.25
|
||||
}
|
||||
},
|
||||
|
||||
Funds = new Fund[1] {
|
||||
new Fund() {
|
||||
ClearingCategoryCode = "IMED",
|
||||
FundAmount = -1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "INTR",
|
||||
NumberOfItems = 1
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var response = new MonetaryTransactionResponse()
|
||||
{
|
||||
WasSuccessful = false
|
||||
};
|
||||
|
||||
var listResponse = new List<MonetaryTransactionResponse> { response };
|
||||
var listGroupRequest = new List<GroupedMonetaryTransactionRequest> { groupRequest };
|
||||
|
||||
_mockMonetaryTransactionService.Setup(x => x.AddMonetaryTransactions(listGroupRequest)).Returns(listResponse).Verifiable();
|
||||
|
||||
var result = _controller.PostMonetaryTransactions(listGroupRequest);
|
||||
Assert.IsNotNull(result);
|
||||
|
||||
var okResult = result as OkNegotiatedContentResult<List<MonetaryTransactionResponse>>;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockMonetaryTransactionService.Verify();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PostMonetaryTransactionsRequest_Exception()
|
||||
{
|
||||
|
||||
var groupRequest = new GroupedMonetaryTransactionRequest()
|
||||
{
|
||||
|
||||
MonetaryTransactionRequests = new List<MonetaryTransactionRequest>() {
|
||||
|
||||
new MonetaryTransactionRequest()
|
||||
{
|
||||
AccountNumber = 19618756535,
|
||||
RequestNumber = "1",
|
||||
TransactionTypeCode = "DEXP",
|
||||
|
||||
FundBalanceTypes = new FundBalanceType[1]
|
||||
{
|
||||
new FundBalanceType()
|
||||
{
|
||||
FundBalanceAmount = 1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "IMED"
|
||||
}
|
||||
},
|
||||
|
||||
BalanceTypes = new BalanceType1[1] {
|
||||
new BalanceType1() {
|
||||
BalanceCategoryCode = "UPFR",
|
||||
BalanceTypeCode = "DLR",
|
||||
BalanceTypeAmount = 1.25
|
||||
}
|
||||
},
|
||||
|
||||
Funds = new Fund[1] {
|
||||
new Fund() {
|
||||
ClearingCategoryCode = "IMED",
|
||||
FundAmount = 1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "INTR",
|
||||
NumberOfItems = 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
new MonetaryTransactionRequest()
|
||||
{
|
||||
AccountNumber = 19617805142,
|
||||
TransactionAmount = -1.25,
|
||||
ParentRequestNumber = "1",
|
||||
RequestNumber = "2",
|
||||
TransactionTypeCode = "DRIR",
|
||||
Description = "",
|
||||
|
||||
BalanceTypes = new BalanceType1[1] {
|
||||
new BalanceType1() {
|
||||
BalanceCategoryCode = "UPFR",
|
||||
BalanceTypeCode = "DLR",
|
||||
BalanceTypeAmount = -1.25
|
||||
}
|
||||
},
|
||||
|
||||
Funds = new Fund[1] {
|
||||
new Fund() {
|
||||
ClearingCategoryCode = "IMED",
|
||||
FundAmount = -1.25,
|
||||
FundTypeCode = "EL",
|
||||
FundTypeDetailCode = "INTR",
|
||||
NumberOfItems = 1
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var response = new MonetaryTransactionResponse()
|
||||
{
|
||||
WasSuccessful = false
|
||||
};
|
||||
|
||||
var listResponse = new List<MonetaryTransactionResponse> { response };
|
||||
var listGroupRequest = new List<GroupedMonetaryTransactionRequest> { groupRequest };
|
||||
|
||||
_mockMonetaryTransactionService.Setup(x => x.AddMonetaryTransactions(listGroupRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PostMonetaryTransactions(listGroupRequest);
|
||||
Assert.IsNotNull(result);
|
||||
var badResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(badResult);
|
||||
_mockMonetaryTransactionService.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Controllers;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Services;
|
||||
using Moq;
|
||||
using System.Web.Http.Results;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers
|
||||
{
|
||||
[TestClass]
|
||||
public class PersonAgreementControllerTest
|
||||
{
|
||||
private PersonAgreementController _controller;
|
||||
private Mock<IPersonAgreementService> _mockPersonAgreementService;
|
||||
|
||||
public PersonAgreementControllerTest()
|
||||
{
|
||||
_mockPersonAgreementService = new Mock<IPersonAgreementService>();
|
||||
_controller = new PersonAgreementController(_mockPersonAgreementService.Object);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutPersonAgreementsDetailTypes_Null_BadRequest()
|
||||
{
|
||||
|
||||
_mockPersonAgreementService.Verify(x => x.UpdatePersonAgreementsDetailTypes(
|
||||
It.IsAny<PersonAgreementDetailTypeRequest>()), Times.Never);
|
||||
|
||||
var result = _controller.PutPersonAgreementsDetailTypes(null);
|
||||
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockPersonAgreementService.Verify(x => x.UpdatePersonAgreementsDetailTypes(
|
||||
It.IsAny<PersonAgreementDetailTypeRequest>()), Times.Never);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PutPersonAgreementsDetailTypes_Exception()
|
||||
{
|
||||
var request = new PersonAgreementDetailTypeRequest()
|
||||
{
|
||||
PersonNumber = 1,
|
||||
AgreeNumber = 2,
|
||||
DetailTypes = new List<DetailType>()
|
||||
{
|
||||
new DetailType()
|
||||
{
|
||||
DetailTypeCode = "Stat",
|
||||
DetailValue = "CLOS"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
_mockPersonAgreementService.Setup(x => x.UpdatePersonAgreementsDetailTypes(request))
|
||||
.Throws(new Exception("Error thrown in unit test.")).Verifiable();
|
||||
|
||||
var result = _controller.PutPersonAgreementsDetailTypes(request);
|
||||
Assert.IsNotNull(result);
|
||||
var okResult = result as BadRequestErrorMessageResult;
|
||||
Assert.IsNotNull(okResult);
|
||||
_mockPersonAgreementService.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user