From 4e433d3a929a2636fdf7261e3c5d619ea347f0d6 Mon Sep 17 00:00:00 2001 From: shakun Date: Thu, 7 Sep 2023 10:01:11 +0545 Subject: [PATCH] first commit for push job --- .gitignore | 539 ++++++++++++++++++++++ SendMail.sln | 25 + SendMail/API/RestApiClient.cs | 22 + SendMail/API/SendTransactionServices.cs | 120 +++++ SendMail/App.config | 21 + SendMail/Business/GetStatic.cs | 47 ++ SendMail/Business/SendEmail.cs | 71 +++ SendMail/Business/SmtpMailSetting.cs | 103 +++++ SendMail/Business/TxnPush.cs | 183 ++++++++ SendMail/Common/CommonResponse.cs | 63 +++ SendMail/Common/SendTransactionRequest.cs | 172 +++++++ SendMail/DAO/SwiftDao.cs | 269 +++++++++++ SendMail/DAO/TxnPushDAO.cs | 282 +++++++++++ SendMail/JMETxnPushScheduler.csproj | 115 +++++ SendMail/Program.cs | 21 + SendMail/Properties/AssemblyInfo.cs | 36 ++ SendMail/Repository/SendRepository.cs | 28 ++ SendMail/packages.config | 4 + 18 files changed, 2121 insertions(+) create mode 100644 .gitignore create mode 100644 SendMail.sln create mode 100644 SendMail/API/RestApiClient.cs create mode 100644 SendMail/API/SendTransactionServices.cs create mode 100644 SendMail/App.config create mode 100644 SendMail/Business/GetStatic.cs create mode 100644 SendMail/Business/SendEmail.cs create mode 100644 SendMail/Business/SmtpMailSetting.cs create mode 100644 SendMail/Business/TxnPush.cs create mode 100644 SendMail/Common/CommonResponse.cs create mode 100644 SendMail/Common/SendTransactionRequest.cs create mode 100644 SendMail/DAO/SwiftDao.cs create mode 100644 SendMail/DAO/TxnPushDAO.cs create mode 100644 SendMail/JMETxnPushScheduler.csproj create mode 100644 SendMail/Program.cs create mode 100644 SendMail/Properties/AssemblyInfo.cs create mode 100644 SendMail/Repository/SendRepository.cs create mode 100644 SendMail/packages.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ab17f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,539 @@ + +# Created by https://www.gitignore.io/api/visualstudio +# Edit at https://www.gitignore.io/?templates=visualstudio + +### VisualStudio ### +## 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/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# 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/ + +# 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 + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# 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/ + +# End of https://www.gitignore.io/api/visualstudio +/CitizenINFC/bin/Debug/CitizenINFC.dll +/CitizenINFC/bin/Debug/CitizenINFC.dll.config +/CitizenINFC/bin/Debug/CitizenINFC.pdb +/CitizenINFC/obj/Debug/CitizenINFC.csproj.CoreCompileInputs.cache +/CitizenINFC/obj/Debug/CitizenINFC.csproj.FileListAbsolute.txt +/CitizenINFC/obj/Debug/CitizenINFC.csprojAssemblyReference.cache +/CitizenINFC/obj/Debug/CitizenINFC.dll +/CitizenINFC/obj/Debug/CitizenINFC.pdb +/CivilBankPayAPI/bin/Debug/CivilBankPayAPI.dll +/CivilBankPayAPI/bin/Debug/CivilBankPayAPI.dll.config +/CivilBankPayAPI/bin/Debug/CivilBankPayAPI.pdb +/CivilBankPayAPI/obj/Debug/CivilBankPayAPI.csproj.CoreCompileInputs.cache +/CivilBankPayAPI/obj/Debug/CivilBankPayAPI.csproj.FileListAbsolute.txt +/CivilBankPayAPI/obj/Debug/CivilBankPayAPI.csprojAssemblyReference.cache +/CivilBankPayAPI/obj/Debug/CivilBankPayAPI.dll +/CivilBankPayAPI/obj/Debug/CivilBankPayAPI.pdb +/EBLPayAPI/bin/Debug/EBLPayAPI.dll +/EBLPayAPI/bin/Debug/EBLPayAPI.dll.config +/EBLPayAPI/bin/Debug/EBLPayAPI.pdb +/EBLPayAPI/obj/Debug/EBLPayAPI.csproj.FileListAbsolute.txt +/EBLPayAPI/obj/Debug/EBLPayAPI.dll +/EBLPayAPI/obj/Debug/EBLPayAPI.pdb +/GlobalTranFastPayAPI/bin/Debug/GlobalTranFastPayAPI.dll +/GlobalTranFastPayAPI/bin/Debug/GlobalTranFastPayAPI.dll.config +/GlobalTranFastPayAPI/bin/Debug/GlobalTranFastPayAPI.pdb +/GlobalTranFastPayAPI/obj/Debug/GlobalTranFastPayAPI.csproj.FileListAbsolute.txt +/GlobalTranFastPayAPI/obj/Debug/GlobalTranFastPayAPI.dll +/GlobalTranFastPayAPI/obj/Debug/GlobalTranFastPayAPI.pdb +/GMEPayAPI/bin/Debug/GMEPayAPI.dll +/GMEPayAPI/bin/Debug/GMEPayAPI.dll.config +/GMEPayAPI/bin/Debug/GMEPayAPI.pdb +/GMEPayAPI/obj/Debug/GMEPayAPI.csproj.FileListAbsolute.txt +/GMEPayAPI/obj/Debug/GMEPayAPI.dll +/GMEPayAPI/obj/Debug/GMEPayAPI.pdb +/IntelExpressPayAPI/bin/Debug/IntelExpressPayAPI.dll +/IntelExpressPayAPI/bin/Debug/IntelExpressPayAPI.dll.config +/IntelExpressPayAPI/bin/Debug/IntelExpressPayAPI.pdb +/IntelExpressPayAPI/obj/Debug/IntelExpressPayAPI.csproj.FileListAbsolute.txt +/IntelExpressPayAPI/obj/Debug/IntelExpressPayAPI.dll +/IntelExpressPayAPI/obj/Debug/IntelExpressPayAPI.pdb +/JanataBankAPI/bin/Debug/JanataBankAPI.dll +/JanataBankAPI/bin/Debug/JanataBankAPI.dll.config +/JanataBankAPI/bin/Debug/JanataBankAPI.pdb +/JanataBankAPI/obj/Debug/JanataBankAPI.csproj.FileListAbsolute.txt +/JanataBankAPI/obj/Debug/JanataBankAPI.dll +/JanataBankAPI/obj/Debug/JanataBankAPI.pdb +/JMEPAYAPI/bin/Debug/JMEPAYAPI.dll +/JMEPAYAPI/bin/Debug/JMEPAYAPI.pdb +/JMEPAYAPI/obj/Debug/JMEPAYAPI.csproj.FileListAbsolute.txt +/JMEPAYAPI/obj/Debug/JMEPAYAPI.dll +/JMEPAYAPI/obj/Debug/JMEPAYAPI.pdb +/LumbiniBankAPI/bin/Debug/LumbiniBankAPI.dll +/LumbiniBankAPI/bin/Debug/LumbiniBankAPI.dll.config +/LumbiniBankAPI/bin/Debug/LumbiniBankAPI.pdb +/LumbiniBankAPI/obj/Debug/LumbiniBankAPI.csproj.FileListAbsolute.txt +/LumbiniBankAPI/obj/Debug/LumbiniBankAPI.dll +/LumbiniBankAPI/obj/Debug/LumbiniBankAPI.pdb +/MachhapuchhrePayAPI/bin/Debug/MachhapuchhrePayAPI.dll +/MachhapuchhrePayAPI/bin/Debug/MachhapuchhrePayAPI.dll.config +/MachhapuchhrePayAPI/bin/Debug/MachhapuchhrePayAPI.pdb +/MachhapuchhrePayAPI/obj/Debug/MachhapuchhrePayAPI.csproj.FileListAbsolute.txt +/MachhapuchhrePayAPI/obj/Debug/MachhapuchhrePayAPI.dll +/MachhapuchhrePayAPI/obj/Debug/MachhapuchhrePayAPI.pdb +/MaxPayAPI/bin/Debug/MaxPayAPI.dll +/MaxPayAPI/bin/Debug/MaxPayAPI.dll.config +/MaxPayAPI/bin/Debug/MaxPayAPI.pdb +/MaxPayAPI/obj/Debug/MaxPayAPI.csproj.FileListAbsolute.txt +/MaxPayAPI/obj/Debug/MaxPayAPI.dll +/MaxPayAPI/obj/Debug/MaxPayAPI.pdb +/MegaBankPayAPI/bin/Debug/MegaBankPayAPI.dll +/MegaBankPayAPI/bin/Debug/MegaBankPayAPI.dll.config +/MegaBankPayAPI/bin/Debug/MegaBankPayAPI.pdb +/MegaBankPayAPI/obj/Debug/MegaBankPayAPI.csproj.FileListAbsolute.txt +/MegaBankPayAPI/obj/Debug/MegaBankPayAPI.dll +/MegaBankPayAPI/obj/Debug/MegaBankPayAPI.pdb +/MoneyGramPayAPI/bin/Debug/MoneyGramPayAPI.dll +/MoneyGramPayAPI/bin/Debug/MoneyGramPayAPI.dll.config +/MoneyGramPayAPI/bin/Debug/MoneyGramPayAPI.pdb +/MoneyGramPayAPI/obj/Debug/MoneyGramPayAPI.csproj.FileListAbsolute.txt +/MoneyGramPayAPI/obj/Debug/MoneyGramPayAPI.dll +/MoneyGramPayAPI/obj/Debug/MoneyGramPayAPI.pdb +/NCHLAPI/bin/Debug/ClassLibrary1.dll +/NCHLAPI/bin/Debug/ClassLibrary1.pdb +/NCHLAPI/obj/Debug/ClassLibrary1.dll +/NCHLAPI/obj/Debug/ClassLibrary1.pdb +/NCHLAPI/obj/Debug/NCHLAPI.csproj.CoreCompileInputs.cache +/NCHLAPI/obj/Debug/NCHLAPI.csproj.FileListAbsolute.txt +/NCHLAPI/obj/Debug/NCHLAPI.csprojAssemblyReference.cache +/NIBLPayAPI/bin/Debug/NIBLPayAPI.dll +/NIBLPayAPI/bin/Debug/NIBLPayAPI.dll.config +/NIBLPayAPI/bin/Debug/NIBLPayAPI.pdb +/NIBLPayAPI/obj/Debug/NIBLPayAPI.csproj.FileListAbsolute.txt +/NIBLPayAPI/obj/Debug/NIBLPayAPI.dll +/NIBLPayAPI/obj/Debug/NIBLPayAPI.pdb +/PlacidAPI/bin/Debug/PlacidAPI.dll +/PlacidAPI/bin/Debug/PlacidAPI.dll.config +/PlacidAPI/bin/Debug/PlacidAPI.pdb +/PlacidAPI/obj/Debug/PlacidAPI.csproj.CoreCompileInputs.cache +/PlacidAPI/obj/Debug/PlacidAPI.csproj.FileListAbsolute.txt +/PlacidAPI/obj/Debug/PlacidAPI.dll +/PlacidAPI/obj/Debug/PlacidAPI.pdb +/ReliableRemitPayAPI/bin/Debug/ReliableRemitPayAPI.dll +/ReliableRemitPayAPI/bin/Debug/ReliableRemitPayAPI.dll.config +/ReliableRemitPayAPI/bin/Debug/ReliableRemitPayAPI.pdb +/ReliableRemitPayAPI/obj/Debug/ReliableRemitPayAPI.csproj.FileListAbsolute.txt +/ReliableRemitPayAPI/obj/Debug/ReliableRemitPayAPI.dll +/ReliableRemitPayAPI/obj/Debug/ReliableRemitPayAPI.pdb +/RIAPayAPI/bin/Debug/RIAPayAPI.dll +/RIAPayAPI/bin/Debug/RIAPayAPI.dll.config +/RIAPayAPI/bin/Debug/RIAPayAPI.pdb +/RIAPayAPI/obj/Debug/RIAPayAPI.csproj.FileListAbsolute.txt +/RIAPayAPI/obj/Debug/RIAPayAPI.dll +/RIAPayAPI/obj/Debug/RIAPayAPI.pdb +/SANIMAPayAPI/bin/Debug/SANIMAPayAPI.dll +/SANIMAPayAPI/bin/Debug/SANIMAPayAPI.dll.config +/SANIMAPayAPI/bin/Debug/SANIMAPayAPI.pdb +/SANIMAPayAPI/obj/Debug/SANIMAPayAPI.csproj.FileListAbsolute.txt +/SANIMAPayAPI/obj/Debug/SANIMAPayAPI.dll +/SANIMAPayAPI/obj/Debug/SANIMAPayAPI.pdb +/ShakaPayAPI/bin/Debug/ShakaPayAPI.dll +/ShakaPayAPI/bin/Debug/ShakaPayAPI.dll.config +/ShakaPayAPI/bin/Debug/ShakaPayAPI.pdb +/ShakaPayAPI/obj/Debug/ShakaPayAPI.csproj.FileListAbsolute.txt +/ShakaPayAPI/obj/Debug/ShakaPayAPI.dll +/ShakaPayAPI/obj/Debug/ShakaPayAPI.pdb +/SunmanGlobalPayAPI/bin/Debug/SunmanGlobalPayAPI.dll +/SunmanGlobalPayAPI/bin/Debug/SunmanGlobalPayAPI.dll.config +/SunmanGlobalPayAPI/bin/Debug/SunmanGlobalPayAPI.pdb +/SunmanGlobalPayAPI/obj/Debug/SunmanGlobalPayAPI.csproj.FileListAbsolute.txt +/SunmanGlobalPayAPI/obj/Debug/SunmanGlobalPayAPI.dll +/SunmanGlobalPayAPI/obj/Debug/SunmanGlobalPayAPI.pdb +/SunrisePayAPI/bin/Debug/SunrisePayAPI.dll +/SunrisePayAPI/obj/Debug/SunrisePayAPI.dll +/Swift.DAL/bin/Debug/MaxPayAPI.dll +/Swift.DAL/bin/Debug/MaxPayAPI.pdb +/Swift.DAL/bin/Debug/SANIMAPayAPI.dll +/Swift.DAL/bin/Debug/SANIMAPayAPI.pdb +/Swift.DAL/bin/Debug/ShakaPayAPI.dll +/Swift.DAL/bin/Debug/ShakaPayAPI.pdb +/Swift.DAL/bin/Debug/Swift.DAL.dll +/Swift.DAL/bin/Debug/Swift.DAL.pdb +/Swift.DAL/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +/Swift.DAL/obj/Debug/Swift.DAL.csproj.FileListAbsolute.txt +/Swift.DAL/obj/Debug/Swift.DAL.dll +/Swift.DAL/obj/Debug/Swift.DAL.pdb +/Swift.web/bin/MaxPayAPI.dll +/Swift.web/bin/MaxPayAPI.pdb +/Swift.web/bin/ShakaPayAPI.dll +/Swift.web/bin/ShakaPayAPI.pdb +/Swift.web/bin/Swift.DAL.dll +/Swift.web/bin/Swift.DAL.pdb +/Swift.web/bin/Swift.web.dll +/Swift.web/bin/Swift.web.pdb +/Swift.web/obj/Debug/Interop.CERTENROLLLib.dll +/Swift.web/obj/Debug/Swift.web.csproj.FileListAbsolute.txt +/Swift.web/obj/Debug/Swift.web.csproj.ResolveComReference.cache +/Swift.web/obj/Debug/Swift.web.dll +/Swift.web/obj/Debug/Swift.web.pdb +/TMLPayAPI/bin/Debug/TMLPayAPI.dll +/TMLPayAPI/bin/Debug/TMLPayAPI.dll.config +/TMLPayAPI/bin/Debug/TMLPayAPI.pdb +/TMLPayAPI/obj/Debug/TMLPayAPI.csproj.FileListAbsolute.txt +/TMLPayAPI/obj/Debug/TMLPayAPI.dll +/TMLPayAPI/obj/Debug/TMLPayAPI.pdb +/TranFastPayAPI/bin/Debug/TranFastPayAPI.dll +/TranFastPayAPI/bin/Debug/TranFastPayAPI.pdb +/TranFastPayAPI/obj/Debug/TranFastPayAPI.csproj.FileListAbsolute.txt +/TranFastPayAPI/obj/Debug/TranFastPayAPI.dll +/TranFastPayAPI/obj/Debug/TranFastPayAPI.pdb +/XpressMoneySendAPI/bin/Debug/XpressMoneySendAPI.dll +/XpressMoneySendAPI/bin/Debug/XpressMoneySendAPI.dll.config +/XpressMoneySendAPI/bin/Debug/XpressMoneySendAPI.pdb +/XpressMoneySendAPI/obj/Debug/XpressMoneySendAPI.csproj.CoreCompileInputs.cache +/XpressMoneySendAPI/obj/Debug/XpressMoneySendAPI.csproj.FileListAbsolute.txt +/XpressMoneySendAPI/obj/Debug/XpressMoneySendAPI.dll +/XpressMoneySendAPI/obj/Debug/XpressMoneySendAPI.pdb +/YesRemit_TranFast/bin/Debug/YesRemit_TranFast.dll +/YesRemit_TranFast/bin/Debug/YesRemit_TranFast.dll.config +/YesRemit_TranFast/bin/Debug/YesRemit_TranFast.pdb +/YesRemit_TranFast/obj/Debug/YesRemit_TranFast.csproj.FileListAbsolute.txt +/YesRemit_TranFast/obj/Debug/YesRemit_TranFast.dll +/YesRemit_TranFast/obj/Debug/YesRemit_TranFast.pdb +/Swift.web/web.config diff --git a/SendMail.sln b/SendMail.sln new file mode 100644 index 0000000..cb9c14b --- /dev/null +++ b/SendMail.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.15 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JMETxnPushScheduler", "SendMail\JMETxnPushScheduler.csproj", "{5AC9671D-FB0E-4816-A870-886006FC5C19}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5AC9671D-FB0E-4816-A870-886006FC5C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5AC9671D-FB0E-4816-A870-886006FC5C19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AC9671D-FB0E-4816-A870-886006FC5C19}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5AC9671D-FB0E-4816-A870-886006FC5C19}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {11FF4A29-1BB1-4188-BF7D-472867DD4CAC} + EndGlobalSection +EndGlobal diff --git a/SendMail/API/RestApiClient.cs b/SendMail/API/RestApiClient.cs new file mode 100644 index 0000000..4647ff6 --- /dev/null +++ b/SendMail/API/RestApiClient.cs @@ -0,0 +1,22 @@ +using JMETxnPushScheduler.Business; +using System; +using System.Net.Http; +using System.Net.Http.Headers; + +namespace JMETxnPushScheduler.API +{ + public class RestApiClient + { + private static int timeOut = 100;//Convert.ToInt16(ConfigurationManager.AppSettings["ApiTimeOutSeconds"]); + public static HttpClient CallJMEThirdParty() + { + string thirdPartyUrl = GetStatic.ReadWebConfig("JMECoreAPIURL", ""); + var httpClient = new HttpClient(); + httpClient.BaseAddress = new Uri(thirdPartyUrl); + httpClient.DefaultRequestHeaders.Add("apiAccessKey", GetStatic.ReadWebConfig("JMECoreAPI_HeaderToken", "")); + httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + httpClient.Timeout = new TimeSpan(0, 0, timeOut); + return httpClient; + } + } +} diff --git a/SendMail/API/SendTransactionServices.cs b/SendMail/API/SendTransactionServices.cs new file mode 100644 index 0000000..4b10998 --- /dev/null +++ b/SendMail/API/SendTransactionServices.cs @@ -0,0 +1,120 @@ +using Newtonsoft.Json; +using JMETxnPushScheduler.Common; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; + +namespace JMETxnPushScheduler.API +{ + public class SendTransactionServices + { + public JsonResponse SendTransaction(SendTransactionRequest model) + { + //Log.Debug("Calculate | Calling third party api to fetch the ex-rate details " + JsonConvert.SerializeObject(model)); + using (var client = RestApiClient.CallJMEThirdParty()) + { + JsonResponse jsonResponse = new JsonResponse(); + var obj = JsonConvert.SerializeObject(model); + var jbdContent = new StringContent(obj.ToString(), Encoding.UTF8, "application/json"); + try + { + var URL = "api/v1/TP/sendTxn"; + + HttpResponseMessage resp = client.PostAsync(URL, jbdContent).Result; + string resultData = resp.Content.ReadAsStringAsync().Result; + if (resp.IsSuccessStatusCode) + { + jsonResponse = JsonConvert.DeserializeObject(resultData); + if (jsonResponse.ResponseCode.Equals("104")) + { + var datas = JsonConvert.DeserializeObject>(jsonResponse.Data.ToString()); + string msg = ""; + foreach (var item in datas) + { + msg += " " + item.Message; + } + jsonResponse.Msg += msg; + } + return jsonResponse; + } + else + { + var errorJson = JsonConvert.DeserializeObject(resultData); + var jsonResponseData = JsonConvert.DeserializeObject(errorJson.Message); + var data = JsonConvert.DeserializeObject>(jsonResponseData.Data.ToString()); + jsonResponse.Id = jsonResponseData.Id; + jsonResponse.ResponseCode = jsonResponseData.ResponseCode; + jsonResponse.Msg = jsonResponseData.Msg; + jsonResponse.Data = data; + jsonResponse.Extra = jsonResponseData.Extra; + jsonResponse.Extra1 = jsonResponseData.Extra1; + return jsonResponse; + } + } + catch (Exception ex) + { + return new JsonResponse() + { + ResponseCode = "1", + Msg = (ex.InnerException == null ? ex.Message : ex.InnerException.Message) + }; + } + } + } + + public JsonResponse ReleaseTransaction(TFReleaseTxnRequest model) + { + //Log.Debug("Calculate | Calling third party api to fetch the ex-rate details " + JsonConvert.SerializeObject(model)); + using (var client = RestApiClient.CallJMEThirdParty()) + { + JsonResponse jsonResponse = new JsonResponse(); + var obj = JsonConvert.SerializeObject(model); + var jbdContent = new StringContent(obj.ToString(), Encoding.UTF8, "application/json"); + try + { + var URL = "api/v1/TP/releaseTxn"; + + HttpResponseMessage resp = client.PostAsync(URL, jbdContent).Result; + string resultData = resp.Content.ReadAsStringAsync().Result; + if (resp.IsSuccessStatusCode) + { + jsonResponse = JsonConvert.DeserializeObject(resultData); + if (jsonResponse.ResponseCode.Equals("104")) + { + var datas = JsonConvert.DeserializeObject>(jsonResponse.Data.ToString()); + string msg = ""; + foreach (var item in datas) + { + msg += " " + item.Message; + } + jsonResponse.Msg += msg; + } + return jsonResponse; + } + else + { + var errorJson = JsonConvert.DeserializeObject(resultData); + var jsonResponseData = JsonConvert.DeserializeObject(errorJson.Message); + var data = JsonConvert.DeserializeObject>(jsonResponseData.Data.ToString()); + jsonResponse.Id = jsonResponseData.Id; + jsonResponse.ResponseCode = jsonResponseData.ResponseCode; + jsonResponse.Msg = jsonResponseData.Msg; + jsonResponse.Data = data; + jsonResponse.Extra = jsonResponseData.Extra; + jsonResponse.Extra1 = jsonResponseData.Extra1; + return jsonResponse; + } + } + catch (Exception ex) + { + return new JsonResponse() + { + ResponseCode = "1", + Msg = (ex.InnerException == null ? ex.Message : ex.InnerException.Message) + }; + } + } + } + } +} diff --git a/SendMail/App.config b/SendMail/App.config new file mode 100644 index 0000000..29a1e7e --- /dev/null +++ b/SendMail/App.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SendMail/Business/GetStatic.cs b/SendMail/Business/GetStatic.cs new file mode 100644 index 0000000..02b3a13 --- /dev/null +++ b/SendMail/Business/GetStatic.cs @@ -0,0 +1,47 @@ +using System; +using System.Configuration; +using System.IO; +using System.Text; + +namespace JMETxnPushScheduler.Business +{ + public static class GetStatic + { + public static string ReadWebConfig(string key, string defValue) + { + return ConfigurationManager.AppSettings[key] ?? defValue; + } + + public static void WriteLog(string Log) + { + string LogFile = GetStatic.ReadAppSetting("LogFile"); + StringBuilder LogText = new StringBuilder(); + + LogText.AppendLine(Log + DateTime.Now.ToString()); + LogText.AppendLine("----------------------------------------------------------------------------"); + Write(LogText.ToString()); + + using (StreamWriter writetext = new StreamWriter(LogFile, true)) + { + writetext.WriteLine(LogText.ToString()); + } + } + + static void Write(string data) + { + Console.WriteLine(data); + } + + public static string ReadAppSetting(this string val) + { + try + { + return ConfigurationSettings.AppSettings[val].ToString(); + } + catch (Exception) + { + return ""; + } + } + } +} diff --git a/SendMail/Business/SendEmail.cs b/SendMail/Business/SendEmail.cs new file mode 100644 index 0000000..277e4da --- /dev/null +++ b/SendMail/Business/SendEmail.cs @@ -0,0 +1,71 @@ +using JMETxnPushScheduler.Repository; +using System; +using System.Data; + +namespace JMETxnPushScheduler.Business +{ + public class SendEmail + { + + SendRepository _repository = new SendRepository(); + public void mailsend() + { + int i = 1; + DataTable mailDetails = _repository.GetMailDetails(); + string msgSubject = "About pasword Reset"; + string msgBody = string.Empty; + if (mailDetails == null ) + { + return; + } + else if (mailDetails.Rows.Count == 0) + { + return; + } + try + { + msgBody = "" + + "" + + "" + + "" + + "" + + "" + + ""; + foreach (DataRow item in mailDetails.Rows) + { + + msgBody += ""; + msgBody += ""; + msgBody += ""; + msgBody += ""; + msgBody += ""; + i = i + 1; + } + msgBody += "
SNo. Full NameEmailUser NameNew Password
" + Convert.ToString(i ) + "" + item["Name"].ToString() + "" + item["Email"].ToString() + "" + item["UserName"].ToString() + "" + item["Newpassword"].ToString() + "
"; + SmtpMailSetting mail = new SmtpMailSetting + { + MsgBody = msgBody, + MsgSubject = msgSubject, + ToEmails = GetStatic.ReadWebConfig("recivermail", "") + }; + string res = mail.SendSmtpMail(mail); + + //if (res != "Mail Send") + //{ + // ErrorEmail(); + //} + } + catch (Exception ex) + { + ex.Message.ToString(); + } + } + + public void ErrorEmail() + { + + _repository.ErrorEmail(); + } + + } +} diff --git a/SendMail/Business/SmtpMailSetting.cs b/SendMail/Business/SmtpMailSetting.cs new file mode 100644 index 0000000..fd5366c --- /dev/null +++ b/SendMail/Business/SmtpMailSetting.cs @@ -0,0 +1,103 @@ +using System; +using System.Net.Mail; + +namespace JMETxnPushScheduler.Business +{ + public class SmtpMailSetting + { + public SmtpMailSetting() + { + + ToEmails = ""; + CcEmails = ""; + BccEmails = ""; + MsgSubject = ""; + MsgBody = ""; + SmtpPort = Convert.ToInt16(GetStatic.ReadWebConfig("port", "")); + SmtpServer = GetStatic.ReadWebConfig("smtp", ""); + SendEmailId = GetStatic.ReadWebConfig("mailFrom", ""); + SendEmailPwd = GetStatic.ReadWebConfig("pwd", ""); + EnableSsl = true; + } + + public int SmtpPort { get; set; } + public string SmtpServer { get; set; } + public string SendEmailId { get; set; } + public string SendEmailPwd { get; set; } + public string ToEmails { get; set; } + public string CcEmails { get; set; } + public string BccEmails { get; set; } + public string MsgSubject { get; set; } + public string MsgBody { get; set; } + public bool EnableSsl { get; set; } + public string Status { get; set; } + + + /// + /// Send mail through gme SMTP server + /// + /// receiver details mail body and subject + /// + public string SendSmtpMail(SmtpMailSetting smtpMail) + { + MailMessage mail = new MailMessage(); + SmtpClient SmtpServer = new SmtpClient(); + try + { + + SmtpServer.Host = smtpMail.SmtpServer; + SmtpServer.Port = smtpMail.SmtpPort; + SmtpServer.Credentials = new System.Net.NetworkCredential(smtpMail.SendEmailId, smtpMail.SendEmailPwd); + SmtpServer.EnableSsl = EnableSsl; + + mail.From = new MailAddress(smtpMail.SendEmailId); + mail.To.Add(smtpMail.ToEmails); + if (!string.IsNullOrEmpty(smtpMail.CcEmails)) + mail.CC.Add(smtpMail.CcEmails); + if (!string.IsNullOrEmpty(smtpMail.BccEmails)) + mail.Bcc.Add(smtpMail.BccEmails); + + mail.Subject = smtpMail.MsgSubject; + mail.IsBodyHtml = true; + mail.Body = smtpMail.MsgBody; + + SmtpServer.Send(mail); + smtpMail.Status = "Y"; + SmtpServer.Dispose(); + + } + catch (SmtpFailedRecipientsException ex) + { + for (int i = 0; i < ex.InnerExceptions.Length; i++) + { + SmtpStatusCode status = ex.InnerExceptions[i].StatusCode; + if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) + { + // Console.WriteLine("Delivery failed - retrying in 5 seconds."); + System.Threading.Thread.Sleep(5000); + SmtpServer.Send(mail); + } + else + { + // Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient); + //throw ex; + smtpMail.Status = "N"; + //GetStatic.EmailNotificationLog(smtpMail); + } + } + } + catch (Exception ex) + { + smtpMail.Status = "N"; + //GetStatic.EmailNotificationLog(smtpMail); + } + finally + { + SmtpServer.Dispose(); + } + //GetStatic.EmailNotificationLog(smtpMail); + + return "Mail Send"; + } + } +} diff --git a/SendMail/Business/TxnPush.cs b/SendMail/Business/TxnPush.cs new file mode 100644 index 0000000..ca65d31 --- /dev/null +++ b/SendMail/Business/TxnPush.cs @@ -0,0 +1,183 @@ +using JMETxnPushScheduler.API; +using JMETxnPushScheduler.Common; +using JMETxnPushScheduler.DAO; +using System; +using System.Collections.Generic; +using System.Data; + +namespace JMETxnPushScheduler.Business +{ + public class TxnPush + { + public void TxnSyncMain() + { + TxnPushDAO _txnPush = new TxnPushDAO(); + DataTable txnData = _txnPush.GetTxnDataForApprove(); + if (txnData.Rows.Count == 0 || null == txnData) + { + return; + } + + Console.WriteLine("Total data fetched for sync: " + txnData.Rows.Count.ToString()); + foreach (DataRow item in txnData.Rows) + { + CommonResponse _dbRes = _txnPush.GetTxnApproveData("schedular", item["ID"].ToString()); + if (_dbRes.ResponseCode == "0") + { + if (_dbRes.Extra == "True")//is realtime + { + Console.WriteLine("Release txn started: " + item["CONTROLNO"].ToString()); + SendTransactionServices _tpSend = new SendTransactionServices(); + var result = _tpSend.ReleaseTransaction(new TFReleaseTxnRequest() + { + TfPin = _dbRes.Id, + RequestBy = "scheduler", + UserName = "scheduler", + ProviderId = _dbRes.Msg + }); + + Console.WriteLine("Release txn completed with response msg: " + result.Msg); + if (result.ResponseCode == "0") + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + } + else + { + Console.WriteLine("Send txn started: " + item["CONTROLNO"].ToString()); + string newSession = Guid.NewGuid().ToString().Replace("-", ""); + var result = _txnPush.GetHoldedTxnForApprovedByAdmin("scheduler", item["ID"].ToString(), newSession); + + Console.WriteLine("Send txn completed with response msg: " + result.Msg); + + List exclude = new List() { "7000", "100" }; + + if (result.ResponseCode != null && result.ResponseCode != "0") + { + if (!exclude.Contains(result.ResponseCode) || !result.Msg.Contains("task was canceled")) + _txnPush.SyncTxnAsComment(_dbRes.Msg, item["ID"].ToString(), item["CONTROLNO"].ToString(), !string.IsNullOrEmpty(result.Extra) ? result.Extra : result.ResponseCode, result.Msg); + else + Console.WriteLine("SyncTxnAsComment exclude Code: " + result.ResponseCode); + } + + if (_dbRes.Msg == "394397") + { + if (result.ResponseCode == "0") + { + _txnPush.UpdateTxnInstantPaid(item["ID"].ToString()); + } + else if (result.ResponseCode == "100")//Transaction has been processed for Bank Deposit. + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + else if (result.ResponseCode == "7000" && result.Msg.Contains("ALREADY USED")) + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + } + else if (_dbRes.Msg == "394132") + { + if (result.ResponseCode == "0" || (!string.IsNullOrEmpty(result.Extra) && result.Extra.Equals("0006"))) //Duplicate records + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + } + else if (_dbRes.Msg == "394414") //brac + { + if (result.ResponseCode == "0" || (!string.IsNullOrEmpty(result.Msg) && result.Msg.Equals("DuplicateTTNumber"))) //004- Duplicate records + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + } + else if (_dbRes.Msg == "394428") //Cebuana + { + if (result.ResponseCode == "0" || (!string.IsNullOrEmpty(result.Extra) && result.Extra.Equals("05"))) // Control Number Already In Use + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + else if (!string.IsNullOrEmpty(result.Extra) && result.Extra.Equals("19")) //"RTA Internal Error-Reference Number Already Exists + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + + } + } + else if (_dbRes.Msg == "394434") //wings + { + if (result.ResponseCode == "0") + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + else if (!string.IsNullOrEmpty(result.Extra) && result.Extra.Equals("200")) //" Txn found in wings system. + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + + } + } + else + { + if (result.ResponseCode == "0") + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + } + } + } + } + + } + public void TxnReleaseMain() + { + try + { + TxnPushDAO _txnPush = new TxnPushDAO(); + DataTable txnData = _txnPush.GetTxnDataForRelease(); + if (txnData.Rows.Count == 0 || null == txnData) + { + return; + } + + GetStatic.WriteLog("Total data fetched for Release: " + txnData.Rows.Count.ToString()); + // Console.WriteLine("Total data fetched for Release: " + txnData.Rows.Count.ToString()); + foreach (DataRow item in txnData.Rows) + { + string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + item["partner"].ToString() + ":releaseTxn"; + Console.WriteLine("Release txn started: " + item["CONTROLNO"].ToString()); + SendTransactionServices _tpSend = new SendTransactionServices(); + + var request = new TFReleaseTxnRequest() + { + TfPin = item["CONTROLNO"].ToString(), + RequestBy = "scheduler", + UserName = "scheduler", + ProviderId = item["sSuperAgent"].ToString(), + ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40) + }; + + GetStatic.WriteLog(item["CONTROLNO"].ToString() + " " + Newtonsoft.Json.JsonConvert.SerializeObject(request)); + + var result = _tpSend.ReleaseTransaction(request); + + Console.WriteLine("Release txn completed with response msg: " + result.Msg); + if (result.ResponseCode == "0") + { + _txnPush.UpdateTxnPost(item["ID"].ToString()); + } + else + { + GetStatic.WriteLog("Release txn failed with response msg: " + item["CONTROLNO"].ToString() + " " + result.Msg); + } + + } + } + catch (Exception ex) + { + GetStatic.WriteLog("TxnReleaseMain" + ex.ToString()); + + Console.WriteLine(ex.InnerException.ToString()); + Console.Read(); + } + + } + + } +} diff --git a/SendMail/Common/CommonResponse.cs b/SendMail/Common/CommonResponse.cs new file mode 100644 index 0000000..776e6e1 --- /dev/null +++ b/SendMail/Common/CommonResponse.cs @@ -0,0 +1,63 @@ +namespace JMETxnPushScheduler.Common +{ + public class CommonResponse + { + public string ResponseCode { get; set; } + public string Msg { get; set; } + public string Id { get; set; } + public object Data { get; set; } + public string Extra { get; set; } + public string Extra2 { get; set; } + public string Status { get; set; } + + public void SetResponse(string responseCode, string msg, string id) + { + ResponseCode = responseCode; + Msg = msg; + Id = id; + } + } + + public class JsonResponse + { + public string TokenNo { get; set; } + public string ResponseCode { get; set; } + public string Msg { get; set; } + public string Id { get; set; } + public string Extra { get; set; } + public string Extra1 { get; set; } + public object Data { get; set; } + + public void SetResponse(string responseCode, string msg, string id = null, string extra = null, string extra1 = null) + { + ResponseCode = responseCode; + Msg = msg; + Id = id; + Extra = extra; + Extra1 = extra1; + } + } + + public class ErrorJosn + { + public string Message { get; set; } + } + + public class Data + { + public string Name { get; set; } + public string Message { get; set; } + } + + public class TFReleaseTxnRequest + { + public string TfPin { get; set; } + public string ProcessId { get; set; } + public string UserName { get; set; } + public string ProviderId { get; set; } + public string SessionId { get; set; } + public string RequestBy { get; set; } + + } + +} diff --git a/SendMail/Common/SendTransactionRequest.cs b/SendMail/Common/SendTransactionRequest.cs new file mode 100644 index 0000000..4a9b47f --- /dev/null +++ b/SendMail/Common/SendTransactionRequest.cs @@ -0,0 +1,172 @@ +namespace JMETxnPushScheduler.Common +{ + public class SendTransactionRequest + { + public string ProcessId { get; set; } + public string UserName { get; set; } + public string ProviderId { get; set; } + public string SessionId { get; set; } + public string RequestedBy { get; set; } + public string ExRateConfirmId { get; set; } + + public int TranId { get; set; } + + public bool isTxnAlreadyCreated { get; set; } + + #region SenderInformation + + public TxnSender Sender { get; set; } + + #endregion SenderInformation + + #region receiveInformtaion + + public TxnReceiver Receiver { get; set; } + + #endregion receiveInformtaion + + #region txnInformation + + public TxnTransaction Transaction { get; set; } + + #endregion txnInformation + + #region agentInformation + + public TxnAgent Agent { get; set; } + + #endregion agentInformation + + public bool IsRealtime { get; set; } + + public string IsManualSc { get; set; } + + public decimal ManualSc { get; set; } + public bool IsApproveTxn { get; set; } + + public bool IsAccValSupported { get; set; } + } + public class TxnAgent + { + public int SAgentId { get; set; } + public string SAgentName { get; set; } + public int SSuperAgentId { get; set; } + public string SSuperAgentName { get; set; } + public string AgentRefId { get; set; } + public string PBranchId { get; set; } + public string PBranchName { get; set; } + public string PBranchCity { get; set; } + public int PAgentId { get; set; } + public string PAgentName { get; set; } + public int SBranchId { get; set; } + public string SBranchName { get; set; } + public string PBankType { get; set; } + public string PBankId { get; set; } + public string PBankName { get; set; } + public string PBankBranchId { get; set; } + public string PBankBranchName { get; set; } + } + public class TxnTransaction + { + public string TxnDate { get; set; } + public string JMEControlNo { get; set; } + public string PurposeOfRemittanceName { get; set; } + public string CollectionMode { get; set; } + public int DeliveryMethodId { get; set; } + public string DeliveryMethod { get; set; } + public string PCurr { get; set; } + public string CollCurr { get; set; } + public decimal CAmt { get; set; } + public decimal PAmt { get; set; } + public decimal TAmt { get; set; } + public decimal ServiceCharge { get; set; } + public decimal Discount { get; set; } + public decimal ExRate { get; set; } + public decimal Rate { get; set; } + public string PComm { get; set; } + public decimal SettlementDollarRate { get; set; } + public string CalBy { get; set; } + public string Introducer { get; set; } + public string IsManualSc { get; set; } + public decimal ManualSc { get; set; } + public string RLocation { get; set; } + public string RLocationName { get; set; } + public string TpRefNo { get; set; } + public string TpTranId { get; set; } + public int PayOutPartner { get; set; } + public string PaymentType { get; set; } + public string PayoutMsg { get; set; } + + } + public class TxnReceiver + { + public string ReceiverId { get; set; } + public string RFullName { get; set; } + public string RFirstName { get; set; } + public string RMiddleName { get; set; } + public string RLastName { get; set; } + public string RIdType { get; set; } + public string RIdNo { get; set; } + public string RIdIssuedDate { get; set; } + public string RIdValidDate { get; set; } + public string RDob { get; set; } + public string RTel { get; set; } + public string RMobile { get; set; } + public string RNativeCountry { get; set; } + public string RCity { get; set; } + public string RAdd1 { get; set; } + public string REmail { get; set; } + public string RAccountNo { get; set; } + public string RGender { get; set; } + public int RCountryId { get; set; } + public string RCountry { get; set; } + public int RelWithSenderId { get; set; } + public string RelWithSenderName { get; set; } + public string RStateId { get; set; } + public string RStateName { get; set; } + public string RCityCode { get; set; } + public string RDistrictCode { get; set; } + public string UnitaryBankAccountNo { get; set; } + public string RLocation { get; set; } + public string RLocationName { get; set; } + } + public class TxnSender + { + public int CustomerId { get; set; } + public string SFirstName { get; set; } + public string SMiddleName { get; set; } + public string SLastName1 { get; set; } + public string SLastName2 { get; set; } + public string SFullName { get; set; } + public string SIdType { get; set; } + public string SIdNo { get; set; } + public string SIdIssueDate { get; set; } + public string SIdExpiryDate { get; set; } + public int SOccuptionId { get; set; } + public string SOccuptionName { get; set; } + public string SBirthDate { get; set; } + public string SEmail { get; set; } + public string SCityId { get; set; } + public string SCity { get; set; } + public string SState { get; set; } + public string FormOfPaymentId { get; set; } + public string SZipCode { get; set; } + public string SNativeCountry { get; set; } + public string SMobile { get; set; } + public string STel { get; set; } + public string SAddress { get; set; } + public string SIpAddress { get; set; } + public string SGender { get; set; } + public string SCustStreet { get; set; } + public string SCustLocation { get; set; } + public string SourceOfFund { get; set; } + public string Pwd { get; set; } + public bool IsIndividual { get; set; } + public int SCountryId { get; set; } + public string SCountryName { get; set; } + public int SBranchId { get; set; } + public string SBranchName { get; set; } + public int CustomerDepositedBank { get; set; } + } +} + diff --git a/SendMail/DAO/SwiftDao.cs b/SendMail/DAO/SwiftDao.cs new file mode 100644 index 0000000..5d31413 --- /dev/null +++ b/SendMail/DAO/SwiftDao.cs @@ -0,0 +1,269 @@ +using JMETxnPushScheduler.Common; +using System; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Text.RegularExpressions; + +namespace JMETxnPushScheduler.DAO +{ + public class SwiftDao + { + + SqlConnection _connection; + + public SwiftDao() + { + Init(); + } + + private void Init() + { + _connection = new SqlConnection(GetConnectionString()); + } + + private string GetConnectionString() + { + return ConfigurationManager.ConnectionStrings["Connections"].ConnectionString; + } + + private int GetCommandTimeOut() + { + int cto = 60; + return cto; + + } + + private void CloseConnection() + { + if (_connection.State == ConnectionState.Open) + this._connection.Close(); + } + + public CommonResponse ParseDbResultWithSql(string sql) + { + return ParseDbResult(ExecuteDataTable(sql)); + } + + public CommonResponse ParseDbResult(DataTable dt) + { + var res = new CommonResponse(); + if (dt.Rows.Count > 0) + { + res.ResponseCode = dt.Rows[0][0].ToString(); + res.Msg = dt.Rows[0][1].ToString(); + res.Id = dt.Rows[0][2].ToString(); + if (dt.Columns.Count > 3) + { + res.Extra = dt.Rows[0][3].ToString(); + } + if (dt.Columns.Count > 4) + { + res.Extra2 = dt.Rows[0][4].ToString(); + } + } + return res; + } + public DataSet ExecuteDataSet(string sql) + { + var ds = new DataSet(); + using (var con = new SqlConnection(GetConnectionString())) + { + var cmd = new SqlCommand(sql, con); + cmd.CommandTimeout = GetCommandTimeOut(); + SqlDataAdapter da; + try + { + da = new SqlDataAdapter(cmd); + da.Fill(ds); + da.Dispose(); + } + + catch (Exception ex) + { + throw ex; + + } + finally + { + da = null; + cmd.Dispose(); + } + return ds; + } + } + + public DataTable ExecuteDataTable(string sql) + { + using (var ds = ExecuteDataSet(sql)) + { + if (ds == null || ds.Tables.Count == 0) + return null; + + return ds.Tables[0]; + } + } + + public DataRow ExecuteDataRow(string sql) + { + using (var ds = ExecuteDataSet(sql)) + { + if (ds == null || ds.Tables.Count == 0) + return null; + + if (ds.Tables[0].Rows.Count == 0) + return null; + + return ds.Tables[0].Rows[0]; + } + } + + + + public String FilterString(string strVal) + { + var str = FilterQuote(strVal); + + if (str.ToLower() != "null") + str = "'" + str + "'"; + + return str.TrimEnd().TrimStart(); + } + + public String FilterXmlString(string strVal) + { + return "'" + strVal + "'"; + } + + public String FilterXmlNodeString(string strVal) + { + var str = FilterQuote(strVal); + + return str; + } + + public String FilterQuote(string strVal) + { + if (string.IsNullOrEmpty(strVal)) + { + strVal = ""; + } + var str = strVal.Trim(); + + if (!string.IsNullOrEmpty(str)) + { + str = str.Replace(";", ""); + str = str.Replace("--", ""); + str = str.Replace("'", ""); + + str = str.Replace("/*", ""); + str = str.Replace("*/", ""); + + str = Regex.Replace(str, " select ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " insert ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " update ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " delete ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " drop ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " truncate ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " create ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " begin ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " end ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " char ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " exec ", string.Empty, RegexOptions.IgnoreCase); + str = Regex.Replace(str, " xp_cmd ", string.Empty, RegexOptions.IgnoreCase); + + str = Regex.Replace(str, @"<.*?>", string.Empty); + + } + else + { + str = "null"; + } + return str; + } + + public string ConvertDrToString(object dr) + { + if (dr != DBNull.Value) + { + return Convert.ToString(dr); + } + return string.Empty; + } + + public Decimal ConvertDrToDecimal(object dr) + { + if (dr != DBNull.Value) + { + return Convert.ToDecimal(dr.ToString()); + } + return 0; + } + + public Int64 ConvertDrToInt64(object dr) + { + if (dr != DBNull.Value) + { + return Convert.ToInt64(dr.ToString()); + } + return 0; + } + + public DateTime ConvertDrToDate(object dr) + { + if (dr != DBNull.Value) + { + return Convert.ToDateTime(dr.ToString()); + } + return DateTime.MinValue; + } + + public Int16 ConvertDrToInt(object dr) + { + if (dr != DBNull.Value) + { + return Convert.ToInt16(dr.ToString()); + } + return 0; + } + + + + public string ParseQuote(string val) + { + return "\"" + val + "\""; + } + + + public string AutoSelect(string str1, string str2) + { + if (str1.ToLower() == str2.ToLower()) + return "selected=\"selected\""; + + return ""; + } + + + public String GetSingleResult(string sql) + { + try + { + var ds = ExecuteDataSet(sql); + if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) + return ""; + + return ds.Tables[0].Rows[0][0].ToString(); + } + catch (Exception ex) + { + throw ex; + } + + finally + { + CloseConnection(); + } + } + } + +} diff --git a/SendMail/DAO/TxnPushDAO.cs b/SendMail/DAO/TxnPushDAO.cs new file mode 100644 index 0000000..7bcafc9 --- /dev/null +++ b/SendMail/DAO/TxnPushDAO.cs @@ -0,0 +1,282 @@ +using JMETxnPushScheduler.API; +using JMETxnPushScheduler.Common; +using System; +using System.Data; + +namespace JMETxnPushScheduler.DAO +{ + public class TxnPushDAO : SwiftDao + { + public DataTable GetTxnDataForApprove() + { + string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-LIST'"; + + return ExecuteDataTable(sql); + } + public DataTable GetTxnDataForRelease() + { + string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-RELEASE-LIST'"; + + return ExecuteDataTable(sql); + } + + public void UpdateTxnPost(string id) + { + string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'UPDATE-POST'"; + sql += ", @TRAN_ID = " + FilterString(id); + + ExecuteDataTable(sql); + } + + public void UpdateTxnInstantPaid(string id) + { + string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'INSTANT-PAID'"; + sql += ", @TRAN_ID = " + FilterString(id); + + ExecuteDataTable(sql); + } + + public CommonResponse GetTxnApproveData(string user, string id) + { + var sql = "EXEC proc_ApproveHoldedTXN @flag = 'get-info-for-compliance'"; + sql += ", @user = " + FilterString(user); + sql += ", @id = " + FilterString(id); + + return ParseDbResultWithSql(sql); + } + + public void SyncTxnAsComment(string provider, string tranId, string ControlNo, string status, string msg) + { + string sql = "EXEC PROC_TP_TXN_PUSH @flag='add-api-comment'"; + sql += ",@PROVIDER = " + FilterString(provider); + sql += ",@TRAN_ID = " + FilterString(tranId); + sql += ",@message = " + FilterString(msg); + sql += ",@status = " + FilterString(status); + sql += ",@user = " + FilterString("TxnPushJob"); + ExecuteDataTable(sql); + } + + public JsonResponse GetHoldedTxnForApprovedByAdmin(string user, string id, string sessionId, string callFro = null) + { + var sql = "EXEC proc_GetHoldedTxnForApprovedByAdminCompliance"; + sql += " @user = " + FilterString(user); + sql += ", @tranId = " + FilterString(id); + sql += ", @callFro = " + FilterString(callFro); + + var drDb = ExecuteDataRow(sql); + if (drDb.Table.Columns.Contains("ErrorCode")) + { + return new JsonResponse() + { + ResponseCode = Convert.ToString(drDb["ErrorCode"]), + Msg = Convert.ToString(drDb["msg"]) + }; + } + string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + Convert.ToString(drDb["processId"]) + ":sendTxn"; + + SendTransactionRequest sendTxnRequest = new SendTransactionRequest(); + if (drDb.Table.Columns.Contains("exRateConfirmId")) + { + sendTxnRequest.ExRateConfirmId = drDb["exRateConfirmId"].ToString(); + } + + sendTxnRequest.RequestedBy = "scheduler"; + sendTxnRequest.UserName = user; + sendTxnRequest.ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40); + sendTxnRequest.ProviderId = Convert.ToString(drDb["partnerId"]); + sendTxnRequest.TranId = Convert.ToInt32(drDb["tranId"]); + if (drDb.Table.Columns.Contains("IsRealtime")) + { + sendTxnRequest.IsRealtime = (drDb["IsRealtime"].ToString() == "Y" ? true : false); + } + else + { + sendTxnRequest.IsRealtime = false; + } + + #region senderInformation + + TxnSender txnSender = new TxnSender(); + txnSender.CustomerId = Convert.ToInt32(drDb["customerId"]); + txnSender.SFirstName = Convert.ToString(drDb["sfirstName"]); + txnSender.SMiddleName = Convert.ToString(drDb["smiddleName"]); + txnSender.SLastName1 = Convert.ToString(drDb["slastName1"]); + txnSender.SLastName2 = Convert.ToString(drDb["slastName2"]); + txnSender.SFullName = Convert.ToString(drDb["sfullName"]); + txnSender.SIdIssueDate = Convert.ToString(drDb["sissuedDate"]); + txnSender.SIdExpiryDate = Convert.ToString(drDb["svalidDate"]); + txnSender.SOccuptionId = Convert.ToInt32(drDb["occupationId"]); + txnSender.SOccuptionName = Convert.ToString(drDb["occupationName"]); + txnSender.SBirthDate = Convert.ToString(drDb["sdob"]); + txnSender.SEmail = Convert.ToString(drDb["semail"]); + txnSender.SCityId = Convert.ToString(drDb["scity"]); + if (drDb.Table.Columns.Contains("sstate")) + { + txnSender.SState = Convert.ToString(drDb["sstate"]); + } + if (drDb.Table.Columns.Contains("formOfPaymentId")) + { + txnSender.FormOfPaymentId = Convert.ToString(drDb["formOfPaymentId"]); + } + txnSender.SZipCode = Convert.ToString(drDb["szipCode"]); + txnSender.SNativeCountry = Convert.ToString(drDb["snativeCountry"]); + txnSender.SIdType = Convert.ToString(drDb["sidType"]); + txnSender.SIdNo = Convert.ToString(drDb["sidNumber"]); + txnSender.SMobile = Convert.ToString(drDb["smobile"]); + txnSender.SAddress = Convert.ToString(drDb["saddress"]); + txnSender.SIpAddress = Convert.ToString(drDb["ipAddress"]); + txnSender.SCountryId = Convert.ToInt32(drDb["countryId"]); + txnSender.SCountryName = Convert.ToString(drDb["sCountry"]); + if (drDb.Table.Columns.Contains("IsIndividual")) + { + txnSender.IsIndividual = Convert.ToBoolean(drDb["IsIndividual"]); + } + txnSender.SourceOfFund = Convert.ToString(drDb["sourceOfFund"]); + + sendTxnRequest.Sender = txnSender; + + #endregion senderInformation + + #region receiverInformation + + TxnReceiver txnReceiver = new TxnReceiver(); + txnReceiver.ReceiverId = Convert.ToString(drDb["receiverId"]); + txnReceiver.RFullName = Convert.ToString(drDb["rfullName"]); + txnReceiver.RFirstName = Convert.ToString(drDb["rfirstName"]); + txnReceiver.RMiddleName = Convert.ToString(drDb["rmiddleName"]); + txnReceiver.RLastName = Convert.ToString(drDb["rlastName1"]); + txnReceiver.RIdType = Convert.ToString(drDb["ridType"]); + txnReceiver.RIdNo = Convert.ToString(drDb["ridNumber"]); + txnReceiver.RIdValidDate = Convert.ToString(drDb["rvalidDate"]); + txnReceiver.RDob = Convert.ToString(drDb["rdob"]); + txnReceiver.RTel = Convert.ToString(drDb["rhomePhone"]); + txnReceiver.RMobile = Convert.ToString(drDb["rmobile"]); + txnReceiver.RNativeCountry = Convert.ToString(drDb["rnativeCountry"]); + txnReceiver.RCity = Convert.ToString(drDb["rcity"]); + txnReceiver.RAdd1 = Convert.ToString(drDb["raddress"]); + txnReceiver.REmail = Convert.ToString(drDb["remail"]); + txnReceiver.RAccountNo = Convert.ToString(drDb["raccountNo"]); + txnReceiver.RCountry = Convert.ToString(drDb["rcountry"]); + txnReceiver.RCityCode = Convert.ToString(drDb["rcityCode"]); + txnReceiver.RelWithSenderName = Convert.ToString(drDb["relationName"]); + txnReceiver.RStateId = Convert.ToString(drDb["rstate"]); + txnReceiver.RLocation = Convert.ToString(drDb["pBankLocation"]); + txnReceiver.UnitaryBankAccountNo = Convert.ToString(drDb["bankAccountNo"]); + txnReceiver.RelWithSenderName = drDb["relationName"].ToString(); + if (drDb.Table.Columns.Contains("rTownCode")) + { + txnReceiver.RLocation = Convert.ToString(drDb["rTownCode"]); + } + if (drDb.Table.Columns.Contains("payerId")) + { + txnReceiver.RLocationName = Convert.ToString(drDb["payerId"]); + } + + + sendTxnRequest.Receiver = txnReceiver; + + #endregion receiverInformation + + #region txnTransaction + + TxnTransaction transaction = new TxnTransaction(); + + transaction.PCurr = Convert.ToString(drDb["payoutCurr"]); + transaction.CollCurr = Convert.ToString(drDb["collCurr"]); + transaction.CAmt = Convert.ToDecimal(drDb["cAmt"]); + transaction.PAmt = Convert.ToDecimal(drDb["pAmt"]); + transaction.TAmt = Convert.ToDecimal(drDb["tAmt"]); + transaction.ServiceCharge = Convert.ToDecimal(drDb["serviceCharge"]); + transaction.PComm = Convert.ToString(drDb["pAgentComm"]); + transaction.PaymentType = Convert.ToString(drDb["paymentMethod"]); + transaction.JMEControlNo = Convert.ToString(drDb["controlNo"]); + transaction.PurposeOfRemittanceName = Convert.ToString(drDb["purposeOfRemit"]); + + if (drDb.Table.Columns.Contains("txnDate")) + { + transaction.TxnDate = Convert.ToString(drDb["txnDate"]); + } + if (drDb.Table.Columns.Contains("ssnno")) + { + transaction.TpRefNo = Convert.ToString(drDb["ssnno"]); + } + if (drDb.Table.Columns.Contains("exRate")) + { + transaction.ExRate = Convert.ToDecimal(drDb["exRate"]); + } + if (drDb.Table.Columns.Contains("Rate")) + { + transaction.Rate = Convert.ToDecimal(drDb["Rate"]); + } + if (drDb.Table.Columns.Contains("SettlementDollarRate")) + { + transaction.SettlementDollarRate = Convert.ToDecimal(drDb["SettlementDollarRate"]); + } + transaction.PayoutMsg = Convert.ToString(drDb["remarks"]); + + sendTxnRequest.Transaction = transaction; + + #endregion txnTransaction + + #region agentInformation + + TxnAgent txnAgent = new TxnAgent(); + txnAgent.PBranchId = Convert.ToString(drDb["branchId"]); + txnAgent.PBranchName = Convert.ToString(drDb["branchName"]); + txnAgent.PBranchCity = Convert.ToString(drDb["city"]); + txnAgent.PAgentId = Convert.ToInt32(drDb["pAgent"] == "" ? null : drDb["pAgent"]); + txnAgent.PAgentName = Convert.ToString(drDb["pAgentName"]); + txnAgent.PBankType = Convert.ToString(drDb["pBankType"]); + txnAgent.PBankId = Convert.ToString(drDb["pBank"]); + txnAgent.PBankName = Convert.ToString(drDb["pBankName"]); + txnAgent.SAgentId = Convert.ToInt32(drDb["sAgent"]); + txnAgent.SAgentName = Convert.ToString(drDb["sAgentName"]); + txnAgent.SSuperAgentId = Convert.ToInt32(drDb["sSuperAgent"]); + if (drDb.Table.Columns.Contains("pBankBranchId")) + { + txnAgent.PBankBranchId = Convert.ToString(drDb["pBankBranchId"]); + } + txnAgent.SBranchId = Convert.ToInt32(drDb["sBranch"]); + if (drDb.Table.Columns.Contains("pBankBranchName")) + { + txnAgent.PBankBranchName = Convert.ToString(drDb["pBankBranchName"]); + } + + sendTxnRequest.Agent = txnAgent; + + #endregion agentInformation + if (drDb.Table.Columns.Contains("isFirstTran")) + { + sendTxnRequest.isTxnAlreadyCreated = Convert.ToString(drDb["isFirstTran"]) == "Y" ? true : false; + } + else + { + sendTxnRequest.isTxnAlreadyCreated = true; + } + + sendTxnRequest.IsRealtime = Convert.ToBoolean(drDb["IsRealtime"]); + sendTxnRequest.SessionId = Convert.ToString(Guid.NewGuid()).Replace("-", ""); + if (string.IsNullOrEmpty(sendTxnRequest.SessionId) || string.IsNullOrWhiteSpace(sendTxnRequest.SessionId)) + sendTxnRequest.SessionId = sessionId; + + if (drDb.Table.Columns.Contains("IsAccValSupported") && drDb["IsAccValSupported"] != null) + { + sendTxnRequest.IsAccValSupported = drDb["IsAccValSupported"].ToString().Equals("1") ? true : false; + } + else + sendTxnRequest.IsAccValSupported = false; + + + SendTransactionServices _tpSend = new SendTransactionServices(); + var result = _tpSend.SendTransaction(sendTxnRequest); + sql = ""; + sql = "EXEC proc_tran_api_call_history "; + sql += " @TRAN_ID =" + FilterString(sendTxnRequest.TranId.ToString()); + sql += ", @REQUESTED_BY =" + FilterString(user); + sql += ", @RESPONSE_CODE =" + FilterString(result.ResponseCode); + sql += ", @RESPONSE_MSG =" + FilterString(result.Msg); + GetSingleResult(sql); + return result; + } + } +} \ No newline at end of file diff --git a/SendMail/JMETxnPushScheduler.csproj b/SendMail/JMETxnPushScheduler.csproj new file mode 100644 index 0000000..1739f5d --- /dev/null +++ b/SendMail/JMETxnPushScheduler.csproj @@ -0,0 +1,115 @@ + + + + + Debug + AnyCPU + {5AC9671D-FB0E-4816-A870-886006FC5C19} + Exe + JMETxnPushScheduler + JMETxnPushScheduler + v4.5.2 + 512 + true + false + C:\Users\arjun.dhami\Desktop\Apps\Send Txn\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 12 + 1.0.0.%2a + false + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + EED1B4A014BB3869A82F39672A96B4BB6A715387 + + + JMETxnPushScheduler_TemporaryKey.pfx + + + true + + + false + + + false + + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + False + Microsoft .NET Framework 4.5.2 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + \ No newline at end of file diff --git a/SendMail/Program.cs b/SendMail/Program.cs new file mode 100644 index 0000000..1e4ab9c --- /dev/null +++ b/SendMail/Program.cs @@ -0,0 +1,21 @@ +using JMETxnPushScheduler.Business; +using System; + +namespace SendMail +{ + class Program + { + + static void Main(string[] args) + { + Console.WriteLine("Scheduler started on: " + DateTime.Now); + TxnPush _txnPush = new TxnPush(); + _txnPush.TxnSyncMain(); + // _txnPush.TxnReleaseMain(); + Console.WriteLine("Scheduler started on: " + DateTime.Now); + + + } + + } +} diff --git a/SendMail/Properties/AssemblyInfo.cs b/SendMail/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e2868d4 --- /dev/null +++ b/SendMail/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +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("SendMail")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SendMail")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[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("5ac9671d-fb0e-4816-a870-886006fc5c19")] + +// 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 Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SendMail/Repository/SendRepository.cs b/SendMail/Repository/SendRepository.cs new file mode 100644 index 0000000..68f1eb4 --- /dev/null +++ b/SendMail/Repository/SendRepository.cs @@ -0,0 +1,28 @@ +using JMETxnPushScheduler.Business; +using JMETxnPushScheduler.DAO; +using System.Data; + +namespace JMETxnPushScheduler.Repository +{ + public class SendRepository + { + SwiftDao _dao = new SwiftDao(); + + + public DataTable GetMailDetails() + { + var sql = "EXEC proc_SendMail @flag = 'sendMial'"; + + + return _dao.ExecuteDataTable(sql); + } + public DataTable ErrorEmail() + { + var sql = "EXEC proc_SendMail @flag = 'error'"; + + return _dao.ExecuteDataTable(sql); + } + + + } +} diff --git a/SendMail/packages.config b/SendMail/packages.config new file mode 100644 index 0000000..0dcc305 --- /dev/null +++ b/SendMail/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file