Initial
This commit is contained in:
commit
3e0a3992e6
755
.gitignore
vendored
Normal file
755
.gitignore
vendored
Normal file
|
@ -0,0 +1,755 @@
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/csharp,angular,aspnetcore,visualstudio,visualstudiocode
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=csharp,angular,aspnetcore,visualstudio,visualstudiocode
|
||||||
|
|
||||||
|
### Angular ###
|
||||||
|
## Angular ##
|
||||||
|
# compiled output
|
||||||
|
dist/
|
||||||
|
tmp/
|
||||||
|
app/**/*.js
|
||||||
|
app/**/*.js.map
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
bower_components/
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
|
||||||
|
# IDEs and editors
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.sass-cache/
|
||||||
|
connect.lock/
|
||||||
|
coverage/
|
||||||
|
libpeerconnection.log/
|
||||||
|
npm-debug.log
|
||||||
|
testem.log
|
||||||
|
typings/
|
||||||
|
.angular/
|
||||||
|
|
||||||
|
# e2e
|
||||||
|
e2e/*.js
|
||||||
|
e2e/*.map
|
||||||
|
|
||||||
|
# System Files
|
||||||
|
.DS_Store/
|
||||||
|
|
||||||
|
### ASPNETCore ###
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# DNX
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# TODO: 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
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/packages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/packages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/packages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignoreable 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# 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/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush
|
||||||
|
.cr/
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/
|
||||||
|
|
||||||
|
### Csharp ###
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_h.h
|
||||||
|
*.iobj
|
||||||
|
*.ipdb
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.tlog
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
*.vbp
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
*.dsw
|
||||||
|
*.dsp
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
|
||||||
|
# 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/
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
.vshistory/
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Windows Installer files from build outputs
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
### VisualStudio ###
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
|
||||||
|
# Others
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
|
||||||
|
# Windows Installer files from build outputs
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
|
||||||
|
### VisualStudio Patch ###
|
||||||
|
# Additional files built by Visual Studio
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/csharp,angular,aspnetcore,visualstudio,visualstudiocode
|
||||||
|
/HRM.UI/appsettings.json
|
||||||
|
/HRM.UI/appsettings.json
|
||||||
|
/HRM.UI/appsettings.json
|
||||||
|
/HRM.UI/appsettings.json
|
77
CEL.HRM.5.sln
Normal file
77
CEL.HRM.5.sln
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.9.34728.123
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.UI", "HRM.UI\HRM.UI.csproj", "{3E1F9D0F-BCE2-4E3B-8AE1-CD1775AF9044}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ease.Core", "Ease.Core\Ease.Core.csproj", "{BEFCAD7A-6B9C-4ADA-A620-E666B5C26407}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.DA", "HRM.DA\HRM.DA.csproj", "{928CCCDF-A39E-43A6-8776-4FEE90100074}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.BO", "HRM.BO\HRM.BO.csproj", "{26810BDB-91FA-42F0-91FE-6C273012D307}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.Report", "HRM.Report\HRM.Report.csproj", "{971FA68B-369A-41BB-BF43-20EE78DEBBDE}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.AttendanceAutoProcess", "HRM.AttendanceAutoProcess\HRM.AttendanceAutoProcess.csproj", "{9D590FDC-DCBF-4EFA-BBAD-43501ECB6305}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HRM.MailNotificationProcess", "HRM.MailNotificationProcess\HRM.MailNotificationProcess.csproj", "{07405782-10D4-49A6-830B-FF011AC93327}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Erecruitment.UI", "Erecruitment.UI\Erecruitment.UI.csproj", "{C0DEA26B-7A77-4512-B0CB-D92A0C533CFC}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DatabaseComparison", "DatabaseComparison\DatabaseComparison.csproj", "{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{3E1F9D0F-BCE2-4E3B-8AE1-CD1775AF9044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3E1F9D0F-BCE2-4E3B-8AE1-CD1775AF9044}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3E1F9D0F-BCE2-4E3B-8AE1-CD1775AF9044}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3E1F9D0F-BCE2-4E3B-8AE1-CD1775AF9044}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{BEFCAD7A-6B9C-4ADA-A620-E666B5C26407}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BEFCAD7A-6B9C-4ADA-A620-E666B5C26407}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BEFCAD7A-6B9C-4ADA-A620-E666B5C26407}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{BEFCAD7A-6B9C-4ADA-A620-E666B5C26407}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{928CCCDF-A39E-43A6-8776-4FEE90100074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{928CCCDF-A39E-43A6-8776-4FEE90100074}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{928CCCDF-A39E-43A6-8776-4FEE90100074}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{928CCCDF-A39E-43A6-8776-4FEE90100074}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{26810BDB-91FA-42F0-91FE-6C273012D307}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{26810BDB-91FA-42F0-91FE-6C273012D307}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{26810BDB-91FA-42F0-91FE-6C273012D307}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{26810BDB-91FA-42F0-91FE-6C273012D307}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{971FA68B-369A-41BB-BF43-20EE78DEBBDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{971FA68B-369A-41BB-BF43-20EE78DEBBDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{971FA68B-369A-41BB-BF43-20EE78DEBBDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{971FA68B-369A-41BB-BF43-20EE78DEBBDE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{9D590FDC-DCBF-4EFA-BBAD-43501ECB6305}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9D590FDC-DCBF-4EFA-BBAD-43501ECB6305}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9D590FDC-DCBF-4EFA-BBAD-43501ECB6305}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9D590FDC-DCBF-4EFA-BBAD-43501ECB6305}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{07405782-10D4-49A6-830B-FF011AC93327}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{07405782-10D4-49A6-830B-FF011AC93327}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{07405782-10D4-49A6-830B-FF011AC93327}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{07405782-10D4-49A6-830B-FF011AC93327}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C0DEA26B-7A77-4512-B0CB-D92A0C533CFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C0DEA26B-7A77-4512-B0CB-D92A0C533CFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C0DEA26B-7A77-4512-B0CB-D92A0C533CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C0DEA26B-7A77-4512-B0CB-D92A0C533CFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {5B2B9F46-8435-47E8-AE43-6DDA118BD830}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SubversionScc) = preSolution
|
||||||
|
Svn-Managed = True
|
||||||
|
Manager = AnkhSVN2019 - Subversion Support for Visual Studio
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
5
DatabaseComparison/App.config
Normal file
5
DatabaseComparison/App.config
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup>
|
||||||
|
</configuration>
|
107
DatabaseComparison/DatabaseComparison.csproj
Normal file
107
DatabaseComparison/DatabaseComparison.csproj
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<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>
|
||||||
|
<ProjectGuid>{9AA39EFC-3B4F-4D3D-928C-5E2C178ED105}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>DatabaseComparison</RootNamespace>
|
||||||
|
<AssemblyName>DatabaseComparison</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<SccProjectName>Svn</SccProjectName>
|
||||||
|
<SccLocalPath>Svn</SccLocalPath>
|
||||||
|
<SccAuxPath>Svn</SccAuxPath>
|
||||||
|
<SccProvider>SubversionScc</SccProvider>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Form1.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Form1.Designer.cs">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Form2.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Form2.Designer.cs">
|
||||||
|
<DependentUpon>Form2.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="Form1.resx">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Form2.resx">
|
||||||
|
<DependentUpon>Form2.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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>
|
625
DatabaseComparison/Form1.Designer.cs
generated
Normal file
625
DatabaseComparison/Form1.Designer.cs
generated
Normal file
|
@ -0,0 +1,625 @@
|
||||||
|
namespace DatabaseComparison
|
||||||
|
{
|
||||||
|
partial class Form1
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.cmbSourceDatabase = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.txtSourceServer = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.txtSourceUserNane = new System.Windows.Forms.TextBox();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.txtSourcePassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.btnGetSource = new System.Windows.Forms.Button();
|
||||||
|
this.cmbDestinationDatabase = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
|
this.txtDestinationServer = new System.Windows.Forms.TextBox();
|
||||||
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
|
this.txtDestinationUserNane = new System.Windows.Forms.TextBox();
|
||||||
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
|
this.txtDestinationPassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.btnGetDestination = new System.Windows.Forms.Button();
|
||||||
|
this.lsvSourceList = new System.Windows.Forms.ListView();
|
||||||
|
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.lblSourceCount = new System.Windows.Forms.Label();
|
||||||
|
this.lsvDestinationList = new System.Windows.Forms.ListView();
|
||||||
|
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.lblDestinationCount = new System.Windows.Forms.Label();
|
||||||
|
this.btnCompate = new System.Windows.Forms.Button();
|
||||||
|
this.rtbText = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||||
|
this.button1 = new System.Windows.Forms.Button();
|
||||||
|
this.grdList = new System.Windows.Forms.DataGridView();
|
||||||
|
this.colTabName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colColName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colDataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colLength = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colAllowNull = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colDefaultValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colDR = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colPrecision = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.colScale = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
|
this.btnCreateScript = new System.Windows.Forms.Button();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.lblMsg = new System.Windows.Forms.Label();
|
||||||
|
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||||
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
|
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||||
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
|
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||||
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.grdList)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// cmbSourceDatabase
|
||||||
|
//
|
||||||
|
this.cmbSourceDatabase.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbSourceDatabase.FormattingEnabled = true;
|
||||||
|
this.cmbSourceDatabase.Location = new System.Drawing.Point(82, 151);
|
||||||
|
this.cmbSourceDatabase.Name = "cmbSourceDatabase";
|
||||||
|
this.cmbSourceDatabase.Size = new System.Drawing.Size(173, 21);
|
||||||
|
this.cmbSourceDatabase.TabIndex = 0;
|
||||||
|
this.cmbSourceDatabase.SelectedIndexChanged += new System.EventHandler(this.cmbSourceDatabase_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(243, 18);
|
||||||
|
this.label1.TabIndex = 1;
|
||||||
|
this.label1.Text = "Source";
|
||||||
|
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.Location = new System.Drawing.Point(12, 155);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.label3.TabIndex = 1;
|
||||||
|
this.label3.Text = "Database";
|
||||||
|
//
|
||||||
|
// txtSourceServer
|
||||||
|
//
|
||||||
|
this.txtSourceServer.Location = new System.Drawing.Point(82, 44);
|
||||||
|
this.txtSourceServer.Name = "txtSourceServer";
|
||||||
|
this.txtSourceServer.Size = new System.Drawing.Size(173, 20);
|
||||||
|
this.txtSourceServer.TabIndex = 2;
|
||||||
|
this.txtSourceServer.Text = "103.197.204.164,1718";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(12, 47);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(38, 13);
|
||||||
|
this.label2.TabIndex = 1;
|
||||||
|
this.label2.Text = "Server";
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
this.label4.AutoSize = true;
|
||||||
|
this.label4.Location = new System.Drawing.Point(12, 73);
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
this.label4.Size = new System.Drawing.Size(60, 13);
|
||||||
|
this.label4.TabIndex = 1;
|
||||||
|
this.label4.Text = "User Name";
|
||||||
|
//
|
||||||
|
// txtSourceUserNane
|
||||||
|
//
|
||||||
|
this.txtSourceUserNane.Location = new System.Drawing.Point(82, 70);
|
||||||
|
this.txtSourceUserNane.Name = "txtSourceUserNane";
|
||||||
|
this.txtSourceUserNane.Size = new System.Drawing.Size(173, 20);
|
||||||
|
this.txtSourceUserNane.TabIndex = 2;
|
||||||
|
this.txtSourceUserNane.Text = "sysuser";
|
||||||
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
this.label5.AutoSize = true;
|
||||||
|
this.label5.Location = new System.Drawing.Point(12, 99);
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
this.label5.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.label5.TabIndex = 1;
|
||||||
|
this.label5.Text = "Password";
|
||||||
|
//
|
||||||
|
// txtSourcePassword
|
||||||
|
//
|
||||||
|
this.txtSourcePassword.Location = new System.Drawing.Point(82, 96);
|
||||||
|
this.txtSourcePassword.Name = "txtSourcePassword";
|
||||||
|
this.txtSourcePassword.Size = new System.Drawing.Size(173, 20);
|
||||||
|
this.txtSourcePassword.TabIndex = 2;
|
||||||
|
this.txtSourcePassword.Text = "cel1@3$5";
|
||||||
|
//
|
||||||
|
// btnGetSource
|
||||||
|
//
|
||||||
|
this.btnGetSource.Location = new System.Drawing.Point(121, 122);
|
||||||
|
this.btnGetSource.Name = "btnGetSource";
|
||||||
|
this.btnGetSource.Size = new System.Drawing.Size(94, 23);
|
||||||
|
this.btnGetSource.TabIndex = 3;
|
||||||
|
this.btnGetSource.Text = "Get Database";
|
||||||
|
this.btnGetSource.UseVisualStyleBackColor = true;
|
||||||
|
this.btnGetSource.Click += new System.EventHandler(this.btnGetSource_Click);
|
||||||
|
//
|
||||||
|
// cmbDestinationDatabase
|
||||||
|
//
|
||||||
|
this.cmbDestinationDatabase.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbDestinationDatabase.FormattingEnabled = true;
|
||||||
|
this.cmbDestinationDatabase.Location = new System.Drawing.Point(352, 151);
|
||||||
|
this.cmbDestinationDatabase.Name = "cmbDestinationDatabase";
|
||||||
|
this.cmbDestinationDatabase.Size = new System.Drawing.Size(168, 21);
|
||||||
|
this.cmbDestinationDatabase.TabIndex = 0;
|
||||||
|
this.cmbDestinationDatabase.SelectedIndexChanged += new System.EventHandler(this.cmbDestinationDatabase_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
this.label6.AutoSize = true;
|
||||||
|
this.label6.Location = new System.Drawing.Point(282, 155);
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
this.label6.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.label6.TabIndex = 1;
|
||||||
|
this.label6.Text = "Database";
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
this.label7.AutoSize = true;
|
||||||
|
this.label7.Location = new System.Drawing.Point(282, 47);
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
this.label7.Size = new System.Drawing.Size(38, 13);
|
||||||
|
this.label7.TabIndex = 1;
|
||||||
|
this.label7.Text = "Server";
|
||||||
|
//
|
||||||
|
// txtDestinationServer
|
||||||
|
//
|
||||||
|
this.txtDestinationServer.Location = new System.Drawing.Point(352, 44);
|
||||||
|
this.txtDestinationServer.Name = "txtDestinationServer";
|
||||||
|
this.txtDestinationServer.Size = new System.Drawing.Size(168, 20);
|
||||||
|
this.txtDestinationServer.TabIndex = 2;
|
||||||
|
this.txtDestinationServer.Text = "103.197.204.163, 3341";
|
||||||
|
//
|
||||||
|
// label8
|
||||||
|
//
|
||||||
|
this.label8.AutoSize = true;
|
||||||
|
this.label8.Location = new System.Drawing.Point(282, 73);
|
||||||
|
this.label8.Name = "label8";
|
||||||
|
this.label8.Size = new System.Drawing.Size(60, 13);
|
||||||
|
this.label8.TabIndex = 1;
|
||||||
|
this.label8.Text = "User Name";
|
||||||
|
//
|
||||||
|
// txtDestinationUserNane
|
||||||
|
//
|
||||||
|
this.txtDestinationUserNane.Location = new System.Drawing.Point(352, 70);
|
||||||
|
this.txtDestinationUserNane.Name = "txtDestinationUserNane";
|
||||||
|
this.txtDestinationUserNane.Size = new System.Drawing.Size(168, 20);
|
||||||
|
this.txtDestinationUserNane.TabIndex = 2;
|
||||||
|
this.txtDestinationUserNane.Text = "hrpayrolluser";
|
||||||
|
//
|
||||||
|
// label9
|
||||||
|
//
|
||||||
|
this.label9.AutoSize = true;
|
||||||
|
this.label9.Location = new System.Drawing.Point(282, 99);
|
||||||
|
this.label9.Name = "label9";
|
||||||
|
this.label9.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.label9.TabIndex = 1;
|
||||||
|
this.label9.Text = "Password";
|
||||||
|
//
|
||||||
|
// txtDestinationPassword
|
||||||
|
//
|
||||||
|
this.txtDestinationPassword.Location = new System.Drawing.Point(352, 96);
|
||||||
|
this.txtDestinationPassword.Name = "txtDestinationPassword";
|
||||||
|
this.txtDestinationPassword.Size = new System.Drawing.Size(168, 20);
|
||||||
|
this.txtDestinationPassword.TabIndex = 2;
|
||||||
|
this.txtDestinationPassword.Text = "hrpayrolluser";
|
||||||
|
//
|
||||||
|
// btnGetDestination
|
||||||
|
//
|
||||||
|
this.btnGetDestination.Location = new System.Drawing.Point(385, 122);
|
||||||
|
this.btnGetDestination.Name = "btnGetDestination";
|
||||||
|
this.btnGetDestination.Size = new System.Drawing.Size(94, 23);
|
||||||
|
this.btnGetDestination.TabIndex = 3;
|
||||||
|
this.btnGetDestination.Text = "Get Database";
|
||||||
|
this.btnGetDestination.UseVisualStyleBackColor = true;
|
||||||
|
this.btnGetDestination.Click += new System.EventHandler(this.btnGetDestination_Click);
|
||||||
|
//
|
||||||
|
// lsvSourceList
|
||||||
|
//
|
||||||
|
this.lsvSourceList.CheckBoxes = true;
|
||||||
|
this.lsvSourceList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||||
|
this.columnHeader1});
|
||||||
|
this.lsvSourceList.GridLines = true;
|
||||||
|
this.lsvSourceList.Location = new System.Drawing.Point(15, 178);
|
||||||
|
this.lsvSourceList.Name = "lsvSourceList";
|
||||||
|
this.lsvSourceList.Size = new System.Drawing.Size(240, 410);
|
||||||
|
this.lsvSourceList.TabIndex = 4;
|
||||||
|
this.lsvSourceList.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.lsvSourceList.View = System.Windows.Forms.View.Details;
|
||||||
|
//
|
||||||
|
// columnHeader1
|
||||||
|
//
|
||||||
|
this.columnHeader1.Text = "Table Name";
|
||||||
|
this.columnHeader1.Width = 210;
|
||||||
|
//
|
||||||
|
// lblSourceCount
|
||||||
|
//
|
||||||
|
this.lblSourceCount.AutoSize = true;
|
||||||
|
this.lblSourceCount.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblSourceCount.Location = new System.Drawing.Point(19, 608);
|
||||||
|
this.lblSourceCount.Name = "lblSourceCount";
|
||||||
|
this.lblSourceCount.Size = new System.Drawing.Size(0, 13);
|
||||||
|
this.lblSourceCount.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// lsvDestinationList
|
||||||
|
//
|
||||||
|
this.lsvDestinationList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||||
|
this.columnHeader2});
|
||||||
|
this.lsvDestinationList.GridLines = true;
|
||||||
|
this.lsvDestinationList.Location = new System.Drawing.Point(285, 178);
|
||||||
|
this.lsvDestinationList.Name = "lsvDestinationList";
|
||||||
|
this.lsvDestinationList.Size = new System.Drawing.Size(235, 410);
|
||||||
|
this.lsvDestinationList.TabIndex = 4;
|
||||||
|
this.lsvDestinationList.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.lsvDestinationList.View = System.Windows.Forms.View.Details;
|
||||||
|
//
|
||||||
|
// columnHeader2
|
||||||
|
//
|
||||||
|
this.columnHeader2.Text = "Table Name";
|
||||||
|
this.columnHeader2.Width = 210;
|
||||||
|
//
|
||||||
|
// lblDestinationCount
|
||||||
|
//
|
||||||
|
this.lblDestinationCount.AutoSize = true;
|
||||||
|
this.lblDestinationCount.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblDestinationCount.Location = new System.Drawing.Point(363, 608);
|
||||||
|
this.lblDestinationCount.Name = "lblDestinationCount";
|
||||||
|
this.lblDestinationCount.Size = new System.Drawing.Size(0, 13);
|
||||||
|
this.lblDestinationCount.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// btnCompate
|
||||||
|
//
|
||||||
|
this.btnCompate.BackColor = System.Drawing.Color.LightCoral;
|
||||||
|
this.btnCompate.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnCompate.Location = new System.Drawing.Point(285, 594);
|
||||||
|
this.btnCompate.Name = "btnCompate";
|
||||||
|
this.btnCompate.Size = new System.Drawing.Size(235, 32);
|
||||||
|
this.btnCompate.TabIndex = 5;
|
||||||
|
this.btnCompate.Text = "Compare";
|
||||||
|
this.btnCompate.UseVisualStyleBackColor = false;
|
||||||
|
this.btnCompate.Click += new System.EventHandler(this.btnCompate_Click);
|
||||||
|
//
|
||||||
|
// rtbText
|
||||||
|
//
|
||||||
|
this.rtbText.Location = new System.Drawing.Point(945, 69);
|
||||||
|
this.rtbText.Name = "rtbText";
|
||||||
|
this.rtbText.Size = new System.Drawing.Size(22, 17);
|
||||||
|
this.rtbText.TabIndex = 6;
|
||||||
|
this.rtbText.Text = "";
|
||||||
|
//
|
||||||
|
// checkBox1
|
||||||
|
//
|
||||||
|
this.checkBox1.AutoSize = true;
|
||||||
|
this.checkBox1.Location = new System.Drawing.Point(20, 592);
|
||||||
|
this.checkBox1.Name = "checkBox1";
|
||||||
|
this.checkBox1.Size = new System.Drawing.Size(70, 17);
|
||||||
|
this.checkBox1.TabIndex = 7;
|
||||||
|
this.checkBox1.Text = "Select All";
|
||||||
|
this.checkBox1.UseVisualStyleBackColor = true;
|
||||||
|
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
|
||||||
|
//
|
||||||
|
// button1
|
||||||
|
//
|
||||||
|
this.button1.Location = new System.Drawing.Point(996, 63);
|
||||||
|
this.button1.Name = "button1";
|
||||||
|
this.button1.Size = new System.Drawing.Size(102, 23);
|
||||||
|
this.button1.TabIndex = 8;
|
||||||
|
this.button1.Text = "Copy to Clipboard";
|
||||||
|
this.button1.UseVisualStyleBackColor = true;
|
||||||
|
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||||
|
//
|
||||||
|
// grdList
|
||||||
|
//
|
||||||
|
this.grdList.AllowUserToAddRows = false;
|
||||||
|
this.grdList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
|
this.grdList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||||
|
this.colTabName,
|
||||||
|
this.colColName,
|
||||||
|
this.colDataType,
|
||||||
|
this.colLength,
|
||||||
|
this.colAllowNull,
|
||||||
|
this.colDefaultValue,
|
||||||
|
this.colDR,
|
||||||
|
this.colPrecision,
|
||||||
|
this.colScale});
|
||||||
|
this.grdList.Location = new System.Drawing.Point(530, 44);
|
||||||
|
this.grdList.MultiSelect = false;
|
||||||
|
this.grdList.Name = "grdList";
|
||||||
|
this.grdList.RowHeadersVisible = false;
|
||||||
|
this.grdList.Size = new System.Drawing.Size(738, 544);
|
||||||
|
this.grdList.TabIndex = 9;
|
||||||
|
this.grdList.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.grdList_CellValueChanged);
|
||||||
|
this.grdList.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.grdList_CellValueChanged);
|
||||||
|
//
|
||||||
|
// colTabName
|
||||||
|
//
|
||||||
|
this.colTabName.HeaderText = "Table Nme";
|
||||||
|
this.colTabName.Name = "colTabName";
|
||||||
|
this.colTabName.ReadOnly = true;
|
||||||
|
this.colTabName.Width = 200;
|
||||||
|
//
|
||||||
|
// colColName
|
||||||
|
//
|
||||||
|
this.colColName.HeaderText = "Column Name";
|
||||||
|
this.colColName.Name = "colColName";
|
||||||
|
this.colColName.ReadOnly = true;
|
||||||
|
this.colColName.Width = 170;
|
||||||
|
//
|
||||||
|
// colDataType
|
||||||
|
//
|
||||||
|
this.colDataType.HeaderText = "Data Type";
|
||||||
|
this.colDataType.Name = "colDataType";
|
||||||
|
this.colDataType.ReadOnly = true;
|
||||||
|
this.colDataType.Width = 90;
|
||||||
|
//
|
||||||
|
// colLength
|
||||||
|
//
|
||||||
|
this.colLength.HeaderText = "Length";
|
||||||
|
this.colLength.Name = "colLength";
|
||||||
|
this.colLength.Width = 60;
|
||||||
|
//
|
||||||
|
// colAllowNull
|
||||||
|
//
|
||||||
|
this.colAllowNull.HeaderText = "Allow Null";
|
||||||
|
this.colAllowNull.Name = "colAllowNull";
|
||||||
|
this.colAllowNull.ReadOnly = true;
|
||||||
|
this.colAllowNull.Width = 60;
|
||||||
|
//
|
||||||
|
// colDefaultValue
|
||||||
|
//
|
||||||
|
this.colDefaultValue.HeaderText = "Default Value";
|
||||||
|
this.colDefaultValue.Name = "colDefaultValue";
|
||||||
|
this.colDefaultValue.Width = 80;
|
||||||
|
//
|
||||||
|
// colDR
|
||||||
|
//
|
||||||
|
this.colDR.HeaderText = "Value Required";
|
||||||
|
this.colDR.Name = "colDR";
|
||||||
|
this.colDR.Width = 60;
|
||||||
|
//
|
||||||
|
// colPrecision
|
||||||
|
//
|
||||||
|
this.colPrecision.HeaderText = "Precision";
|
||||||
|
this.colPrecision.Name = "colPrecision";
|
||||||
|
this.colPrecision.Width = 50;
|
||||||
|
//
|
||||||
|
// colScale
|
||||||
|
//
|
||||||
|
this.colScale.HeaderText = "Scale";
|
||||||
|
this.colScale.Name = "colScale";
|
||||||
|
this.colScale.Width = 50;
|
||||||
|
//
|
||||||
|
// label10
|
||||||
|
//
|
||||||
|
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label10.Location = new System.Drawing.Point(282, 9);
|
||||||
|
this.label10.Name = "label10";
|
||||||
|
this.label10.Size = new System.Drawing.Size(238, 18);
|
||||||
|
this.label10.TabIndex = 1;
|
||||||
|
this.label10.Text = "Destination";
|
||||||
|
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// btnCreateScript
|
||||||
|
//
|
||||||
|
this.btnCreateScript.BackColor = System.Drawing.Color.PaleGreen;
|
||||||
|
this.btnCreateScript.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnCreateScript.Location = new System.Drawing.Point(1082, 594);
|
||||||
|
this.btnCreateScript.Name = "btnCreateScript";
|
||||||
|
this.btnCreateScript.Size = new System.Drawing.Size(186, 32);
|
||||||
|
this.btnCreateScript.TabIndex = 5;
|
||||||
|
this.btnCreateScript.Text = "Generate Script";
|
||||||
|
this.btnCreateScript.UseVisualStyleBackColor = false;
|
||||||
|
this.btnCreateScript.Click += new System.EventHandler(this.btnCreateScript_Click);
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.BackColor = System.Drawing.Color.Olive;
|
||||||
|
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel1.Location = new System.Drawing.Point(264, 9);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(10, 579);
|
||||||
|
this.panel1.TabIndex = 10;
|
||||||
|
//
|
||||||
|
// lblMsg
|
||||||
|
//
|
||||||
|
this.lblMsg.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblMsg.ForeColor = System.Drawing.Color.Blue;
|
||||||
|
this.lblMsg.Location = new System.Drawing.Point(527, 591);
|
||||||
|
this.lblMsg.Name = "lblMsg";
|
||||||
|
this.lblMsg.Size = new System.Drawing.Size(426, 35);
|
||||||
|
this.lblMsg.TabIndex = 15;
|
||||||
|
//
|
||||||
|
// textBox1
|
||||||
|
//
|
||||||
|
this.textBox1.Location = new System.Drawing.Point(610, 11);
|
||||||
|
this.textBox1.Name = "textBox1";
|
||||||
|
this.textBox1.Size = new System.Drawing.Size(149, 20);
|
||||||
|
this.textBox1.TabIndex = 17;
|
||||||
|
//
|
||||||
|
// label11
|
||||||
|
//
|
||||||
|
this.label11.AutoSize = true;
|
||||||
|
this.label11.Location = new System.Drawing.Point(540, 14);
|
||||||
|
this.label11.Name = "label11";
|
||||||
|
this.label11.Size = new System.Drawing.Size(43, 13);
|
||||||
|
this.label11.TabIndex = 16;
|
||||||
|
this.label11.Text = "User ID";
|
||||||
|
//
|
||||||
|
// textBox2
|
||||||
|
//
|
||||||
|
this.textBox2.Location = new System.Drawing.Point(872, 10);
|
||||||
|
this.textBox2.Name = "textBox2";
|
||||||
|
this.textBox2.Size = new System.Drawing.Size(146, 20);
|
||||||
|
this.textBox2.TabIndex = 19;
|
||||||
|
//
|
||||||
|
// label12
|
||||||
|
//
|
||||||
|
this.label12.AutoSize = true;
|
||||||
|
this.label12.Location = new System.Drawing.Point(787, 13);
|
||||||
|
this.label12.Name = "label12";
|
||||||
|
this.label12.Size = new System.Drawing.Size(79, 13);
|
||||||
|
this.label12.TabIndex = 18;
|
||||||
|
this.label12.Text = "Payroll Type ID";
|
||||||
|
//
|
||||||
|
// textBox3
|
||||||
|
//
|
||||||
|
this.textBox3.Location = new System.Drawing.Point(1122, 11);
|
||||||
|
this.textBox3.Name = "textBox3";
|
||||||
|
this.textBox3.Size = new System.Drawing.Size(146, 20);
|
||||||
|
this.textBox3.TabIndex = 21;
|
||||||
|
//
|
||||||
|
// label13
|
||||||
|
//
|
||||||
|
this.label13.AutoSize = true;
|
||||||
|
this.label13.Location = new System.Drawing.Point(1037, 14);
|
||||||
|
this.label13.Name = "label13";
|
||||||
|
this.label13.Size = new System.Drawing.Size(70, 13);
|
||||||
|
this.label13.TabIndex = 20;
|
||||||
|
this.label13.Text = "Created Date";
|
||||||
|
this.label13.Click += new System.EventHandler(this.label13_Click);
|
||||||
|
//
|
||||||
|
// Form1
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(1274, 630);
|
||||||
|
this.Controls.Add(this.textBox3);
|
||||||
|
this.Controls.Add(this.label13);
|
||||||
|
this.Controls.Add(this.textBox2);
|
||||||
|
this.Controls.Add(this.label12);
|
||||||
|
this.Controls.Add(this.textBox1);
|
||||||
|
this.Controls.Add(this.label11);
|
||||||
|
this.Controls.Add(this.lblMsg);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.grdList);
|
||||||
|
this.Controls.Add(this.button1);
|
||||||
|
this.Controls.Add(this.checkBox1);
|
||||||
|
this.Controls.Add(this.rtbText);
|
||||||
|
this.Controls.Add(this.btnCreateScript);
|
||||||
|
this.Controls.Add(this.btnCompate);
|
||||||
|
this.Controls.Add(this.lsvDestinationList);
|
||||||
|
this.Controls.Add(this.lsvSourceList);
|
||||||
|
this.Controls.Add(this.btnGetDestination);
|
||||||
|
this.Controls.Add(this.btnGetSource);
|
||||||
|
this.Controls.Add(this.txtDestinationPassword);
|
||||||
|
this.Controls.Add(this.lblDestinationCount);
|
||||||
|
this.Controls.Add(this.lblSourceCount);
|
||||||
|
this.Controls.Add(this.label9);
|
||||||
|
this.Controls.Add(this.txtSourcePassword);
|
||||||
|
this.Controls.Add(this.txtDestinationUserNane);
|
||||||
|
this.Controls.Add(this.label5);
|
||||||
|
this.Controls.Add(this.label8);
|
||||||
|
this.Controls.Add(this.txtSourceUserNane);
|
||||||
|
this.Controls.Add(this.txtDestinationServer);
|
||||||
|
this.Controls.Add(this.label4);
|
||||||
|
this.Controls.Add(this.label7);
|
||||||
|
this.Controls.Add(this.txtSourceServer);
|
||||||
|
this.Controls.Add(this.label6);
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.label3);
|
||||||
|
this.Controls.Add(this.cmbDestinationDatabase);
|
||||||
|
this.Controls.Add(this.label10);
|
||||||
|
this.Controls.Add(this.label1);
|
||||||
|
this.Controls.Add(this.cmbSourceDatabase);
|
||||||
|
this.Name = "Form1";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "Compare Database";
|
||||||
|
this.Load += new System.EventHandler(this.Form1_Load);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.grdList)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.ComboBox cmbSourceDatabase;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.TextBox txtSourceServer;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.TextBox txtSourceUserNane;
|
||||||
|
private System.Windows.Forms.Label label5;
|
||||||
|
private System.Windows.Forms.TextBox txtSourcePassword;
|
||||||
|
private System.Windows.Forms.Button btnGetSource;
|
||||||
|
private System.Windows.Forms.ComboBox cmbDestinationDatabase;
|
||||||
|
private System.Windows.Forms.Label label6;
|
||||||
|
private System.Windows.Forms.Label label7;
|
||||||
|
private System.Windows.Forms.TextBox txtDestinationServer;
|
||||||
|
private System.Windows.Forms.Label label8;
|
||||||
|
private System.Windows.Forms.TextBox txtDestinationUserNane;
|
||||||
|
private System.Windows.Forms.Label label9;
|
||||||
|
private System.Windows.Forms.TextBox txtDestinationPassword;
|
||||||
|
private System.Windows.Forms.Button btnGetDestination;
|
||||||
|
private System.Windows.Forms.ListView lsvSourceList;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||||
|
private System.Windows.Forms.Label lblSourceCount;
|
||||||
|
private System.Windows.Forms.ListView lsvDestinationList;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||||
|
private System.Windows.Forms.Label lblDestinationCount;
|
||||||
|
private System.Windows.Forms.Button btnCompate;
|
||||||
|
private System.Windows.Forms.RichTextBox rtbText;
|
||||||
|
private System.Windows.Forms.CheckBox checkBox1;
|
||||||
|
private System.Windows.Forms.Button button1;
|
||||||
|
private System.Windows.Forms.DataGridView grdList;
|
||||||
|
private System.Windows.Forms.Label label10;
|
||||||
|
private System.Windows.Forms.Button btnCreateScript;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Label lblMsg;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colTabName;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colColName;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colDataType;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colLength;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colAllowNull;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colDefaultValue;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colDR;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colPrecision;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn colScale;
|
||||||
|
private System.Windows.Forms.TextBox textBox1;
|
||||||
|
private System.Windows.Forms.Label label11;
|
||||||
|
private System.Windows.Forms.TextBox textBox2;
|
||||||
|
private System.Windows.Forms.Label label12;
|
||||||
|
private System.Windows.Forms.TextBox textBox3;
|
||||||
|
private System.Windows.Forms.Label label13;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
2752
DatabaseComparison/Form1.cs
Normal file
2752
DatabaseComparison/Form1.cs
Normal file
File diff suppressed because it is too large
Load Diff
174
DatabaseComparison/Form1.resx
Normal file
174
DatabaseComparison/Form1.resx
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="colTabName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colColName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colLength.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colAllowNull.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDefaultValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colPrecision.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colScale.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colTabName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colColName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colLength.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colAllowNull.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDefaultValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colDR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colPrecision.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="colScale.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
71
DatabaseComparison/Form2.Designer.cs
generated
Normal file
71
DatabaseComparison/Form2.Designer.cs
generated
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
namespace DatabaseComparison
|
||||||
|
{
|
||||||
|
partial class Form2
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Controls.Add(this.richTextBox1);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(954, 413);
|
||||||
|
this.panel1.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// richTextBox1
|
||||||
|
//
|
||||||
|
this.richTextBox1.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.richTextBox1.Name = "richTextBox1";
|
||||||
|
this.richTextBox1.Size = new System.Drawing.Size(948, 407);
|
||||||
|
this.richTextBox1.TabIndex = 0;
|
||||||
|
this.richTextBox1.Text = "";
|
||||||
|
//
|
||||||
|
// Form2
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(978, 437);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Name = "Form2";
|
||||||
|
this.Text = "Form2";
|
||||||
|
this.Load += new System.EventHandler(this.Form2_Load);
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||||
|
}
|
||||||
|
}
|
32
DatabaseComparison/Form2.cs
Normal file
32
DatabaseComparison/Form2.cs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DatabaseComparison
|
||||||
|
{
|
||||||
|
public partial class Form2 : Form
|
||||||
|
{
|
||||||
|
public Form2()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShowDialog(string errorText)
|
||||||
|
{
|
||||||
|
richTextBox1.Text = errorText;
|
||||||
|
this.ShowDialog();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Form2_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
DatabaseComparison/Form2.resx
Normal file
120
DatabaseComparison/Form2.resx
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
22
DatabaseComparison/Program.cs
Normal file
22
DatabaseComparison/Program.cs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DatabaseComparison
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new Form1());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
DatabaseComparison/Properties/AssemblyInfo.cs
Normal file
36
DatabaseComparison/Properties/AssemblyInfo.cs
Normal file
|
@ -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("DatabaseComparison")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("DatabaseComparison")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2023")]
|
||||||
|
[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("9aa39efc-3b4f-4d3d-928c-5e2c178ed105")]
|
||||||
|
|
||||||
|
// 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("23.09.18.01")]
|
||||||
|
[assembly: AssemblyFileVersion("23.09.18.01")]
|
63
DatabaseComparison/Properties/Resources.Designer.cs
generated
Normal file
63
DatabaseComparison/Properties/Resources.Designer.cs
generated
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace DatabaseComparison.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DatabaseComparison.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
117
DatabaseComparison/Properties/Resources.resx
Normal file
117
DatabaseComparison/Properties/Resources.resx
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
26
DatabaseComparison/Properties/Settings.Designer.cs
generated
Normal file
26
DatabaseComparison/Properties/Settings.Designer.cs
generated
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace DatabaseComparison.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
DatabaseComparison/Properties/Settings.settings
Normal file
7
DatabaseComparison/Properties/Settings.settings
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
8
Ease.Core/Class1.cs
Normal file
8
Ease.Core/Class1.cs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Ease.CoreC
|
||||||
|
{
|
||||||
|
public class Class1
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
196
Ease.Core/DataAccess/ConnectionFactory.cs
Normal file
196
Ease.Core/DataAccess/ConnectionFactory.cs
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using Ease.Core.DataAccess;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using System.IO;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region DataAccess: Connection Facory
|
||||||
|
|
||||||
|
public sealed class DBConnections
|
||||||
|
{
|
||||||
|
private static DbConfig _allConnections = null;
|
||||||
|
private static string _defaultConnection = null;
|
||||||
|
private static readonly object _lock = new object();
|
||||||
|
public static IConfigurationRoot _configuration;
|
||||||
|
|
||||||
|
DBConnections()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DbConfig Connections
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_allConnections == null)
|
||||||
|
{
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
// create the instance only if the instance is null
|
||||||
|
if (_allConnections == null)
|
||||||
|
{
|
||||||
|
//string str[] = Microsoft.Extensions.Configuration.ConfigurationSection
|
||||||
|
_allConnections = DbConfig.GetConfig();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise return the already existing instance
|
||||||
|
return _allConnections;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string DefaultConnection
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
//if (_defaultConnection == null || _defaultConnection == "")
|
||||||
|
//{
|
||||||
|
// lock (_lock)
|
||||||
|
// {
|
||||||
|
// // create the instance only if the instance is null
|
||||||
|
// if (_defaultConnection == null)
|
||||||
|
// {
|
||||||
|
// _defaultConnection = _allConnections["Default"].ConnectionString;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
_defaultConnection = "Default";
|
||||||
|
// Otherwise return the already existing instance
|
||||||
|
return _defaultConnection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public abstract class ConnectionFactory
|
||||||
|
{
|
||||||
|
#region Variable declaration
|
||||||
|
|
||||||
|
private static int _connectionIdx = 0;
|
||||||
|
private static List<string> _dataSources;
|
||||||
|
|
||||||
|
private static DbConfig.ConnectionNode _cn;
|
||||||
|
//private static DbConfig _dbCfg = DBConnections.Connections;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
internal SQLSyntax Syntax
|
||||||
|
{
|
||||||
|
get { return _cn.Syntax; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Provider Provider
|
||||||
|
{
|
||||||
|
get { return _cn.Provider; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static List<string> DataSources
|
||||||
|
{
|
||||||
|
get { return _dataSources; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static int ConnectionCount
|
||||||
|
{
|
||||||
|
get { return DBConnections.Connections.Names.Length; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal DbConfig.ConnectionNode ConnectionNode
|
||||||
|
{
|
||||||
|
get { return _cn; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This property is used to point the default database
|
||||||
|
/// </summary>
|
||||||
|
public static ConnectionFactory Default
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
//_dataSources = new List<string>();
|
||||||
|
//If no setting have been found
|
||||||
|
//if (string.IsNullOrEmpty(DBConnections.DefaultConnection))
|
||||||
|
// throw new ArgumentException(string.Format("Either serviceHandler key in app setting is missing.{0}Or{0}type key in serviceConfiguration is missing.", Environment.NewLine));
|
||||||
|
////Preparing Datasources
|
||||||
|
//_dataSources.AddRange(DBConnections.DefaultConnection.Split('~'));
|
||||||
|
//if (_dataSources == null || _dataSources.Count <= 0)
|
||||||
|
// throw new Exception("Data source is not specified in defaultDB.");
|
||||||
|
|
||||||
|
//Findout actual ConnectionName
|
||||||
|
// if (DBConnections.Connections != null)
|
||||||
|
_cn = DBConnections.Connections[DBConnections.DefaultConnection];
|
||||||
|
|
||||||
|
if (_cn == null)
|
||||||
|
throw new Exception(string.Format("Invalid use of configuration setting: {0}",
|
||||||
|
DBConnections.DefaultConnection));
|
||||||
|
return _cn.Factory;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Functions
|
||||||
|
|
||||||
|
internal static void SetConnectionIndex(int connectionIdx)
|
||||||
|
{
|
||||||
|
_connectionIdx = connectionIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instatnce of connection factory using valid connectioncontext.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">Valid connection context.</param>
|
||||||
|
/// <returns>Return an instatnce of connection factory.</returns>
|
||||||
|
public static ConnectionFactory ContextConnection(ConnectionContext context)
|
||||||
|
{
|
||||||
|
if (context == null || context.ContextKey.Length <= 0)
|
||||||
|
throw new Exception("Invalid use of configuration setting");
|
||||||
|
|
||||||
|
//string conKey = ConfigUtility.GetAppSettings(context.ContextKey);
|
||||||
|
|
||||||
|
////If no setting have been found
|
||||||
|
//if (string.IsNullOrEmpty(conKey))
|
||||||
|
// throw new ArgumentException(string.Format("Please use serviceHandler key: {0} in app setting.", context.ContextKey));
|
||||||
|
|
||||||
|
if (_cn != null && _cn.Name.Equals(context.ContextKey))
|
||||||
|
return _cn.Factory;
|
||||||
|
|
||||||
|
if (DBConnections.Connections != null)
|
||||||
|
_cn = DBConnections.Connections[context.ContextKey];
|
||||||
|
|
||||||
|
if (_cn == null)
|
||||||
|
throw new Exception("Invalid use of configuration setting");
|
||||||
|
|
||||||
|
return _cn.Factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static ConnectionFactory CreateConnection(Provider provider, SQLSyntax syntax, string connectionString)
|
||||||
|
{
|
||||||
|
if (_cn == null || _cn.ConnectionString.ToLower() != connectionString.ToLower())
|
||||||
|
{
|
||||||
|
_cn = new DbConfig.ConnectionNode();
|
||||||
|
_cn.CreateNode(provider, syntax, connectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_cn == null)
|
||||||
|
throw new Exception("Invalid use of configuration setting");
|
||||||
|
|
||||||
|
return _cn.Factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract IDbConnection CreateConnection();
|
||||||
|
public abstract IDbConnection CreateConnection(ConnectionContext context);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
148
Ease.Core/DataAccess/DataAccessHelper.cs
Normal file
148
Ease.Core/DataAccess/DataAccessHelper.cs
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region Conntection context
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Summary description for ConnectionContext.
|
||||||
|
/// Pass key of database connection according to config file
|
||||||
|
/// </summary>
|
||||||
|
public sealed class ConnectionContext
|
||||||
|
{
|
||||||
|
private readonly string _ctxKey = string.Empty;
|
||||||
|
|
||||||
|
public ConnectionContext()
|
||||||
|
{
|
||||||
|
_ctxKey = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionContext(string ctxKey)
|
||||||
|
{
|
||||||
|
_ctxKey = ctxKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ContextKey
|
||||||
|
{
|
||||||
|
get { return _ctxKey; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This class is used to help to fill dataset.
|
||||||
|
/// </summary>
|
||||||
|
internal class DataAccessHelper
|
||||||
|
{
|
||||||
|
#region Fill Data set
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the
|
||||||
|
/// DataReader records.</param>
|
||||||
|
/// <param name="from">The quantity of records skipped before placing
|
||||||
|
/// values on the DataReader on the DataSet.</param>
|
||||||
|
/// <param name="count">The maximum quantity of records alloed to fill on the
|
||||||
|
/// DataSet.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName, int from, int count)
|
||||||
|
{
|
||||||
|
string fieldName;
|
||||||
|
DataTable fillTable;
|
||||||
|
DataRow fillRow;
|
||||||
|
int recNumber = 0;
|
||||||
|
int totalRecords = from + count;
|
||||||
|
|
||||||
|
//If table name is null then set the string
|
||||||
|
if (tableName == null)
|
||||||
|
{
|
||||||
|
tableName = "unknownTable";
|
||||||
|
}
|
||||||
|
|
||||||
|
//If table does not exist in data set then add table
|
||||||
|
if (dataSet.Tables[tableName] == null)
|
||||||
|
{
|
||||||
|
dataSet.Tables.Add(tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the DataTable reference
|
||||||
|
if (tableName == null)
|
||||||
|
{
|
||||||
|
fillTable = dataSet.Tables[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fillTable = dataSet.Tables[tableName];
|
||||||
|
}
|
||||||
|
|
||||||
|
while (dataReader.Read())
|
||||||
|
{
|
||||||
|
if (recNumber++ >= from)
|
||||||
|
{
|
||||||
|
fillRow = fillTable.NewRow();
|
||||||
|
for (int fieldIdx = 0; fieldIdx < dataReader.FieldCount; fieldIdx++)
|
||||||
|
{
|
||||||
|
fieldName = dataReader.GetName(fieldIdx);
|
||||||
|
Type fieldType = dataReader.GetValue(fieldIdx).GetType();
|
||||||
|
if (fillTable.Columns.IndexOf(fieldName) == -1)
|
||||||
|
{
|
||||||
|
fillTable.Columns.Add(fieldName, fieldType);
|
||||||
|
}
|
||||||
|
|
||||||
|
fillRow[fieldName] = GetValue(dataReader.GetValue(fieldIdx), fieldType);
|
||||||
|
}
|
||||||
|
|
||||||
|
fillTable.Rows.Add(fillRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count != 0 && totalRecords <= recNumber)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dataSet.AcceptChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the DataReader records.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName)
|
||||||
|
{
|
||||||
|
Fill(dataReader, dataSet, tableName, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region private function
|
||||||
|
|
||||||
|
private static object GetValue(object fieldValue, Type fieldType)
|
||||||
|
{
|
||||||
|
switch (fieldType.Name)
|
||||||
|
{
|
||||||
|
case "Int16":
|
||||||
|
case "Int32":
|
||||||
|
case "Int64":
|
||||||
|
case "UInt16":
|
||||||
|
case "UInt32":
|
||||||
|
case "UInt64":
|
||||||
|
return fieldValue == DBNull.Value ? 0 : fieldValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fieldValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
805
Ease.Core/DataAccess/DataReader.cs
Normal file
805
Ease.Core/DataAccess/DataReader.cs
Normal file
|
@ -0,0 +1,805 @@
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Data;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region DataAccess: Data Handler
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handle the null value
|
||||||
|
/// </summary>
|
||||||
|
public class DataReader
|
||||||
|
{
|
||||||
|
private DataTable _table;
|
||||||
|
private IDataReader _reader;
|
||||||
|
private bool _isOracleDB = false;
|
||||||
|
|
||||||
|
public DataReader(IDataReader reader)
|
||||||
|
{
|
||||||
|
_reader = reader;
|
||||||
|
_table = _reader.GetSchemaTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Get Null value
|
||||||
|
|
||||||
|
public static bool? GetNullValue(bool value, bool nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (bool?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte? GetNullValue(byte value, byte nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static sbyte? GetNullValue(sbyte value, sbyte nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (sbyte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static short? GetNullValue(short value, short nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (short?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort? GetNullValue(ushort value, ushort nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (ushort?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int? GetNullValue(int value, int nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (int?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static uint? GetNullValue(uint value, uint nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (uint?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ulong? GetNullValue(ulong value, ulong nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (ulong?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long? GetNullValue(long value, long nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (long?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static decimal? GetNullValue(decimal value, decimal nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double? GetNullValue(double value, double nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float? GetNullValue(float value, float nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (float?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static char? GetNullValue(char value, char nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (char?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetNullValue(string value, string nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DateTime? GetNullValue(DateTime value, DateTime nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (DateTime?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Guid? GetNullValue(Guid value, Guid nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool? GetNullValue(bool? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == false) ? null : (bool?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte? GetNullValue(byte? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static sbyte? GetNullValue(sbyte? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (sbyte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static short? GetNullValue(short? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (short?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort? GetNullValue(ushort? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (ushort?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int? GetNullValue(int? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (int?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static uint? GetNullValue(uint? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (uint?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ulong? GetNullValue(ulong? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (ulong?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long? GetNullValue(long? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (long?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static decimal? GetNullValue(decimal? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (decimal?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double? GetNullValue(double? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (double?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float? GetNullValue(float? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (float?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static char? GetNullValue(char? value)
|
||||||
|
{
|
||||||
|
return (value == null || (byte)value == 0) ? null : (char?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetNullValue(string value)
|
||||||
|
{
|
||||||
|
return (string.IsNullOrEmpty(value)) ? null : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DateTime? GetNullValue(DateTime? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == DateTime.MinValue) ? null : (DateTime?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Guid? GetNullValue(Guid? value)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Default Null Values
|
||||||
|
|
||||||
|
public bool? GetBoolean(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (bool?)value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte? GetByte(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (byte?)value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte? GetSByte(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (sbyte?)value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short? GetInt16(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (short?)value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort? GetUInt16(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (ushort?)value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? GetInt32(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (int?)value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint? GetUInt32(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (uint?)value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long? GetInt64(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (long?)value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong? GetUInt64(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (ulong?)value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal? GetDecimal(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (decimal?)value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? GetDouble(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (double?)value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float? GetFloat(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (float?)value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char? GetChar(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (char?)value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? GetDateTime(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (DateTime?)value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan? GetTime(int i)
|
||||||
|
{
|
||||||
|
object value = _reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (TimeSpan?)((TimeSpan)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid? GetGuid(int i)
|
||||||
|
{
|
||||||
|
object value = _reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] GetLob(int i)
|
||||||
|
{
|
||||||
|
return (byte[])(_reader.IsDBNull(i) ? (byte[])null : _reader.GetValue(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool? GetBoolean(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (bool?)value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte? GetByte(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (byte?)value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte? GetSByte(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (sbyte?)value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short? GetInt16(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (short?)value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort? GetUInt16(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (ushort?)value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? GetInt32(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? (int?)null : (int?)value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint? GetUInt32(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (uint?)value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long? GetInt64(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (long?)value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong? GetUInt64(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (ulong?)value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal? GetDecimal(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (decimal?)value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? GetDouble(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (double?)value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float? GetFloat(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (float?)value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char? GetChar(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (char?)value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? GetDateTime(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? null : (DateTime?)value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan? GetTime(string name)
|
||||||
|
{
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? null : (TimeSpan?)((TimeSpan)value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid? GetGuid(string name)
|
||||||
|
{
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] GetLob(string name)
|
||||||
|
{
|
||||||
|
return (byte[])(_reader[name] == DBNull.Value ? (byte[])null : _reader[name]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Parameterized Null Value
|
||||||
|
|
||||||
|
bool columnExists(string columnName)
|
||||||
|
{
|
||||||
|
columnName = (from DataRow dr in _table.Rows
|
||||||
|
where Convert.ToString(dr["ColumnName"]).ToLower().Equals(columnName.ToLower())
|
||||||
|
select Convert.ToString(dr["ColumnName"])).FirstOrDefault();
|
||||||
|
|
||||||
|
return !string.IsNullOrEmpty(columnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(int i, bool valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(int i, byte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte GetSByte(int i, sbyte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(int i, short valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort GetUInt16(int i, ushort valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(int i, int valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUInt32(int i, uint valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong GetUInt64(int i, ulong valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(int i, long valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(int i, decimal valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(int i, double valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(int i, float valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(int i, char valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i, string valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(int i, DateTime valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan GetTime(int i, TimeSpan valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : (TimeSpan)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(int i, Guid valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _reader.GetValue(i);
|
||||||
|
return value == DBNull.Value ? valueIfNull : (Guid)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(string name, bool valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(string name, byte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte GetSByte(string name, sbyte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(string name, short valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort GetUInt16(string name, ushort valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(string name, int valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUInt32(string name, uint valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong GetUInt64(string name, ulong valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(string name, long valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(string name, decimal valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(string name, double valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(string name, float valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(string name, char valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(string name, string valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(string name, DateTime valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan GetTime(string name, TimeSpan valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : (TimeSpan)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(string name, Guid valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : (Guid)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(string name, bool fldExists, bool valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
if (value == null || value == DBNull.Value)
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
if (value.ToString().Trim().Equals("1") || value.ToString().Trim().Equals("-1") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("true") || value.ToString().Trim().ToLower().Equals("yes"))
|
||||||
|
return true;
|
||||||
|
else if (value.ToString().Trim().Equals("0") || value.ToString().Trim().ToLower().Equals("false") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("no"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(string name, bool fldExists, byte valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte GetSByte(string name, bool fldExists, sbyte valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(string name, bool fldExists, short valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort GetUInt16(string name, bool fldExists, ushort valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(string name, bool fldExists, int valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUInt32(string name, bool fldExists, uint valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong GetUInt64(string name, bool fldExists, ulong valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(string name, bool fldExists, long valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(string name, bool fldExists, decimal valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(string name, bool fldExists, double valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(string name, bool fldExists, float valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(string name, bool fldExists, char valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(string name, bool fldExists, string valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(string name, bool fldExists, DateTime valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
IConvertible value = (IConvertible)_reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan GetTime(string name, bool fldExists, TimeSpan valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : (TimeSpan)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(string name, bool fldExists, Guid valueIfNullOrFldNotExists)
|
||||||
|
{
|
||||||
|
if (fldExists && _table != null && !this.columnExists(name))
|
||||||
|
return valueIfNullOrFldNotExists;
|
||||||
|
|
||||||
|
object value = _reader[name];
|
||||||
|
return value == DBNull.Value ? valueIfNullOrFldNotExists : (Guid)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public bool Read()
|
||||||
|
{
|
||||||
|
return _reader.Read();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
_reader.Close();
|
||||||
|
_reader.Dispose();
|
||||||
|
_table.Dispose();
|
||||||
|
|
||||||
|
_table = null;
|
||||||
|
_reader = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
266
Ease.Core/DataAccess/DbConfig.cs
Normal file
266
Ease.Core/DataAccess/DbConfig.cs
Normal file
|
@ -0,0 +1,266 @@
|
||||||
|
using System;
|
||||||
|
using System.Xml;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Configuration;
|
||||||
|
using Ease.Core.DataAccess;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Ease.Core.DataAccess.SQL;
|
||||||
|
//using Ease.Core.DataAccess.Odbc;
|
||||||
|
//using Ease.Core.DataAccess.OleDb;
|
||||||
|
using Ease.Core.DataAccess.Oracle;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
public class DbConfig
|
||||||
|
{
|
||||||
|
private static IConfigurationRoot _config;
|
||||||
|
private string[] _names;
|
||||||
|
private Dictionary<string, ConnectionNode> _connectionHash = new Dictionary<string, ConnectionNode>();
|
||||||
|
|
||||||
|
public string[] Names
|
||||||
|
{
|
||||||
|
get { return _names; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionNode this[string name]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (name == null)
|
||||||
|
throw new Exception("Connection name cannot be null");
|
||||||
|
|
||||||
|
ConnectionNode node;
|
||||||
|
if (!_connectionHash.TryGetValue(name, out node))
|
||||||
|
throw new Exception("Inavalid connection name: " + name);
|
||||||
|
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DbConfig GetConfig()
|
||||||
|
{
|
||||||
|
DbConfig config = new DbConfig();
|
||||||
|
|
||||||
|
var builder = new ConfigurationBuilder()
|
||||||
|
.SetBasePath(Directory.GetCurrentDirectory())
|
||||||
|
.AddJsonFile("appsettings.json");
|
||||||
|
|
||||||
|
_config = builder.Build();
|
||||||
|
Dictionary<string, string> valuesBD = _config.GetSection("dbSettings").Get<Dictionary<string, string>>();
|
||||||
|
config.ConnectionParse(valuesBD);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
//protected override void Parse(XmlElement node)
|
||||||
|
//{
|
||||||
|
// //List<ConnectionNode> connections = ReadChildren<ConnectionNode>(node, "connection");
|
||||||
|
|
||||||
|
// //_names = new string[connections.Count];
|
||||||
|
// //for (int i = 0; i < connections.Count; i++)
|
||||||
|
// //{
|
||||||
|
// // _names[i] = connections[i].Name;
|
||||||
|
// // _connectionHash[connections[i].Name] = connections[i];
|
||||||
|
// //}
|
||||||
|
//}
|
||||||
|
public void ConnectionParse(Dictionary<string, string> nodes)
|
||||||
|
{
|
||||||
|
List<ConnectionNode> connections = new List<ConnectionNode>();
|
||||||
|
_names = new string[nodes.Count];
|
||||||
|
int i = 0;
|
||||||
|
foreach (KeyValuePair<string, string> entry in nodes)
|
||||||
|
{
|
||||||
|
_names[i] = entry.Key;
|
||||||
|
ConnectionNode item = new ConnectionNode();
|
||||||
|
item.Parse(entry.Value);
|
||||||
|
_connectionHash.Add(entry.Key, item);
|
||||||
|
i = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ConnectionNode
|
||||||
|
{
|
||||||
|
internal void CreateNode(Provider provider, SQLSyntax sqlSyntex, string connectionString)
|
||||||
|
{
|
||||||
|
_name = "Dynamic";
|
||||||
|
_syntax = sqlSyntex;
|
||||||
|
_provider = provider;
|
||||||
|
_connectionString = connectionString;
|
||||||
|
|
||||||
|
// createNode();
|
||||||
|
//####
|
||||||
|
if (_factory == null)
|
||||||
|
throw new Exception(string.Format("Unsupported Provider: {0}", _provider.ToString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionNode()
|
||||||
|
{
|
||||||
|
_connectionString = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _name;
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return _name; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private Provider _provider;
|
||||||
|
|
||||||
|
internal Provider Provider
|
||||||
|
{
|
||||||
|
get { return _provider; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private ConnectionFactory _factory;
|
||||||
|
|
||||||
|
public ConnectionFactory Factory
|
||||||
|
{
|
||||||
|
get { return _factory; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _connectionString;
|
||||||
|
|
||||||
|
internal string ConnectionString
|
||||||
|
{
|
||||||
|
get { return _connectionString; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private SQLSyntax _syntax;
|
||||||
|
|
||||||
|
internal SQLSyntax Syntax
|
||||||
|
{
|
||||||
|
get { return _syntax; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Parse(string Connvalue)
|
||||||
|
{
|
||||||
|
string[] svalue = Connvalue.Split(";");
|
||||||
|
|
||||||
|
//CheckRequiredAttributes(node, "name");
|
||||||
|
//CheckRequiredAttributes(node, "provider");
|
||||||
|
//CheckRequiredAttributes(node, "connectionString");
|
||||||
|
//CheckRequiredAttributes(node, "sqlSyntax");
|
||||||
|
const string provider = "provider";
|
||||||
|
const string sqlSyntax = "sqlSyntax";
|
||||||
|
const string passwordKey = "password";
|
||||||
|
const string EncryptKey = "Cel.Admin";
|
||||||
|
|
||||||
|
|
||||||
|
string[] tokens = Connvalue.Split(';');
|
||||||
|
Connvalue = string.Empty;
|
||||||
|
|
||||||
|
foreach (string token in tokens)
|
||||||
|
{
|
||||||
|
string[] tokenValues = token.Split('=');
|
||||||
|
if (tokenValues.Length > 1)
|
||||||
|
{
|
||||||
|
if (tokenValues[0] == provider)
|
||||||
|
{
|
||||||
|
#region Provider
|
||||||
|
|
||||||
|
switch (tokenValues[1])
|
||||||
|
{
|
||||||
|
case "sql":
|
||||||
|
_provider = Provider.Sql;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "oraclenative":
|
||||||
|
_provider = Provider.OracleNative;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "oracle":
|
||||||
|
_provider = Provider.Oracle;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "oledb":
|
||||||
|
_provider = Provider.OleDb;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "odbc":
|
||||||
|
_provider = Provider.Odbc;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new Exception("Unsupported Provider: " + tokenValues[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Provider
|
||||||
|
}
|
||||||
|
else if (tokenValues[0] == sqlSyntax)
|
||||||
|
{
|
||||||
|
switch (tokenValues[1])
|
||||||
|
{
|
||||||
|
case "SQL":
|
||||||
|
_factory = new SqlFactory();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Oracle":
|
||||||
|
_factory = new OracleFactory();
|
||||||
|
break;
|
||||||
|
|
||||||
|
//case Provider.OleDb:
|
||||||
|
// _factory = new OleDbFactory();
|
||||||
|
// break;
|
||||||
|
|
||||||
|
//case Provider.Odbc:
|
||||||
|
// _factory = new OdbcFactory();
|
||||||
|
// break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (tokenValues[0] == passwordKey)
|
||||||
|
{
|
||||||
|
string password = Global.CipherFunctions.Decrypt(EncryptKey, tokenValues[1]);
|
||||||
|
_connectionString += string.Format(";{0}={1}", passwordKey, password);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_connectionString += _connectionString.Length > 0 ? ";" : "";
|
||||||
|
_connectionString += token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void createNode()
|
||||||
|
{
|
||||||
|
#region Parse Password
|
||||||
|
|
||||||
|
const string passwordKey = "password";
|
||||||
|
const string EncryptKey = "Cel.Admin";
|
||||||
|
|
||||||
|
if (_connectionString.IndexOf(passwordKey) != -1)
|
||||||
|
{
|
||||||
|
string[] tokens = _connectionString.Split(';');
|
||||||
|
_connectionString = string.Empty;
|
||||||
|
|
||||||
|
foreach (string token in tokens)
|
||||||
|
{
|
||||||
|
string[] tokenValues = token.Split('=');
|
||||||
|
if (tokenValues.Length > 1)
|
||||||
|
{
|
||||||
|
if (tokenValues[0] == passwordKey)
|
||||||
|
{
|
||||||
|
string password = Global.CipherFunctions.Decrypt(EncryptKey, tokenValues[1]);
|
||||||
|
_connectionString += string.Format(";{0}={1}", passwordKey, password);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_connectionString += _connectionString.Length > 0 ? ";" : "";
|
||||||
|
_connectionString += token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
296
Ease.Core/DataAccess/MakeSQL.cs
Normal file
296
Ease.Core/DataAccess/MakeSQL.cs
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region DataAccess: MakeSQL
|
||||||
|
|
||||||
|
public sealed class SQLParser
|
||||||
|
{
|
||||||
|
#region Declaraion & Constructor
|
||||||
|
|
||||||
|
private static SQLSyntax _sqlSyntax;
|
||||||
|
|
||||||
|
private SQLParser()
|
||||||
|
{
|
||||||
|
_sqlSyntax = SQLSyntax.SQL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region DateTime Formatting Functions
|
||||||
|
|
||||||
|
static string GetDateLiteral(DateTime dt)
|
||||||
|
{
|
||||||
|
string s = string.Empty;
|
||||||
|
switch (_sqlSyntax)
|
||||||
|
{
|
||||||
|
case SQLSyntax.Access:
|
||||||
|
s = "#" + dt.ToString("dd MMM yyyy", CultureInfo.InvariantCulture) + "#";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Oracle:
|
||||||
|
s = "TO_DATE('" + dt.ToString("dd MM yyyy", CultureInfo.InvariantCulture) + "', '" + "DD MM YYYY" +
|
||||||
|
"')";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Informix:
|
||||||
|
s = string.Format("DATETIME ({0}) YEAR TO DAY",
|
||||||
|
dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
s = "'" + dt.ToString("dd MMM yyyy", CultureInfo.InvariantCulture) + "'";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string GetDateTimeLiteral(DateTime dt)
|
||||||
|
{
|
||||||
|
string s = string.Empty;
|
||||||
|
switch (_sqlSyntax)
|
||||||
|
{
|
||||||
|
case SQLSyntax.Access:
|
||||||
|
s = "#" + dt.ToString("dd MMM yyyy HH:mm:ss", CultureInfo.InvariantCulture) + "#";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Oracle:
|
||||||
|
s = "TO_DATE('" + dt.ToString("dd MM yyyy HH mm ss", CultureInfo.InvariantCulture) +
|
||||||
|
"', 'DD MM YYYY HH24 MI SS')";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Informix:
|
||||||
|
s = string.Format("DATETIME ({0}) YEAR TO SECOND",
|
||||||
|
dt.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
s = "'" + dt.ToString("dd MMM yyyy HH:mm:ss", CultureInfo.InvariantCulture) + "'";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string GetTimeLiteral(DateTime dt)
|
||||||
|
{
|
||||||
|
string s = string.Empty;
|
||||||
|
switch (_sqlSyntax)
|
||||||
|
{
|
||||||
|
case SQLSyntax.Access:
|
||||||
|
s = "#" + dt.ToString("HH:mm:ss", CultureInfo.InvariantCulture) + "#";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Oracle:
|
||||||
|
s = "TO_DATE('" + dt.ToString("HH mm ss", CultureInfo.InvariantCulture) + "', 'HH24 MI SS')";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQLSyntax.Informix:
|
||||||
|
s = string.Format("DATETIME ({0}) HOUR TO SECOND",
|
||||||
|
dt.ToString("HH:mm:ss", CultureInfo.InvariantCulture));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
s = "'" + dt.ToString("HH:mm:ss", CultureInfo.InvariantCulture) + "'";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Make SQL function
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This function returns actual T-SQL command.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sqlSyntax">T-SQL command will be on database Oracle, SQL Server, Access, Informix.</param>
|
||||||
|
/// <param name="sql">T-SQL command according to CEL style.</param>
|
||||||
|
/// <param name="args">Comma delimited value according to CEL style.</param>
|
||||||
|
/// <returns>Return the actual T-SQL command.</returns>
|
||||||
|
public static string MakeSQL(SQLSyntax sqlSyntax, string sql, params object[] args)
|
||||||
|
{
|
||||||
|
_sqlSyntax = sqlSyntax;
|
||||||
|
return MakeSQL(sql, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This function returns actual T-SQL command.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sql">T-SQL command according to CEL style.</param>
|
||||||
|
/// <param name="args">Comma delimited value according to CEL style.</param>
|
||||||
|
/// <returns>Return the actual T-SQL command.</returns>
|
||||||
|
public static string MakeSQL(string sql, params object[] args)
|
||||||
|
{
|
||||||
|
if (args.Length <= 0)
|
||||||
|
return sql;
|
||||||
|
|
||||||
|
int argIndex = -1;
|
||||||
|
string retSQL = string.Empty;
|
||||||
|
string[] argSQL = new string[args.Length];
|
||||||
|
|
||||||
|
int i = sql.IndexOf("%");
|
||||||
|
while (i != -1)
|
||||||
|
{
|
||||||
|
retSQL = retSQL + sql.Substring(0, i);
|
||||||
|
|
||||||
|
if (i == sql.Length - 1)
|
||||||
|
throw new InvalidExpressionException("Invalid place holder character.");
|
||||||
|
|
||||||
|
string c = sql.Substring(i + 1, 1);
|
||||||
|
sql = sql.Substring(i + 2);
|
||||||
|
|
||||||
|
if (c.IndexOfAny(new char[] { '%', '{' }) != -1)
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case "%":
|
||||||
|
retSQL = retSQL + "%";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "{":
|
||||||
|
int next = sql.IndexOf("}");
|
||||||
|
|
||||||
|
if (next < 1)
|
||||||
|
throw new InvalidExpressionException("Invalid rrdinal variable.");
|
||||||
|
|
||||||
|
int ord = Convert.ToInt32(sql.Substring(0, next));
|
||||||
|
if (ord < 0 || ord > argIndex)
|
||||||
|
throw new IndexOutOfRangeException("Invalid rrdinal variable.");
|
||||||
|
|
||||||
|
retSQL = retSQL + argSQL[ord];
|
||||||
|
sql = sql.Substring(next + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (c.IndexOfAny(new char[] { 's', 'n', 'd', 't', 'T', 'D', 'b', 'q', 'u' }) != -1)
|
||||||
|
{
|
||||||
|
if (++argIndex > args.Length - 1)
|
||||||
|
throw new ArgumentException("Too few arguments passed.");
|
||||||
|
|
||||||
|
if (args[argIndex] == null)
|
||||||
|
{
|
||||||
|
argSQL[argIndex] = "NULL";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case "s":
|
||||||
|
string s = Convert.ToString(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = "'" + s.Replace("'", "''") + "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "u":
|
||||||
|
string u = Convert.ToString(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = "N'" + u.Replace("'", "''") + "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "n":
|
||||||
|
decimal n = Convert.ToDecimal(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = n.ToString(CultureInfo.InvariantCulture);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "d":
|
||||||
|
DateTime d = Convert.ToDateTime(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = GetDateLiteral(d);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "t":
|
||||||
|
DateTime t = Convert.ToDateTime(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = GetTimeLiteral(t);
|
||||||
|
break;
|
||||||
|
case "T":
|
||||||
|
string T = Convert.ToString(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = "'" + T.Replace("'", "''") + "'";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "D":
|
||||||
|
DateTime D = Convert.ToDateTime(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = GetDateTimeLiteral(D);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "b":
|
||||||
|
bool b = Convert.ToBoolean(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
if (_sqlSyntax == SQLSyntax.Access)
|
||||||
|
argSQL[argIndex] = b.ToString(CultureInfo.InvariantCulture);
|
||||||
|
else
|
||||||
|
argSQL[argIndex] = (b ? "1" : "0");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "q":
|
||||||
|
string q = Convert.ToString(args[argIndex], CultureInfo.InvariantCulture);
|
||||||
|
argSQL[argIndex] = q;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new ArgumentException(string.Format("Invalid argument no: {0}", argIndex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
retSQL = retSQL + argSQL[argIndex];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new InvalidExpressionException("Invalid place holder character.");
|
||||||
|
}
|
||||||
|
|
||||||
|
i = sql.IndexOf("%");
|
||||||
|
}
|
||||||
|
|
||||||
|
retSQL = retSQL + sql;
|
||||||
|
|
||||||
|
// Handle the (==)
|
||||||
|
i = retSQL.IndexOf("==");
|
||||||
|
while (i != -1)
|
||||||
|
{
|
||||||
|
string rVal = retSQL.Substring(i + 2).Trim().Substring(0);
|
||||||
|
if (rVal.ToUpper().StartsWith("NULL"))
|
||||||
|
retSQL = retSQL.Substring(0, i) + " IS " + retSQL.Substring(i + 2);
|
||||||
|
else
|
||||||
|
retSQL = retSQL.Substring(0, i) + "=" + retSQL.Substring(i + 2);
|
||||||
|
|
||||||
|
i = retSQL.IndexOf("==", i + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handle the (<>)
|
||||||
|
i = retSQL.IndexOf("<>");
|
||||||
|
while (i != -1)
|
||||||
|
{
|
||||||
|
string rVal = retSQL.Substring(i + 2).Trim().Substring(1);
|
||||||
|
if (rVal.ToUpper().StartsWith("NULL"))
|
||||||
|
retSQL = retSQL.Substring(0, i) + " IS NOT " + retSQL.Substring(i + 2);
|
||||||
|
|
||||||
|
i = retSQL.IndexOf("<>", i + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return retSQL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region TagSQL Function
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This function return T-SQL command by adding WHERE/AND depending on commandText.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="commandText">Previous T-SQL command.</param>
|
||||||
|
/// <returns>Return T-SQL command after addition of WHERE/AND maintaining the space.</returns>
|
||||||
|
public static string TagSQL(string commandText)
|
||||||
|
{
|
||||||
|
return string.Format("{0} {1} ", commandText.Trim(), (commandText.Trim().Length <= 0 ? "WHERE" : "AND"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
274
Ease.Core/DataAccess/NullHandler.cs
Normal file
274
Ease.Core/DataAccess/NullHandler.cs
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Data;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region Null Handler
|
||||||
|
|
||||||
|
public class NullHandler
|
||||||
|
{
|
||||||
|
private IDataReader _reader;
|
||||||
|
|
||||||
|
public NullHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetNullValue(int Value)
|
||||||
|
{
|
||||||
|
if (Value <= 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetNullValue(DateTime Value)
|
||||||
|
{
|
||||||
|
if (DateTime.MinValue == Value)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetNullValue(string Value)
|
||||||
|
{
|
||||||
|
if (Value.Length <= 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public NullHandler(IDataReader reader)
|
||||||
|
{
|
||||||
|
_reader = reader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDataReader Reader
|
||||||
|
{
|
||||||
|
get { return _reader; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsNull(int index)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Default Null Values
|
||||||
|
|
||||||
|
public int GetInt32(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? 0 : _reader.GetInt32(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? (byte)0 : _reader.GetByte(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? 0 : _reader.GetDecimal(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(string sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (decimal)0 : Convert.ToDecimal(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? (long)0 : _reader.GetInt64(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? 0 : _reader.GetDouble(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? false : _reader.GetBoolean(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? Guid.Empty : _reader.GetGuid(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? DateTime.MinValue : _reader.GetDateTime(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? 0 : _reader.GetFloat(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? null : _reader.GetString(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(int i)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? '\0' : _reader.GetChar(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (Int16)0 : Convert.ToInt16(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (Int32)0 : Convert.ToInt32(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(String sFieldName)
|
||||||
|
{
|
||||||
|
return _reader[sFieldName] == DBNull.Value ? (byte)0 : Convert.ToByte(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (Int64)0 : Convert.ToInt64(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double GetDouble(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (Double)0 : Convert.ToDouble(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? false : Convert.ToBoolean(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? DateTime.MinValue : Convert.ToDateTime(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? '\0' : Convert.ToChar(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(String sFieldName)
|
||||||
|
{
|
||||||
|
return (_reader[sFieldName] == DBNull.Value) ? (string)"" : Convert.ToString(_reader[sFieldName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//public Image GetImage(String sFieldName)
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// byte[] imageData = null;
|
||||||
|
// long byteSize = 0;
|
||||||
|
// byteSize = _reader.GetBytes(_reader.GetOrdinal(sFieldName), 0, null, 0, 0);
|
||||||
|
|
||||||
|
// imageData = new byte[byteSize];
|
||||||
|
// long bytesread = 0;
|
||||||
|
// int curpos = 0, chunkSize = 500;
|
||||||
|
// while (bytesread < byteSize)
|
||||||
|
// {
|
||||||
|
// // chunkSize is an arbitrary application defined value
|
||||||
|
// bytesread += _reader.GetBytes(_reader.GetOrdinal(sFieldName), curpos, imageData, curpos, chunkSize);
|
||||||
|
// curpos += chunkSize;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// byte[] imgData = imageData;
|
||||||
|
|
||||||
|
// MemoryStream ms = new MemoryStream(imgData);
|
||||||
|
// Image oImage = Image.FromStream((Stream)ms);
|
||||||
|
// return oImage;
|
||||||
|
// }
|
||||||
|
// catch (Exception ex)
|
||||||
|
// {
|
||||||
|
// throw new Exception("Failed to get Image: " + ex.Message);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Parameterized Null Value
|
||||||
|
|
||||||
|
public int GetInt32(int i, int valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetInt32(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(int i, byte valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetByte(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(int i, decimal valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetDecimal(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(int i, long valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetInt64(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(int i, double valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetDouble(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(int i, bool valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetBoolean(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(int i, Guid valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetGuid(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(int i, DateTime valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetDateTime(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(int i, float valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetFloat(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i, string valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetString(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(int i, char valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetChar(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(int i, short valueIfNull)
|
||||||
|
{
|
||||||
|
return _reader.IsDBNull(i) ? valueIfNull : _reader.GetInt16(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
52
Ease.Core/DataAccess/Oracle/OracleFactory.cs
Normal file
52
Ease.Core/DataAccess/Oracle/OracleFactory.cs
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 17/04/2009 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Configuration;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Data.OracleClient;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess.Oracle
|
||||||
|
{
|
||||||
|
#region DataAccess: Oracle Connection Factory
|
||||||
|
|
||||||
|
public sealed class OracleFactory : ConnectionFactory
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instance of IDbConnection for oracle using default connectionstring.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Retuen an instance of OracleConnection.</returns>
|
||||||
|
public override System.Data.IDbConnection CreateConnection()
|
||||||
|
{
|
||||||
|
return new OracleConnection(base.ConnectionNode.ConnectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instance of IDbConnection for oracle using ConnectionContext.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">Valid ConnectionContext.</param>
|
||||||
|
/// <returns>Return instatnce of OracleConnection.</returns>
|
||||||
|
public override System.Data.IDbConnection CreateConnection(ConnectionContext context)
|
||||||
|
{
|
||||||
|
if (context == null || context.ContextKey.Length <= 0)
|
||||||
|
throw new Exception("There is no key in the Connection Context");
|
||||||
|
|
||||||
|
return new OracleConnection(ConnectionFactory.ContextConnection(context).ConnectionNode.ConnectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal OracleFactory()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
335
Ease.Core/DataAccess/Oracle/OracleHelperExtension.cs
Normal file
335
Ease.Core/DataAccess/Oracle/OracleHelperExtension.cs
Normal file
|
@ -0,0 +1,335 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 17/04/2009 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Data.OracleClient;
|
||||||
|
using Ease.Core.DataAccess;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
|
||||||
|
namespace Ease.CoreV35.DataAccess.Oracle
|
||||||
|
{
|
||||||
|
#region DataAccess: Oracle Helper
|
||||||
|
|
||||||
|
public sealed class OracleHelperExtension
|
||||||
|
{
|
||||||
|
private OracleHelperExtension()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Fill Data set
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the
|
||||||
|
/// DataReader records.</param>
|
||||||
|
/// <param name="from">The quantity of records skipped before placing
|
||||||
|
/// values on the DataReader on the DataSet.</param>
|
||||||
|
/// <param name="count">The maximum quantity of records alloed to fill on the
|
||||||
|
/// DataSet.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName, int from, int count)
|
||||||
|
{
|
||||||
|
DataAccessHelper.Fill(dataReader, dataSet, tableName, from, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the DataReader records.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName)
|
||||||
|
{
|
||||||
|
OracleHelperExtension.Fill(dataReader, dataSet, tableName, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return OracleParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</direction>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateParam(OracleType pType, ParameterDirection direction, object pValue)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateParam(string.Empty, pType, direction, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return OracleParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateParam(string pName, OracleType pType, ParameterDirection direction)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateParam(pName, pType, direction, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return OracleParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</direction>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateParam(string pName, OracleType pType, ParameterDirection direction,
|
||||||
|
object pValue)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = direction;
|
||||||
|
if (pType == OracleType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return OracleParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateParam(string pName, OracleType pType, ParameterDirection direction,
|
||||||
|
int size, object pValue)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = direction;
|
||||||
|
param.Size = size;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Input Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateInParam(OracleType pType, object pValue)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateInParam(string.Empty, pType, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateInParam(string pName, OracleType pType)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateInParam(pName, pType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateInParam(string pName, OracleType pType, object pValue)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Input;
|
||||||
|
if (pType == OracleType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateInParam(string pName, OracleType pType, object pValue, int size)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Input;
|
||||||
|
param.Size = size;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Output Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateOutParam(OracleType pType, object pValue)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateOutParam(string.Empty, pType, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateOutParam(string pName, OracleType pType)
|
||||||
|
{
|
||||||
|
return OracleHelperExtension.CreateOutParam(pName, pType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateOutParam(string pName, OracleType pType, object pValue)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Output;
|
||||||
|
if (pType == OracleType.VarChar)
|
||||||
|
{
|
||||||
|
param.Size = 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction OracleParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of OracleParameter.</returns>
|
||||||
|
public static OracleParameter CreateOutParam(string pName, OracleType pType, object pValue, int size)
|
||||||
|
{
|
||||||
|
OracleParameter param = new OracleParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Output;
|
||||||
|
param.Size = size;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Add Parameter
|
||||||
|
|
||||||
|
public static OracleCommand CreateCommand(string name)
|
||||||
|
{
|
||||||
|
OracleCommand command = new OracleCommand(name);
|
||||||
|
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddParameter(OracleCommand command, string name, OracleType type,
|
||||||
|
ParameterDirection direction, object Value)
|
||||||
|
{
|
||||||
|
OracleParameter param = command.CreateParameter();
|
||||||
|
|
||||||
|
param.ParameterName = name;
|
||||||
|
param.OracleType = type;
|
||||||
|
param.Direction = direction;
|
||||||
|
if (type == OracleType.VarChar)
|
||||||
|
param.Size = 4000;
|
||||||
|
param.Value = Value;
|
||||||
|
command.Parameters.Add(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddParameter(OracleCommand command, string name, OracleType type,
|
||||||
|
ParameterDirection direction)
|
||||||
|
{
|
||||||
|
OracleHelperExtension.AddParameter(command, name, type, direction, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetBlob
|
||||||
|
|
||||||
|
public static OracleLob GetBlob(TransactionContext tc, byte[] bytes)
|
||||||
|
{
|
||||||
|
OracleLob tblob = GetTempBlob(tc);
|
||||||
|
tblob.BeginBatch(OracleLobOpenMode.ReadWrite);
|
||||||
|
tblob.Write(bytes, 0, bytes.Length);
|
||||||
|
tblob.EndBatch();
|
||||||
|
|
||||||
|
return tblob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OracleLob GetTempBlob(TransactionContext tc)
|
||||||
|
{
|
||||||
|
OracleCommand command =
|
||||||
|
new OracleCommand("DECLARE t BLOB; BEGIN DBMS_LOB.CREATETEMPORARY(t, false, 0); :tempblob := t; END;");
|
||||||
|
AddParameter(command, "tempblob", OracleType.Blob, ParameterDirection.Output);
|
||||||
|
|
||||||
|
tc.PrepareCommand(command);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
|
return (OracleLob) (command.Parameters[0]).Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region private function
|
||||||
|
|
||||||
|
private static object GetValue(object fieldValue, Type fieldType)
|
||||||
|
{
|
||||||
|
switch (fieldType.Name)
|
||||||
|
{
|
||||||
|
case "Int16":
|
||||||
|
case "Int32":
|
||||||
|
case "Int64":
|
||||||
|
if (fieldValue == DBNull.Value)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return fieldValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fieldValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
2904
Ease.Core/DataAccess/Oracle/OracleHepler.cs
Normal file
2904
Ease.Core/DataAccess/Oracle/OracleHepler.cs
Normal file
File diff suppressed because it is too large
Load Diff
690
Ease.Core/DataAccess/RowReader.cs
Normal file
690
Ease.Core/DataAccess/RowReader.cs
Normal file
|
@ -0,0 +1,690 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region DataAccess: Data Handler
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handle the null value
|
||||||
|
/// </summary>
|
||||||
|
public class RowReader
|
||||||
|
{
|
||||||
|
private DataRow _row;
|
||||||
|
|
||||||
|
public RowReader(DataRow row)
|
||||||
|
{
|
||||||
|
_row = row;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Get ID
|
||||||
|
|
||||||
|
public long GetID(Type[] types, params int[] fldIdxs)
|
||||||
|
{
|
||||||
|
if (types == null || fldIdxs == null || types.Length != fldIdxs.Length)
|
||||||
|
throw new Exception("Invalid use of array for ID.");
|
||||||
|
|
||||||
|
string value = string.Empty;
|
||||||
|
foreach (int fldIdx in fldIdxs)
|
||||||
|
{
|
||||||
|
if (_row[fldIdx] == null || _row[fldIdx] == DBNull.Value)
|
||||||
|
return long.MinValue;
|
||||||
|
|
||||||
|
value += value.Length > 0 ? "|" : "";
|
||||||
|
value += this.GetID(types[fldIdx], _row[fldIdx]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return long.Parse(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetID(Type[] types, params string[] names)
|
||||||
|
{
|
||||||
|
if (types == null || names == null || types.Length != names.Length)
|
||||||
|
throw new Exception("Invalid use of array for ID.");
|
||||||
|
|
||||||
|
int fldIdx = -1;
|
||||||
|
string value = string.Empty;
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
fldIdx++;
|
||||||
|
if (_row[name] == null || _row[name] == DBNull.Value)
|
||||||
|
return long.MinValue;
|
||||||
|
|
||||||
|
value += value.Length > 0 ? "|" : "";
|
||||||
|
value += this.GetID(types[fldIdx], _row[name]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return long.Parse(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetID(Type fldType, object fldValue)
|
||||||
|
{
|
||||||
|
if (fldType == typeof(int) || fldType == typeof(uint))
|
||||||
|
return string.Format("i:{0}", fldValue);
|
||||||
|
else if (fldType == typeof(long) || fldType == typeof(ulong) || fldType == typeof(decimal))
|
||||||
|
return string.Format("l:{0}", fldValue);
|
||||||
|
else
|
||||||
|
throw new Exception("Invalid use of type for ID");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Get Null value
|
||||||
|
|
||||||
|
public static bool? GetNullValue(bool value, bool nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (bool?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte? GetNullValue(byte value, byte nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static sbyte? GetNullValue(sbyte value, sbyte nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (sbyte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static short? GetNullValue(short value, short nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (short?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort? GetNullValue(ushort value, ushort nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (ushort?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int? GetNullValue(int value, int nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (int?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static uint? GetNullValue(uint value, uint nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (uint?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ulong? GetNullValue(ulong value, ulong nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (ulong?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long? GetNullValue(long value, long nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (long?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static decimal? GetNullValue(decimal value, decimal nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double? GetNullValue(double value, double nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float? GetNullValue(float value, float nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (float?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static char? GetNullValue(char value, char nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (char?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetNullValue(string value, string nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DateTime? GetNullValue(DateTime value, DateTime nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (DateTime?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Guid? GetNullValue(Guid value, Guid nullIfValue)
|
||||||
|
{
|
||||||
|
return (value == nullIfValue) ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool? GetNullValue(bool? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == false) ? null : (bool?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte? GetNullValue(byte? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (byte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static sbyte? GetNullValue(sbyte? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (sbyte?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static short? GetNullValue(short? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (short?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort? GetNullValue(ushort? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (ushort?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int? GetNullValue(int? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (int?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static uint? GetNullValue(uint? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (uint?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ulong? GetNullValue(ulong? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (ulong?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long? GetNullValue(long? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (long?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static decimal? GetNullValue(decimal? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (decimal?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double? GetNullValue(double? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (double?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float? GetNullValue(float? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == 0) ? null : (float?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static char? GetNullValue(char? value)
|
||||||
|
{
|
||||||
|
return (value == null || (byte)value == 0) ? null : (char?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetNullValue(string value)
|
||||||
|
{
|
||||||
|
return (string.IsNullOrEmpty(value)) ? null : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DateTime? GetNullValue(DateTime? value)
|
||||||
|
{
|
||||||
|
return (value == null || value == DateTime.MinValue) ? null : (DateTime?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Guid? GetNullValue(Guid? value)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object GetNullValue(long value)
|
||||||
|
{
|
||||||
|
if (value == null || value == long.MinValue)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Default Null Values
|
||||||
|
|
||||||
|
public bool? GetBoolean(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
if (value == null || value == DBNull.Value)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (value.ToString().Trim().Equals("1") || value.ToString().Trim().Equals("-1") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("true") || value.ToString().Trim().ToLower().Equals("yes"))
|
||||||
|
return true;
|
||||||
|
else if (value.ToString().Trim().Equals("0") || value.ToString().Trim().ToLower().Equals("false") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("no"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return (bool?)value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte? GetByte(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (byte?)value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte? GetSByte(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (sbyte?)value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short? GetInt16(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (short?)value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort? GetUInt16(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (ushort?)value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? GetInt32(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (int?)value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint? GetUInt32(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (uint?)value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long? GetInt64(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (long?)value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong? GetUInt64(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (ulong?)value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal? GetDecimal(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (decimal?)value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? GetDouble(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (double?)value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float? GetFloat(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (float?)value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char? GetChar(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (char?)value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? GetDateTime(int i)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? null : (DateTime?)value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid? GetGuid(int i)
|
||||||
|
{
|
||||||
|
object value = _row[i];
|
||||||
|
return value == DBNull.Value ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] GetLob(int i)
|
||||||
|
{
|
||||||
|
return (byte[])(_row.IsNull(i) ? (byte[])null : _row[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool? GetBoolean(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
if (value == null || value == DBNull.Value)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (value.ToString().Trim().Equals("1") || value.ToString().Trim().Equals("-1") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("true") || value.ToString().Trim().ToLower().Equals("yes"))
|
||||||
|
return true;
|
||||||
|
else if (value.ToString().Trim().Equals("0") || value.ToString().Trim().ToLower().Equals("false") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("no"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return (bool?)value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte? GetByte(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (byte?)value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte? GetSByte(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (sbyte?)value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short? GetInt16(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (short?)value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort? GetUInt16(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (ushort?)value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? GetInt32(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? (int?)null : (int?)value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint? GetUInt32(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (uint?)value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long? GetInt64(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (long?)value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong? GetUInt64(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (ulong?)value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal? GetDecimal(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (decimal?)value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? GetDouble(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (double?)value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float? GetFloat(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (float?)value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char? GetChar(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (char?)value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? GetDateTime(string name)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? null : (DateTime?)value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid? GetGuid(string name)
|
||||||
|
{
|
||||||
|
object value = _row[name];
|
||||||
|
return value == DBNull.Value ? null : (Guid?)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] GetLob(string name)
|
||||||
|
{
|
||||||
|
return (byte[])(_row[name] == DBNull.Value ? (byte[])null : _row[name]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Parameterized Null Value
|
||||||
|
|
||||||
|
public bool GetBoolean(int i, bool valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
if (value == null || value == DBNull.Value)
|
||||||
|
return valueIfNull;
|
||||||
|
|
||||||
|
if (value.ToString().Trim().Equals("1") || value.ToString().Trim().Equals("-1") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("true") || value.ToString().Trim().ToLower().Equals("yes"))
|
||||||
|
return true;
|
||||||
|
else if (value.ToString().Trim().Equals("0") || value.ToString().Trim().ToLower().Equals("false") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("no"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(int i, byte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte GetSByte(int i, sbyte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(int i, short valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort GetUInt16(int i, ushort valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(int i, int valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUInt32(int i, uint valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong GetUInt64(int i, ulong valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(int i, long valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(int i, decimal valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(int i, double valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(int i, float valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(int i, char valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(int i, string valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(int i, DateTime valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(int i, Guid valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _row[i];
|
||||||
|
return value == DBNull.Value ? valueIfNull : (Guid)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetBoolean(string name, bool valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
if (value == null || value == DBNull.Value)
|
||||||
|
return valueIfNull;
|
||||||
|
|
||||||
|
if (value.ToString().Trim().Equals("1") || value.ToString().Trim().Equals("-1") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("true") || value.ToString().Trim().ToLower().Equals("yes"))
|
||||||
|
return true;
|
||||||
|
else if (value.ToString().Trim().Equals("0") || value.ToString().Trim().ToLower().Equals("false") ||
|
||||||
|
value.ToString().Trim().ToLower().Equals("no"))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return value.ToBoolean(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetByte(string name, byte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sbyte GetSByte(string name, sbyte valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSByte(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short GetInt16(string name, short valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort GetUInt16(string name, ushort valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt16(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetInt32(string name, int valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint GetUInt32(string name, uint valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt32(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong GetUInt64(string name, ulong valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToUInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long GetInt64(string name, long valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToInt64(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal GetDecimal(string name, decimal valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDecimal(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double GetDouble(string name, double valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDouble(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float GetFloat(string name, float valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToSingle(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public char GetChar(string name, char valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToChar(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetString(string name, string valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToString(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime GetDateTime(string name, DateTime valueIfNull)
|
||||||
|
{
|
||||||
|
IConvertible value = (IConvertible)_row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : value.ToDateTime(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid GetGuid(string name, Guid valueIfNull)
|
||||||
|
{
|
||||||
|
object value = _row[name];
|
||||||
|
return value == DBNull.Value ? valueIfNull : (Guid)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
56
Ease.Core/DataAccess/Sql/SqlFactory.cs
Normal file
56
Ease.Core/DataAccess/Sql/SqlFactory.cs
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Source: UIP |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Configuration;
|
||||||
|
using Microsoft.Data.SqlClient;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess.SQL
|
||||||
|
{
|
||||||
|
#region DataAccess: SQL Connection Factory
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Summary description for SQLFactory.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class SqlFactory : ConnectionFactory
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instance of IDbConnection for MS SQL using default connectionstring.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Retuen an instance of IDbConnection for MS SQL.</returns>
|
||||||
|
public override System.Data.IDbConnection CreateConnection()
|
||||||
|
{
|
||||||
|
return new SqlConnection(base.ConnectionNode.ConnectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instance of IDbConnection for MS SQL using ConnectionContext.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">Valid ConnectionContext.</param>
|
||||||
|
/// <returns>Return instatnce of IDbConnection for MS SQL.</returns>
|
||||||
|
public override System.Data.IDbConnection CreateConnection(ConnectionContext context)
|
||||||
|
{
|
||||||
|
if (context == null || context.ContextKey.Length <= 0)
|
||||||
|
throw new Exception("There is no key in the Connection Context");
|
||||||
|
|
||||||
|
return new SqlConnection(ConnectionFactory.ContextConnection(context).ConnectionNode.ConnectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal SqlFactory()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
306
Ease.Core/DataAccess/Sql/SqlHelperExtension.cs
Normal file
306
Ease.Core/DataAccess/Sql/SqlHelperExtension.cs
Normal file
|
@ -0,0 +1,306 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using Microsoft.Data.SqlClient;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess.SQL
|
||||||
|
{
|
||||||
|
#region DataAccess: SQL Helper Extension
|
||||||
|
|
||||||
|
public sealed class SqlHelperExtension
|
||||||
|
{
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
private SqlHelperExtension()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Fill Data set
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the
|
||||||
|
/// DataReader records.</param>
|
||||||
|
/// <param name="from">The quantity of records skipped before placing
|
||||||
|
/// values on the DataReader on the DataSet.</param>
|
||||||
|
/// <param name="count">The maximum quantity of records alloed to fill on the
|
||||||
|
/// DataSet.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName, int from, int count)
|
||||||
|
{
|
||||||
|
DataAccessHelper.Fill(dataReader, dataSet, tableName, from, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fills a typed DataSet using the DataReader's current result. This method
|
||||||
|
/// allows paginated access to the database.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataReader">The DataReader used to fetch the values.</param>
|
||||||
|
/// <param name="dataSet">The DataSet used to store the values.</param>
|
||||||
|
/// <param name="tableName">The name of the DataSet table used to add the DataReader records.</param>
|
||||||
|
public static void Fill(IDataReader dataReader, DataSet dataSet, string tableName)
|
||||||
|
{
|
||||||
|
SqlHelperExtension.Fill(dataReader, dataSet, tableName, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return SqlParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</direction>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateParam(SqlDbType pType, ParameterDirection direction, object pValue)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateParam(string.Empty, pType, direction, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return SqlParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateParam(string pName, SqlDbType pType, ParameterDirection direction)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateParam(pName, pType, direction, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return SqlParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</direction>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateParam(string pName, SqlDbType pType, ParameterDirection direction,
|
||||||
|
object pValue)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = direction;
|
||||||
|
if (pType == SqlDbType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return SqlParameter object according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="direction">Direction of parameter.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateParam(string pName, SqlDbType pType, ParameterDirection direction,
|
||||||
|
object pValue, int size)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = direction;
|
||||||
|
param.Size = size;
|
||||||
|
if ((pType == SqlDbType.Char || pType == SqlDbType.VarChar || pType == SqlDbType.Text
|
||||||
|
|| pType == SqlDbType.NChar || pType == SqlDbType.NText || pType == SqlDbType.NVarChar) && size > 0)
|
||||||
|
{
|
||||||
|
string value = Global.StringFuncions.IsEmptyOrNull(pValue) ? string.Empty : pValue.ToString();
|
||||||
|
param.Value = Global.StringFuncions.Left(value, size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.Value = pValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Input Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateInParam(SqlDbType pType, object pValue)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateInParam(string.Empty, pType, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateInParam(string pName, SqlDbType pType)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateInParam(pName, pType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateInParam(string pName, SqlDbType pType, object pValue)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Input;
|
||||||
|
if (pType == SqlDbType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return input direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateInParam(string pName, SqlDbType pType, object pValue, int size)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Input;
|
||||||
|
param.Size = size;
|
||||||
|
if ((pType == SqlDbType.Char || pType == SqlDbType.VarChar || pType == SqlDbType.Text
|
||||||
|
|| pType == SqlDbType.NChar || pType == SqlDbType.NText || pType == SqlDbType.NVarChar) && size > 0)
|
||||||
|
{
|
||||||
|
string value = Global.StringFuncions.IsEmptyOrNull(pValue) ? string.Empty : pValue.ToString();
|
||||||
|
param.Value = Global.StringFuncions.Left(value, size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.Value = pValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Output Parameter
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateOutParam(SqlDbType pType, object pValue)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateOutParam(string.Empty, pType, pValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateOutParam(string pName, SqlDbType pType)
|
||||||
|
{
|
||||||
|
return SqlHelperExtension.CreateOutParam(pName, pType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateOutParam(string pName, SqlDbType pType, object pValue)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Output;
|
||||||
|
if (pType == SqlDbType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return output direction SqlParameter object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName">Name of parameter.</param>
|
||||||
|
/// <param name="pType">Type of data.</param>
|
||||||
|
/// <param name="pValue">Value of parametetr.</param>
|
||||||
|
/// <param name="size">If varchar then lenth of value.</param>
|
||||||
|
/// <returns>Instatnce of SqlParameter.</returns>
|
||||||
|
public static SqlParameter CreateOutParam(string pName, SqlDbType pType, object pValue, int size)
|
||||||
|
{
|
||||||
|
SqlParameter param = new SqlParameter(pName, pType);
|
||||||
|
param.Direction = ParameterDirection.Output;
|
||||||
|
param.Size = size;
|
||||||
|
param.Value = pValue;
|
||||||
|
|
||||||
|
return param;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Add Parameter
|
||||||
|
|
||||||
|
public static SqlCommand CreateCommand(string name)
|
||||||
|
{
|
||||||
|
SqlCommand command = new SqlCommand(name);
|
||||||
|
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddParameter(SqlCommand command, string name, SqlDbType type, ParameterDirection direction,
|
||||||
|
object value)
|
||||||
|
{
|
||||||
|
SqlParameter param = command.CreateParameter();
|
||||||
|
|
||||||
|
param.ParameterName = name;
|
||||||
|
param.SqlDbType = type;
|
||||||
|
param.Direction = direction;
|
||||||
|
if (type == SqlDbType.VarChar)
|
||||||
|
param.Size = 1000;
|
||||||
|
param.Value = value;
|
||||||
|
|
||||||
|
command.Parameters.Add(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddParameter(SqlCommand command, string name, SqlDbType type, ParameterDirection direction)
|
||||||
|
{
|
||||||
|
SqlHelperExtension.AddParameter(command, name, type, direction, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
2895
Ease.Core/DataAccess/Sql/SqlHepler.cs
Normal file
2895
Ease.Core/DataAccess/Sql/SqlHepler.cs
Normal file
File diff suppressed because it is too large
Load Diff
1321
Ease.Core/DataAccess/TransactionContext.cs
Normal file
1321
Ease.Core/DataAccess/TransactionContext.cs
Normal file
File diff suppressed because it is too large
Load Diff
349
Ease.Core/DataAccess/TransactionFactory.cs
Normal file
349
Ease.Core/DataAccess/TransactionFactory.cs
Normal file
|
@ -0,0 +1,349 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Ease.Core.DataAccess.SQL;
|
||||||
|
//using Ease.Core.DataAccess.Odbc;
|
||||||
|
//using Ease.Core.DataAccess.OleDb;
|
||||||
|
using Ease.Core.DataAccess.Oracle;
|
||||||
|
|
||||||
|
namespace Ease.Core.DataAccess
|
||||||
|
{
|
||||||
|
#region DataAccess: Transaction Helper Factory
|
||||||
|
|
||||||
|
public abstract class TransactionFactory
|
||||||
|
{
|
||||||
|
#region Default Helper
|
||||||
|
|
||||||
|
private static TransactionFactory _default;
|
||||||
|
|
||||||
|
public static TransactionFactory Default
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_default == null)
|
||||||
|
{
|
||||||
|
#region Default TransactionHelper
|
||||||
|
|
||||||
|
switch (ConnectionFactory.Provider)
|
||||||
|
{
|
||||||
|
case Provider.Sql:
|
||||||
|
_default = new SqlHelper();
|
||||||
|
break;
|
||||||
|
case Provider.Oracle:
|
||||||
|
//_default = new OracleHelper();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Provider.OleDb:
|
||||||
|
//_default = new OleDbHelper();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Provider.Odbc:
|
||||||
|
//_default = new OdbcHelper();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
return _default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Context Helper
|
||||||
|
|
||||||
|
public static TransactionFactory ContextTransactionHelper(ConnectionContext context)
|
||||||
|
{
|
||||||
|
TransactionFactory ctxFactory;
|
||||||
|
|
||||||
|
switch (ConnectionFactory.Provider)
|
||||||
|
{
|
||||||
|
//case Provider.Oracle:
|
||||||
|
// ctxFactory = new OracleHelper();
|
||||||
|
// break;
|
||||||
|
|
||||||
|
//case Provider.OleDb:
|
||||||
|
// ctxFactory = new OleDbHelper();
|
||||||
|
// break;
|
||||||
|
|
||||||
|
//case Provider.Odbc:
|
||||||
|
// ctxFactory = new OdbcHelper();
|
||||||
|
// break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ctxFactory = new SqlHelper();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctxFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Execute NonQuery
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion ExecuteNonQuery
|
||||||
|
|
||||||
|
#region Execute DataTable
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection,
|
||||||
|
CommandType commandType, string commandText);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection,
|
||||||
|
CommandType commandType, string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction,
|
||||||
|
CommandType commandType, string commandText);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction,
|
||||||
|
CommandType commandType, string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion ExecuteDataTable
|
||||||
|
|
||||||
|
#region Execute Dataset
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion ExecuteDataset
|
||||||
|
|
||||||
|
#region Execute Reader
|
||||||
|
|
||||||
|
private enum IDbConnectionOwnership
|
||||||
|
{
|
||||||
|
/// <summary>Connection is owned and managed by OleDbHelper</summary>
|
||||||
|
Internal,
|
||||||
|
|
||||||
|
/// <summary>Connection is owned and managed by the caller</summary>
|
||||||
|
External
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction,
|
||||||
|
CommandType commandType, string commandText);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction,
|
||||||
|
CommandType commandType, string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion ExecuteReader
|
||||||
|
|
||||||
|
#region Execute Scalar
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, string connectionString, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion ExecuteScalar
|
||||||
|
|
||||||
|
#region FillDataset
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, string connectionString, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, string connectionString, string spName, DataSet dataSet,
|
||||||
|
string[] tableNames, params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbConnection connection, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbConnection connection, string spName, DataSet dataSet,
|
||||||
|
string[] tableNames, params object[] parameterValues);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType,
|
||||||
|
string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters);
|
||||||
|
|
||||||
|
public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, string spName, DataSet dataSet,
|
||||||
|
string[] tableNames, params object[] parameterValues);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Update Dataset
|
||||||
|
|
||||||
|
public abstract void UpdateDataset(IDbCommand insertCommand, IDbCommand deleteCommand, IDbCommand updateCommand,
|
||||||
|
DataSet dataSet, string tableName);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Create Command
|
||||||
|
|
||||||
|
public abstract IDbCommand CreateCommand(IDbConnection connection, string spName,
|
||||||
|
params string[] sourceColumns);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Execute NonQuery TypedParams
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQueryTypedParams(int commandTimeout, string connectionString, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQueryTypedParams(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract int ExecuteNonQueryTypedParams(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Execute Dataset TypedParams
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, string connectionString, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Execute Reader TypedParams
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, string connectionString, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, IDbConnection connection,
|
||||||
|
string spName, DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, IDbTransaction transaction,
|
||||||
|
string spName, DataRow dataRow);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Execute Scalar TypedParams
|
||||||
|
|
||||||
|
public abstract object ExecuteScalarTypedParams(int commandTimeout, string connectionString, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalarTypedParams(int commandTimeout, IDbConnection connection, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
public abstract object ExecuteScalarTypedParams(int commandTimeout, IDbTransaction transaction, string spName,
|
||||||
|
DataRow dataRow);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
41
Ease.Core/Ease.Core.csproj
Normal file
41
Ease.Core/Ease.Core.csproj
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<SccProjectName>Svn</SccProjectName>
|
||||||
|
<SccProvider>SubversionScc</SccProvider>
|
||||||
|
<SccAuxPath>Svn</SccAuxPath>
|
||||||
|
<SccLocalPath>Svn</SccLocalPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="Class1.cs" />
|
||||||
|
<Compile Remove="Utility\ClientConfuration.cs" />
|
||||||
|
<Compile Remove="Utility\ClientStorage.cs" />
|
||||||
|
<Compile Remove="Utility\ConfigurationElement.cs" />
|
||||||
|
<Compile Remove="Utility\ConfigUtility.cs" />
|
||||||
|
<Compile Remove="Utility\IAsyncStatusHandle.cs" />
|
||||||
|
<Compile Remove="Utility\LateBoundObject.cs" />
|
||||||
|
<Compile Remove="Utility\ZipHelper.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="jsconfig1.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.12" />
|
||||||
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="4.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.100" />
|
||||||
|
<PackageReference Include="System.Data.OleDb" Version="6.0.0" />
|
||||||
|
<PackageReference Include="System.Data.OracleClient" Version="1.0.8" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
555
Ease.Core/EnumHelper.cs
Normal file
555
Ease.Core/EnumHelper.cs
Normal file
|
@ -0,0 +1,555 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Ease.Core
|
||||||
|
{
|
||||||
|
public sealed class EnumHelper
|
||||||
|
{
|
||||||
|
private EnumHelper()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use EnumFormatter.ToString() instead.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Obsolete("Use EnumFormatter.ToString()")]
|
||||||
|
public static string GetDescription(Enum value)
|
||||||
|
{
|
||||||
|
return EnumFormatter.ToString(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides formatting functions to convert enumeration values
|
||||||
|
/// to user-friendly strings by breaking proper-case enumeration
|
||||||
|
/// name into seperate words. Use the ToString() method to get
|
||||||
|
/// user-friendly text. Use the Parse method to parse a user-firendly
|
||||||
|
/// text to an enumeration value.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class EnumFormatter
|
||||||
|
{
|
||||||
|
private static Dictionary<string, EnumItemCollection> _hashEnums;
|
||||||
|
|
||||||
|
static EnumFormatter()
|
||||||
|
{
|
||||||
|
_hashEnums = new Dictionary<string, EnumItemCollection>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// convert enumeration values to user-friendly string
|
||||||
|
/// by breaking proper-case enumeration
|
||||||
|
/// name into seperate words. RecceivedFromOtherDepot = "Recceived From Other Depot".
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value">The value to be converted</param>
|
||||||
|
/// <returns>Formatted string</returns>
|
||||||
|
public static string ToString(Enum value)
|
||||||
|
{
|
||||||
|
string s = value.ToString();
|
||||||
|
|
||||||
|
StringBuilder desc = new StringBuilder(s.Length);
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsLower(s[i]) && i > 0 && char.IsLower(s[i - 1]))
|
||||||
|
{
|
||||||
|
desc.Append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
desc.Append(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return desc.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parse a formatted enumeration name into the value.
|
||||||
|
/// "Recceived From Other Depot" --> RecceivedFromOtherDepot.
|
||||||
|
/// Throws FormattingException if fails to convert to
|
||||||
|
/// an enumeration value for the specified type.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">The type to convert to.</param>
|
||||||
|
/// <param name="text">Text to parse</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Enum Parse(Type enumType, string text)
|
||||||
|
{
|
||||||
|
text = text.Replace(" ", "");
|
||||||
|
|
||||||
|
return (Enum)Enum.Parse(enumType, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return the actual value in integer.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <param name="value">Value to be converted.</param>
|
||||||
|
/// <returns>Integer value.</returns>
|
||||||
|
public static int GetValue(Type enumType, Enum value)
|
||||||
|
{
|
||||||
|
return (Convert.ToInt32(Enum.Format(enumType, value, "d")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return the integer value.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <param name="text">Friendly name or actual name.</param>
|
||||||
|
/// <returns>Return an integer value.</returns>
|
||||||
|
public static int GetValue(Type enumType, string text)
|
||||||
|
{
|
||||||
|
text = text.Replace(" ", "");
|
||||||
|
|
||||||
|
return Convert.ToInt32(Enum.Parse(enumType, text));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return the nteger value index zero based.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <param name="value">Enum value.</param>
|
||||||
|
/// <returns>Return an integer index.</returns>
|
||||||
|
public static int GetIndex(Type enumType, Enum value)
|
||||||
|
{
|
||||||
|
string s = value.ToString();
|
||||||
|
return GetIndex(enumType, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return the nteger value index zero based.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <param name="text">Friendly name or actual name.</param>
|
||||||
|
/// <returns>Return an integer index.</returns>
|
||||||
|
public static int GetIndex(Type enumType, string text)
|
||||||
|
{
|
||||||
|
if (_hashEnums.ContainsKey(enumType.FullName))
|
||||||
|
{
|
||||||
|
EnumItemCollection items = _hashEnums[enumType.FullName];
|
||||||
|
if (items != null)
|
||||||
|
{
|
||||||
|
text = text.Replace(" ", "");
|
||||||
|
|
||||||
|
EnumItem item = items[text];
|
||||||
|
if (item != null)
|
||||||
|
return item.Index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return string array of enum.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <returns>Array of string.</returns>
|
||||||
|
public static string[] GetNames(Type enumType)
|
||||||
|
{
|
||||||
|
EnumItemCollection items = EnumFormatter.GetObjects(enumType);
|
||||||
|
|
||||||
|
if (items != null)
|
||||||
|
return items.GetNames();
|
||||||
|
|
||||||
|
return new string[] { };
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return EnumItemCollection object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <returns>Return EnumItemCollection object.</returns>
|
||||||
|
public static EnumItemCollection GetObjects(Type enumType)
|
||||||
|
{
|
||||||
|
EnumItemCollection items;
|
||||||
|
if (_hashEnums.ContainsKey(enumType.FullName))
|
||||||
|
{
|
||||||
|
items = (EnumItemCollection)_hashEnums[enumType.FullName];
|
||||||
|
|
||||||
|
if (items != null)
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
string[] names = Enum.GetNames(enumType);
|
||||||
|
items = new EnumItemCollection();
|
||||||
|
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
string s = name;
|
||||||
|
|
||||||
|
StringBuilder desc = new StringBuilder(s.Length);
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsLower(s[i]) && i > 0 && char.IsLower(s[i - 1]))
|
||||||
|
{
|
||||||
|
desc.Append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
desc.Append(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
s = desc.ToString();
|
||||||
|
|
||||||
|
EnumItem item = new EnumItem(index, name, s, EnumFormatter.GetValue(enumType, name));
|
||||||
|
|
||||||
|
items.Add(item);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
_hashEnums.Add(enumType.FullName, items);
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return EnumItemCollection object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">From based on which enum.</param>
|
||||||
|
/// <param name="values">Array of enums value.</param>
|
||||||
|
/// <returns>Return EnumItemCollection object.</returns>
|
||||||
|
public static EnumItemCollection GetObjects(Type enumType, Array values)
|
||||||
|
{
|
||||||
|
EnumItemCollection items;
|
||||||
|
|
||||||
|
#region From Cached Items
|
||||||
|
|
||||||
|
if (_hashEnums.ContainsKey(enumType.FullName))
|
||||||
|
{
|
||||||
|
EnumItemCollection cachedItems = (EnumItemCollection)_hashEnums[enumType.FullName];
|
||||||
|
|
||||||
|
if (cachedItems != null)
|
||||||
|
{
|
||||||
|
items = new EnumItemCollection();
|
||||||
|
foreach (EnumItem cachedItem in cachedItems)
|
||||||
|
{
|
||||||
|
foreach (Enum value in values)
|
||||||
|
{
|
||||||
|
int enumValue = Convert.ToInt32(Enum.Format(enumType, value, "d"));
|
||||||
|
if (cachedItem.Value == enumValue)
|
||||||
|
{
|
||||||
|
EnumItem item = new EnumItem(cachedItem.Index, cachedItem.Name, cachedItem.FriendlyName,
|
||||||
|
cachedItem.Value);
|
||||||
|
items.Add(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Items agains Passed enums array
|
||||||
|
|
||||||
|
string[] names = Enum.GetNames(enumType);
|
||||||
|
items = new EnumItemCollection();
|
||||||
|
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
string s = name;
|
||||||
|
|
||||||
|
StringBuilder desc = new StringBuilder(s.Length);
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsLower(s[i]) && i > 0 && char.IsLower(s[i - 1]))
|
||||||
|
{
|
||||||
|
desc.Append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
desc.Append(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
s = desc.ToString();
|
||||||
|
|
||||||
|
int enumValue = Convert.ToInt32(Enum.Parse(enumType, name, true));
|
||||||
|
|
||||||
|
foreach (Enum value in values)
|
||||||
|
{
|
||||||
|
int enumParamValue = Convert.ToInt32(Enum.Format(enumType, value, "d"));
|
||||||
|
if (enumValue == enumParamValue)
|
||||||
|
{
|
||||||
|
EnumItem item = new EnumItem(items.Count, name, s, enumValue);
|
||||||
|
items.Add(item);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Helper Class
|
||||||
|
|
||||||
|
public sealed class EnumItem
|
||||||
|
{
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
internal EnumItem(int index, string name, string friendlyName, int value)
|
||||||
|
{
|
||||||
|
_name = name;
|
||||||
|
_index = index;
|
||||||
|
_value = value;
|
||||||
|
_friendlyName = friendlyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properies
|
||||||
|
|
||||||
|
#region Property Index : int
|
||||||
|
|
||||||
|
private readonly int _index;
|
||||||
|
|
||||||
|
public int Index
|
||||||
|
{
|
||||||
|
get { return _index; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Property Name : string
|
||||||
|
|
||||||
|
private readonly string _name;
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return _name; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Property FriendlyName : string
|
||||||
|
|
||||||
|
private readonly string _friendlyName;
|
||||||
|
|
||||||
|
public string FriendlyName
|
||||||
|
{
|
||||||
|
get { return _friendlyName; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Property Value : int
|
||||||
|
|
||||||
|
private readonly int _value;
|
||||||
|
|
||||||
|
public int Value
|
||||||
|
{
|
||||||
|
get { return _value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Functions
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use to create an EnumItem object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">Type of Enum i.e TypeOf(UserTypeEnum) </param>
|
||||||
|
/// <param name="value">Value of enum i.e UserTypeEnum.Admin</param>
|
||||||
|
/// <returns>Returns an instatnce of EnumItem</returns>
|
||||||
|
public static EnumItem FromValue(Type enumType, Enum value)
|
||||||
|
{
|
||||||
|
int enumValue = Convert.ToInt32(Enum.Format(enumType, value, "d"));
|
||||||
|
return EnumItem.FromValue(enumType, enumValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use to create an EnumItem object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">Type of Enum i.e TypeOf(UserTypeEnum) </param>
|
||||||
|
/// <param name="value">Valid enum value in int</param>
|
||||||
|
/// <returns>Returns an instatnce of EnumItem</returns>
|
||||||
|
public static EnumItem FromValue(Type enumType, int value)
|
||||||
|
{
|
||||||
|
int idx = -1;
|
||||||
|
EnumItem item = null;
|
||||||
|
|
||||||
|
string[] names = Enum.GetNames(enumType);
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
idx += 1;
|
||||||
|
int val = Convert.ToInt32(Enum.Parse(enumType, name, true));
|
||||||
|
if (val != value)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string s = name;
|
||||||
|
StringBuilder desc = new StringBuilder(s.Length);
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsLower(s[i]) && i > 0 && char.IsLower(s[i - 1]))
|
||||||
|
desc.Append(" ");
|
||||||
|
|
||||||
|
desc.Append(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
s = desc.ToString();
|
||||||
|
|
||||||
|
item = new EnumItem(idx, name, s, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use to create an EnumItem object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">Type of Enum i.e TypeOf(UserTypeEnum) </param>
|
||||||
|
/// <param name="value">Valid value of enum in string i.e Admin</param>
|
||||||
|
/// <returns>Returns an instatnce of EnumItem</returns>
|
||||||
|
public static EnumItem FromValue(Type enumType, string value)
|
||||||
|
{
|
||||||
|
int enumValue = 0;
|
||||||
|
if (!int.TryParse(value, out enumValue))
|
||||||
|
enumValue = -99999;
|
||||||
|
|
||||||
|
if (enumValue == -99999)
|
||||||
|
throw new Exception(string.Format("Invalid use of value: {0}", value));
|
||||||
|
|
||||||
|
return EnumItem.FromValue(enumType, enumValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use to create an EnumItem object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="enumType">Type of Enum i.e TypeOf(UserTypeEnum)</param>
|
||||||
|
/// <param name="values">Custom arry of enum i.e new UserTypeEnum[]{UserTypeEnum.SuperUser, UserTypeEnum.Admin}</param>
|
||||||
|
/// <param name="value">Value of enum i.e UserTypeEnum.Admin</param>
|
||||||
|
/// <returns>Returns an instatnce of EnumItem</returns>
|
||||||
|
public static EnumItem FromValue(Type enumType, Array values, Enum value)
|
||||||
|
{
|
||||||
|
int idx = -1;
|
||||||
|
EnumItem item = null;
|
||||||
|
int enumValue = Convert.ToInt32(Enum.Format(enumType, value, "d"));
|
||||||
|
foreach (Enum arValue in values)
|
||||||
|
{
|
||||||
|
idx += 1;
|
||||||
|
string name = arValue.ToString();
|
||||||
|
int val = Convert.ToInt32(Enum.Parse(enumType, name, true));
|
||||||
|
if (val != enumValue)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string s = name;
|
||||||
|
StringBuilder desc = new StringBuilder(s.Length);
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsLower(s[i]) && i > 0 && char.IsLower(s[i - 1]))
|
||||||
|
desc.Append(" ");
|
||||||
|
|
||||||
|
desc.Append(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
s = desc.ToString();
|
||||||
|
|
||||||
|
item = new EnumItem(idx, name, s, enumValue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item == null)
|
||||||
|
return new EnumItem(-1, "Unknown", "Unknown", enumValue);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class EnumItemCollection : CollectionBase
|
||||||
|
{
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
private Hashtable _hashTable;
|
||||||
|
|
||||||
|
internal EnumItemCollection()
|
||||||
|
{
|
||||||
|
_hashTable = new Hashtable();
|
||||||
|
InnerList.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Functions
|
||||||
|
|
||||||
|
internal void Add(EnumItem item)
|
||||||
|
{
|
||||||
|
if (!_hashTable.ContainsKey(item.Name))
|
||||||
|
{
|
||||||
|
_hashTable.Add(item.Name, item);
|
||||||
|
InnerList.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnumItem this[Enum value]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string s = value.ToString();
|
||||||
|
return this[s];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnumItem this[string valueMember]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
valueMember = valueMember.Replace(" ", "");
|
||||||
|
|
||||||
|
if (_hashTable.ContainsKey(valueMember))
|
||||||
|
return (EnumItem)_hashTable[valueMember];
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnumItem this[int index]
|
||||||
|
{
|
||||||
|
get { return (EnumItem)InnerList[index]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string[] GetNames()
|
||||||
|
{
|
||||||
|
string[] names = null;
|
||||||
|
if (this.Count > 0)
|
||||||
|
{
|
||||||
|
names = new string[this.Count];
|
||||||
|
for (int index = 0; index < this.Count; index++)
|
||||||
|
{
|
||||||
|
names[index] = this[index].FriendlyName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EnumDescription
|
||||||
|
{
|
||||||
|
public static string GetEnumDescription(Enum value)
|
||||||
|
{
|
||||||
|
FieldInfo fi = value.GetType().GetField(value.ToString());
|
||||||
|
DescriptionAttribute[] attributes =
|
||||||
|
(DescriptionAttribute[])fi.GetCustomAttributes
|
||||||
|
(typeof(DescriptionAttribute), false);
|
||||||
|
|
||||||
|
return (attributes.Length > 0) ? attributes[0].Description : value.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
117
Ease.Core/Enums.cs
Normal file
117
Ease.Core/Enums.cs
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Ease.Core
|
||||||
|
{
|
||||||
|
#region EnuSQL Syntax Enum
|
||||||
|
|
||||||
|
public enum SQLSyntax
|
||||||
|
{
|
||||||
|
Access = 1,
|
||||||
|
SQL,
|
||||||
|
Oracle,
|
||||||
|
Informix
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public enum EnumTrainingCharacter
|
||||||
|
{
|
||||||
|
Class_Room_Education = 1,
|
||||||
|
On_the_job_training = 2,
|
||||||
|
Developmental_relationships = 3,
|
||||||
|
Functional_Developments = 4
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region Provider
|
||||||
|
|
||||||
|
public enum Provider
|
||||||
|
{
|
||||||
|
Sql = 1,
|
||||||
|
OracleNative,
|
||||||
|
Oracle,
|
||||||
|
OleDb,
|
||||||
|
Odbc
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Enumeration: ObjectState
|
||||||
|
|
||||||
|
public enum ObjectState
|
||||||
|
{
|
||||||
|
New,
|
||||||
|
Modified,
|
||||||
|
Saved
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Action enumeration
|
||||||
|
|
||||||
|
public enum ActionEnum : short
|
||||||
|
{
|
||||||
|
Insert = 1,
|
||||||
|
Update = 2,
|
||||||
|
Delete = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Date format Enum
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This function return actual date according
|
||||||
|
/// to passed parameter (optional time format after date, then a space
|
||||||
|
/// and foramt 'hh:mm:ss AM/PM'
|
||||||
|
/// </summary>
|
||||||
|
public enum FormatOptions : byte
|
||||||
|
{
|
||||||
|
ddMMyyyy = 1,
|
||||||
|
MMddyyyy = 2,
|
||||||
|
ddMMMyyyy = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Create Mode
|
||||||
|
|
||||||
|
internal enum CreateMode
|
||||||
|
{
|
||||||
|
Local,
|
||||||
|
Remote
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region Address Type: outlook
|
||||||
|
|
||||||
|
public enum AddressType : int
|
||||||
|
{
|
||||||
|
Home,
|
||||||
|
Business,
|
||||||
|
Other
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public enum enumCompetency
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Value = 1,
|
||||||
|
Competency = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public enum EnumResidence
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Own = 1,
|
||||||
|
Rented = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
354
Ease.Core/Model/ObjectTemplate.cs
Normal file
354
Ease.Core/Model/ObjectTemplate.cs
Normal file
|
@ -0,0 +1,354 @@
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Ease.Core.Model;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Ease.Core.Model
|
||||||
|
{
|
||||||
|
#region Framwwork: Business Object
|
||||||
|
|
||||||
|
#region Framwwork: Event delegate
|
||||||
|
|
||||||
|
public delegate void ObjectIDChanged(long newID);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public abstract class ObjectTemplate
|
||||||
|
{
|
||||||
|
private int _sortOrder;
|
||||||
|
protected ObjectState _objectState;
|
||||||
|
|
||||||
|
protected int _id = int.MinValue;
|
||||||
|
//private Dictionary<string, string> _auditTrail;
|
||||||
|
|
||||||
|
//The event handler need to be non serialized
|
||||||
|
//public event ObjectIDChanged IDChanged;
|
||||||
|
|
||||||
|
public ObjectTemplate()
|
||||||
|
{
|
||||||
|
_objectState = ObjectState.New;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of the object
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public int ID
|
||||||
|
{
|
||||||
|
get { return _id; }
|
||||||
|
set { _id = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// State of the object IsNew/Not
|
||||||
|
/// </summary>
|
||||||
|
//public bool IsNew
|
||||||
|
//{
|
||||||
|
// get { return _objectState == ObjectState.New; }
|
||||||
|
//}
|
||||||
|
|
||||||
|
public bool IsNew
|
||||||
|
{
|
||||||
|
get { return _id <= 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// State of the object IsModified/Not
|
||||||
|
/// </summary>
|
||||||
|
//public bool IsModified
|
||||||
|
//{
|
||||||
|
// get { return _objectState == ObjectState.Modified; }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// State of the object IsSaved/Not
|
||||||
|
/// </summary>
|
||||||
|
//public bool IsSaved
|
||||||
|
//{
|
||||||
|
// get { return _objectState == ObjectState.Saved; }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public bool IsUnassigned
|
||||||
|
//{
|
||||||
|
// get { return _id == long.MinValue; }
|
||||||
|
//}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public int SortOrder
|
||||||
|
{
|
||||||
|
get { return _sortOrder; }
|
||||||
|
set { _sortOrder = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set modified state of the object
|
||||||
|
/// </summary>
|
||||||
|
protected void SetObjectStateModified()
|
||||||
|
{
|
||||||
|
if (_objectState == ObjectState.Saved)
|
||||||
|
_objectState = ObjectState.Modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set ID of the object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">A valid ID for the object.</param>
|
||||||
|
public void SetID(int id)
|
||||||
|
{
|
||||||
|
_id = id;
|
||||||
|
|
||||||
|
//if (IDChanged != null)
|
||||||
|
// IDChanged(_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set state of the object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="state">A valid state.</param>
|
||||||
|
protected internal void SetState(ObjectState state)
|
||||||
|
{
|
||||||
|
_objectState = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual internal void SetReadOnlyProperties(params object[] propertyValues)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return GetType().Name + " (" + _id.ToString() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
if (obj == null || (obj.GetType() != this.GetType()))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return _id.Equals((obj as ObjectTemplate)._id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
if ((object)_id == null)
|
||||||
|
return base.GetHashCode();
|
||||||
|
else
|
||||||
|
return _id.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(ObjectTemplate template1, ObjectTemplate template2)
|
||||||
|
{
|
||||||
|
if ((object)template1 != null)
|
||||||
|
return template1.Equals(template2);
|
||||||
|
else
|
||||||
|
return ((object)template2 == null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator !=(ObjectTemplate template1, ObjectTemplate template2)
|
||||||
|
{
|
||||||
|
if ((object)template1 != null)
|
||||||
|
return !template1.Equals(template2);
|
||||||
|
else
|
||||||
|
return !((object)template2 == null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Make clone of the current instance rather reference
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Return another instance of current instance rather reference.</returns>
|
||||||
|
protected ObjectTemplate Clone()
|
||||||
|
{
|
||||||
|
return this.CopyObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create string value from current instance.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key">For further reconstruct.</param>
|
||||||
|
/// <param name="delimiter">Delimiter for each property for current instance.</param>
|
||||||
|
/// <param name="properties">Name of the property(ies) by which string will consturct.</param>
|
||||||
|
/// <returns>Return delimited string.</returns>
|
||||||
|
protected virtual string LineData(int key, string delimiter, params string[] properties)
|
||||||
|
{
|
||||||
|
if (delimiter.IndexOf('|') >= 0)
|
||||||
|
throw new Exception("Invalid use of separator: '|'. User separator other than '|'.");
|
||||||
|
|
||||||
|
string line = string.Format("{0}", key);
|
||||||
|
PropertyInfo[] pis = this.GetType()
|
||||||
|
.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
|
||||||
|
foreach (string property in properties)
|
||||||
|
{
|
||||||
|
foreach (PropertyInfo pi in pis)
|
||||||
|
{
|
||||||
|
if (pi.Name.ToLower().Equals(property.ToLower()))
|
||||||
|
{
|
||||||
|
string value = string.Empty;
|
||||||
|
object val = pi.GetValue(this, null);
|
||||||
|
|
||||||
|
if (val != null)
|
||||||
|
{
|
||||||
|
if (pi.PropertyType.IsEnum)
|
||||||
|
value = Convert.ToInt32(val).ToString("0");
|
||||||
|
else if (pi.PropertyType == typeof(long))
|
||||||
|
value = Convert.ToInt32(val).ToString("0");
|
||||||
|
else if (pi.PropertyType == typeof(int))
|
||||||
|
value = Convert.ToInt32(val).ToString("0");
|
||||||
|
else if (pi.PropertyType == typeof(double))
|
||||||
|
value = Convert.ToDouble(val).ToString("0.0000");
|
||||||
|
else if (pi.PropertyType == typeof(DateTime))
|
||||||
|
value = Convert.ToDateTime(val).ToString("MM/dd/yyyy");
|
||||||
|
else if (pi.PropertyType == typeof(bool))
|
||||||
|
value = Convert.ToBoolean(val) ? "1" : "0";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
value = val.ToString();
|
||||||
|
value = value.Replace(Environment.NewLine, "*^*");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
line = string.Format("{0}{1}{2}", line, delimiter, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create an instatnce of BaseType.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="baseType">Type of object to create an instance.</param>
|
||||||
|
/// <param name="delimiter">Delimiter in the string to separate each property.</param>
|
||||||
|
/// <param name="objString">Delimited string to create object.</param>
|
||||||
|
/// <param name="properties">Set property(ies) of object.</param>
|
||||||
|
/// <returns>Return an instance of basetype.</returns>
|
||||||
|
protected ObjectTemplate CreateObjectFromString(Type baseType, string delimiter, string objString,
|
||||||
|
params string[] properties)
|
||||||
|
{
|
||||||
|
if (delimiter.IndexOf('|') >= 0)
|
||||||
|
throw new Exception("Invalid use of separator: '|'. User separator other than '|'.");
|
||||||
|
|
||||||
|
ObjectTemplate ot =
|
||||||
|
(ObjectTemplate)ObjectUtility.CreateInstance(baseType.FullName, new object[] { }, baseType);
|
||||||
|
PropertyInfo[] props = baseType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
|
||||||
|
int index = objString.IndexOf(delimiter);
|
||||||
|
if (index != -1)
|
||||||
|
objString = objString.Substring(index + 1);
|
||||||
|
|
||||||
|
string[] values = objString.Split(delimiter.ToCharArray());
|
||||||
|
index = -1;
|
||||||
|
|
||||||
|
if (values.Length != properties.Length)
|
||||||
|
throw new Exception("No of properties and values are not same");
|
||||||
|
|
||||||
|
foreach (string property in properties)
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
|
||||||
|
foreach (PropertyInfo prop in props)
|
||||||
|
{
|
||||||
|
if (prop.Name.ToLower().Equals(property.ToLower()))
|
||||||
|
{
|
||||||
|
object value = values[index];
|
||||||
|
if (prop.PropertyType.IsEnum)
|
||||||
|
prop.SetValue(ot, Enum.Parse(prop.PropertyType, value.ToString(), true), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(bool)))
|
||||||
|
prop.SetValue(ot, Convert.ToBoolean(Convert.ToInt32(value)), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(DateTime)))
|
||||||
|
prop.SetValue(ot, Convert.ToDateTime(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(double)))
|
||||||
|
prop.SetValue(ot, Convert.ToDouble(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(decimal)))
|
||||||
|
prop.SetValue(ot, Convert.ToDecimal(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int16)))
|
||||||
|
prop.SetValue(ot, Convert.ToInt16(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int32)))
|
||||||
|
prop.SetValue(ot, Convert.ToInt32(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int64)))
|
||||||
|
prop.SetValue(ot, Convert.ToInt64(value), null);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(byte)))
|
||||||
|
prop.SetValue(ot, Convert.ToByte(value), null);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
value = value.ToString().Replace("*^*", Environment.NewLine);
|
||||||
|
prop.SetValue(ot, value, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ot;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal ObjectTemplate CopyObject()
|
||||||
|
{
|
||||||
|
ObjectTemplate cot =
|
||||||
|
Ease.Core.Utility.ObjectUtility.CreateInstance(this.GetType().FullName, new object[] { },
|
||||||
|
this.GetType()) as ObjectTemplate;
|
||||||
|
foreach (FieldInfo fi in this.GetType()
|
||||||
|
.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
|
||||||
|
fi.SetValue(cot, fi.GetValue(this));
|
||||||
|
|
||||||
|
return cot;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Keep Track whether value of property has been changed or not
|
||||||
|
/// and property value cannot be null.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of property i.e string/int/DateTime e.t.c.</typeparam>
|
||||||
|
/// <param name="propertyName">Name of the property i.e "Description".</param>
|
||||||
|
/// <param name="currentValue">Existing value of the property i.e "Computer Ease Ltd"</param>
|
||||||
|
/// <param name="newValue">New value of the property i.e. "CEL"</param>
|
||||||
|
//protected void OnPropertyChange<T>(string propertyName, T currentValue, T newValue)
|
||||||
|
// where T : IEquatable<T>
|
||||||
|
//{
|
||||||
|
// if ((newValue != null && !newValue.Equals(currentValue)) || (newValue == null && currentValue != null))
|
||||||
|
// {
|
||||||
|
// if (_objectState != ObjectState.New)
|
||||||
|
// {
|
||||||
|
// if (_auditTrail == null)
|
||||||
|
// _auditTrail = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
// _auditTrail[propertyName] = string.Format("{0} => {1}", currentValue, newValue);
|
||||||
|
// _objectState = ObjectState.Modified;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Keep Track whether value of property has been changed or not
|
||||||
|
/// and property value may be null.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of property i.e string/int/DateTime e.t.c.</typeparam>
|
||||||
|
/// <param name="propertyName">Name of the property i.e "Description".</param>
|
||||||
|
/// <param name="currentValue">Existing value of the property i.e "Computer Ease Ltd"</param>
|
||||||
|
/// <param name="newValue">New value of the property i.e. "CEL"</param>
|
||||||
|
//protected void OnPropertyChange<T>(string propertyName, Nullable<T> currentValue, Nullable<T> newValue)
|
||||||
|
// where T : struct
|
||||||
|
//{
|
||||||
|
// if ((newValue != null && !newValue.Equals(currentValue)) || (newValue == null && currentValue != null))
|
||||||
|
// {
|
||||||
|
// if (_objectState != ObjectState.New)
|
||||||
|
// {
|
||||||
|
// if (_auditTrail == null)
|
||||||
|
// _auditTrail = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
// _auditTrail[propertyName] = string.Format("{0} => {1}", currentValue, newValue);
|
||||||
|
// _objectState = ObjectState.Modified;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
44
Ease.Core/Model/ServiceException.cs
Normal file
44
Ease.Core/Model/ServiceException.cs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Special thanks to Asif Ahamed Siddiqui |
|
||||||
|
| Author: S. M. Russel, Last modified date: 128/12/2007 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace Ease.Core.Model
|
||||||
|
{
|
||||||
|
#region Framework: Service Exception Object
|
||||||
|
|
||||||
|
public class ServiceException : ApplicationException
|
||||||
|
{
|
||||||
|
public ServiceException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceException(string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceException(SerializationInfo info, StreamingContext context) : base(info, context)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
base.GetObjectData(info, context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
184
Ease.Core/Model/ServiceFactory.cs
Normal file
184
Ease.Core/Model/ServiceFactory.cs
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Special thanks to Asif Ahamed Siddiqui |
|
||||||
|
| Author: S. M. Russel, Last modified date: 18/04/2009 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Collections;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Security.Permissions;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
|
||||||
|
namespace Ease.Core.Model
|
||||||
|
{
|
||||||
|
#region Framework: Service Factory
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ServiceFactory Class proIDes functionality to Create Service Objects as Remote objects or In-Process objects depending on a configuratio Setting.
|
||||||
|
/// This key wtritten in appSettings section and default key 'serviceHandler'
|
||||||
|
/// </summary>
|
||||||
|
internal enum CreateMode
|
||||||
|
{
|
||||||
|
Local,
|
||||||
|
Remote
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceFactory
|
||||||
|
{
|
||||||
|
private string _asmFullName;
|
||||||
|
private ListDictionary _assemblies;
|
||||||
|
private Dictionary<string, object> _cachedTypes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor for ServiceFactory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sectionKey">
|
||||||
|
/// Define sectionKey . Use the follwoing format :-
|
||||||
|
/// For Remote: "Application server-url:port/ServiceAssembly;ServiceAssembly"
|
||||||
|
/// Example : value="100.100.100.29:49500/Services;Services.Core;Sales.ProductHierarchy"
|
||||||
|
/// For Local : "ServiceAssembly/Datasource;ServiceAssembly/Datasource".
|
||||||
|
/// Example : value="Services.dll/TELDMS;Services.Core.dll/SalesCore;Sales.ProductHierarchy.dll/SalesMktHierarchy"
|
||||||
|
/// </param>
|
||||||
|
public ServiceFactory(string sectionKey)
|
||||||
|
{
|
||||||
|
if (_cachedTypes == null) _cachedTypes = new Dictionary<string, object>();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create service of parameter type which belongs current service
|
||||||
|
/// assembly (Only one service assembly is used).
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Any interface</typeparam>
|
||||||
|
/// <param name="type">Type of interface from business object which is implemented in service assembly.</param>
|
||||||
|
/// <returns>Return appropriate service if found
|
||||||
|
/// otherwise throw an exception 'Error Creating Service'.
|
||||||
|
/// </returns>
|
||||||
|
public T CreateService<T>(Type type)
|
||||||
|
{
|
||||||
|
object service = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string serviceName = type.Name.StartsWith("I") ? type.Name.Substring(1) : type.Name;
|
||||||
|
|
||||||
|
#region Individual objects are configured
|
||||||
|
|
||||||
|
lock (_cachedTypes)
|
||||||
|
{
|
||||||
|
string serverEP = type.Assembly.FullName;
|
||||||
|
serverEP = serverEP.Substring(0, serverEP.IndexOf('.'));
|
||||||
|
serverEP = serverEP + ".DA";
|
||||||
|
string endPoint = serverEP + ".dll";
|
||||||
|
string targetAssembly = type.Assembly.FullName.Replace("BO", "DA") + "." + serviceName;
|
||||||
|
|
||||||
|
if (_cachedTypes.ContainsKey(targetAssembly) == false)
|
||||||
|
{
|
||||||
|
Assembly assembly = Assembly.Load(serverEP);
|
||||||
|
foreach (Type svcType in assembly.GetTypes())
|
||||||
|
{
|
||||||
|
// if (svcType.IsMarshalByRef && svcType.IsSubclassOf(typeof(ServiceTemplate)))
|
||||||
|
if (svcType.IsSubclassOf(typeof(ServiceTemplate)))
|
||||||
|
{
|
||||||
|
string key = assembly.FullName + "." + svcType.Name;
|
||||||
|
if (!_cachedTypes.ContainsKey(key))
|
||||||
|
_cachedTypes.Add(key, svcType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Type implType = (Type)_cachedTypes[targetAssembly];
|
||||||
|
service = implType.InvokeMember("", BindingFlags.CreateInstance, null, null, null);
|
||||||
|
implType.InvokeMember("SetEndPoint",
|
||||||
|
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic, null, service,
|
||||||
|
new object[] { endPoint });
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("Error Creating Service for type: {0}", type.Name), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (service == null)
|
||||||
|
throw new Exception(string.Format("Error Creating Service for type: {0}", type.Name));
|
||||||
|
|
||||||
|
return (T)service;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create service of parameter type which belongs to nsOfService namespance
|
||||||
|
/// (use multiple service assembly).
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Any interface</typeparam>
|
||||||
|
/// <param name="type">Type of interface from business object which is implemented in service assembly.</param>
|
||||||
|
/// <param name="nsOfService">Type belongs to which namespace. </param>
|
||||||
|
/// <returns>Return appropriate service if found
|
||||||
|
/// otherwise throw an exception 'Error Creating Service'.
|
||||||
|
/// </returns>
|
||||||
|
public T CreateService<T>(Type type, string nsOfService)
|
||||||
|
{
|
||||||
|
object service = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string serviceName = type.Name.StartsWith("I") ? type.Name.Substring(1) : type.Name;
|
||||||
|
|
||||||
|
#region Individual objects are configured
|
||||||
|
|
||||||
|
//Checking mode for current type
|
||||||
|
|
||||||
|
|
||||||
|
string serverEP = type.Assembly.FullName;
|
||||||
|
serverEP = serverEP.Substring(0, serverEP.IndexOf('.'));
|
||||||
|
serverEP = serverEP + ".DA";
|
||||||
|
string EndPoint = serverEP + ".dll";
|
||||||
|
// serverEP = svcParts[0];
|
||||||
|
serverEP = serverEP.Substring(0, serverEP.Length - 4);
|
||||||
|
Assembly assembly = Assembly.Load(serverEP);
|
||||||
|
if (!_assemblies.Contains(serverEP))
|
||||||
|
{
|
||||||
|
_assemblies.Add(serverEP, assembly.FullName);
|
||||||
|
foreach (Type svcType in assembly.GetTypes())
|
||||||
|
{
|
||||||
|
//if (svcType.IsMarshalByRef && svcType.IsSubclassOf(typeof(ServiceTemplate)))
|
||||||
|
if (svcType.IsSubclassOf(typeof(ServiceTemplate)))
|
||||||
|
{
|
||||||
|
string key = assembly.FullName + "." + svcType.Name;
|
||||||
|
if (!_cachedTypes.ContainsKey(key))
|
||||||
|
_cachedTypes.Add(key, svcType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string asmFullName = _assemblies[nsOfService].ToString();
|
||||||
|
Type implType = (Type)_cachedTypes[asmFullName + "." + serviceName];
|
||||||
|
service = implType.InvokeMember("", BindingFlags.CreateInstance, null, null, null);
|
||||||
|
implType.InvokeMember("SetEndPoint",
|
||||||
|
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic, null, service,
|
||||||
|
new object[] { EndPoint });
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("Error Creating Service for type: {0}", type.Name), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (service == null)
|
||||||
|
throw new Exception(string.Format("Error Creating Service for type: {0}", type.Name));
|
||||||
|
|
||||||
|
return (T)service;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
107
Ease.Core/Model/ServiceTemplate.cs
Normal file
107
Ease.Core/Model/ServiceTemplate.cs
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 18/04/2009 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Data.SqlClient;
|
||||||
|
using Ease.Core.Model;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Ease.Core;
|
||||||
|
using Ease.Core.DataAccess;
|
||||||
|
|
||||||
|
namespace Ease.Core.Model
|
||||||
|
{
|
||||||
|
#region Framework: Service base
|
||||||
|
|
||||||
|
public abstract class ServiceTemplate
|
||||||
|
{
|
||||||
|
private string _svcName;
|
||||||
|
private string _endPoint;
|
||||||
|
|
||||||
|
public ServiceTemplate(string svcName)
|
||||||
|
{
|
||||||
|
_svcName = svcName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceTemplate()
|
||||||
|
{
|
||||||
|
_svcName = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool IsAlive
|
||||||
|
{
|
||||||
|
get { return true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ServiceName
|
||||||
|
{
|
||||||
|
get { return _svcName; }
|
||||||
|
set { _svcName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetEndPoint(string value)
|
||||||
|
{
|
||||||
|
_endPoint = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string EndPoint
|
||||||
|
{
|
||||||
|
get { return _endPoint; }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetObjectID(ObjectTemplate ot, int id)
|
||||||
|
{
|
||||||
|
ot.SetID(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetObjectID(ObjectTemplate ot, long id)
|
||||||
|
{
|
||||||
|
ot.SetID((int)id);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetObjectState(ObjectTemplate ot, ObjectState state)
|
||||||
|
{
|
||||||
|
ot.SetState(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetObjectReadOnlyProperties(ObjectTemplate ot, params object[] propertyValues)
|
||||||
|
{
|
||||||
|
ot.SetReadOnlyProperties(propertyValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract T CreateObject<T>(DataReader dr)
|
||||||
|
where T : ObjectTemplate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return collection of objects of type T.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of object.</typeparam>
|
||||||
|
/// <param name="dr">A valid datareader.</param>
|
||||||
|
/// <returns>Return List of type T.</returns>
|
||||||
|
protected List<T> CreateObjects<T>(DataReader dr)
|
||||||
|
where T : ObjectTemplate
|
||||||
|
{
|
||||||
|
List<T> list = new List<T>();
|
||||||
|
|
||||||
|
while (dr.Read())
|
||||||
|
{
|
||||||
|
T ot = this.CreateObject<T>(dr);
|
||||||
|
|
||||||
|
ot.SetState(ObjectState.Saved);
|
||||||
|
list.Add(ot);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
69
Ease.Core/Model/Services.cs
Normal file
69
Ease.Core/Model/Services.cs
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 18/04/2009 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.Model
|
||||||
|
{
|
||||||
|
#region Services
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///This class returns the appropriate service factory according to configuration
|
||||||
|
/// </summary>
|
||||||
|
public class Services
|
||||||
|
{
|
||||||
|
private static ServiceFactory _factory;
|
||||||
|
private const string defaultKey = "serviceHandler";
|
||||||
|
private static Dictionary<string, ServiceFactory> _keyBaseServices;
|
||||||
|
|
||||||
|
static Services()
|
||||||
|
{
|
||||||
|
_keyBaseServices = new Dictionary<string, ServiceFactory>();
|
||||||
|
_factory = new ServiceFactory(defaultKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return default service facory
|
||||||
|
/// </summary>
|
||||||
|
public static ServiceFactory Factory
|
||||||
|
{
|
||||||
|
get { return _factory; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Crete an instance of services.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serviceHandlerKey">Key is used handle services</param>
|
||||||
|
public Services(string serviceHandlerKey)
|
||||||
|
{
|
||||||
|
if (_keyBaseServices.ContainsKey(serviceHandlerKey))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ServiceFactory svc = new ServiceFactory(serviceHandlerKey);
|
||||||
|
_keyBaseServices.Add(serviceHandlerKey, svc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return Service factory according to parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="svcKey">Valid key of existing services</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ServiceFactory KeyBaseFactory(string svcKey)
|
||||||
|
{
|
||||||
|
if (_keyBaseServices != null && _keyBaseServices.ContainsKey(svcKey))
|
||||||
|
return _keyBaseServices[svcKey];
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
40
Ease.Core/Utility/ClientConfuration.cs
Normal file
40
Ease.Core/Utility/ClientConfuration.cs
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
//public sealed class ClientConfuration
|
||||||
|
//{
|
||||||
|
// private static readonly Dictionary<string, string> _clientConfig = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
// static ClientConfuration()
|
||||||
|
// {
|
||||||
|
// XmlReaderSettings settings = new XmlReaderSettings();
|
||||||
|
// XmlReader reader = XmlReader.Create("ClientConfig.xml", settings);
|
||||||
|
// while (reader.Read())
|
||||||
|
// {
|
||||||
|
// if (reader.NodeType == XmlNodeType.Element && reader.Name.Equals("setting", StringComparison.CurrentCultureIgnoreCase))
|
||||||
|
// {
|
||||||
|
// string key = reader.GetAttribute("key");
|
||||||
|
// string value = reader.GetAttribute("value");
|
||||||
|
// _clientConfig.Add(key, value);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static string GetValue(string key)
|
||||||
|
// {
|
||||||
|
// string value;
|
||||||
|
// if (!_clientConfig.TryGetValue(key, out value))
|
||||||
|
// value = string.Empty;
|
||||||
|
|
||||||
|
// return value;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
125
Ease.Core/Utility/ClientStorage.cs
Normal file
125
Ease.Core/Utility/ClientStorage.cs
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.IO.IsolatedStorage;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
//public sealed class ClientStorage
|
||||||
|
//{
|
||||||
|
// private static readonly object SyncRoot = new object();
|
||||||
|
|
||||||
|
// private static IsolatedStorageFile _store = IsolatedStorageFile.GetUserStoreForAssembly();
|
||||||
|
|
||||||
|
// public static object GetData(string path)
|
||||||
|
// {
|
||||||
|
// Stream stream = null;
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// stream = new IsolatedStorageFileStream(path, FileMode.Open, _store);
|
||||||
|
// if (stream == null)
|
||||||
|
// return null;
|
||||||
|
|
||||||
|
// IFormatter formatter = new BinaryFormatter();
|
||||||
|
// return formatter.Deserialize(stream);
|
||||||
|
// }
|
||||||
|
// catch(Exception)
|
||||||
|
// {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// finally
|
||||||
|
// {
|
||||||
|
// if (stream != null)
|
||||||
|
// stream.Close();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static void SetData(string path, object value)
|
||||||
|
// {
|
||||||
|
// lock (SyncRoot)
|
||||||
|
// {
|
||||||
|
// if (value == null)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// if (_store.GetFileNames(path).Length > 0)
|
||||||
|
// {
|
||||||
|
// _store.DeleteFile(path);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// catch (DirectoryNotFoundException)
|
||||||
|
// {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Stream stream = null;
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// string[] dirs = path.Split('/');
|
||||||
|
// if (dirs.Length > 1)
|
||||||
|
// {
|
||||||
|
// string dir = string.Join("/", dirs, 0, dirs.Length - 1);
|
||||||
|
// _store.CreateDirectory(dir);
|
||||||
|
// }
|
||||||
|
// stream = new IsolatedStorageFileStream(path, FileMode.OpenOrCreate, _store);
|
||||||
|
// if (stream != null)
|
||||||
|
// {
|
||||||
|
// IFormatter formatter = new BinaryFormatter();
|
||||||
|
// formatter.Serialize(stream, value);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// catch (Exception) {}
|
||||||
|
// finally
|
||||||
|
// {
|
||||||
|
// if (stream != null)
|
||||||
|
// stream.Close();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static bool Contains(string path)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// return _store.GetFileNames(path).Length > 0;
|
||||||
|
// }
|
||||||
|
// catch (DirectoryNotFoundException)
|
||||||
|
// {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static void Remove(string path)
|
||||||
|
// {
|
||||||
|
// lock (SyncRoot)
|
||||||
|
// {
|
||||||
|
// if (path.EndsWith("/"))
|
||||||
|
// {
|
||||||
|
// foreach (string subDir in _store.GetDirectoryNames(path))
|
||||||
|
// {
|
||||||
|
// Remove(subDir);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// foreach (string file in _store.GetFileNames(path))
|
||||||
|
// {
|
||||||
|
// _store.DeleteFile(Path.Combine(Path.GetDirectoryName(path), file));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// catch (DirectoryNotFoundException) { }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public static void ClearStorage()
|
||||||
|
// {
|
||||||
|
// _store.Remove();
|
||||||
|
// _store = IsolatedStorageFile.GetUserStoreForDomain();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
99
Ease.Core/Utility/ConfigUtility.cs
Normal file
99
Ease.Core/Utility/ConfigUtility.cs
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
#region Framework: Configuration related class
|
||||||
|
/// <summary>
|
||||||
|
/// Summary description for ConfigUtility.
|
||||||
|
/// </summary>
|
||||||
|
//public sealed class ConfigUtility
|
||||||
|
//{
|
||||||
|
// /// <summary>
|
||||||
|
// /// If section does not exist the return instance of NameValueCollection
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="sectionName">A valid name of section</param>
|
||||||
|
// /// <returns>Return the NameValueCollection object</returns>
|
||||||
|
// public static NameValueCollection GetConfigSettings(string sectionName)
|
||||||
|
// {
|
||||||
|
// object configSection = null; //#### ConfigurationManager.GetSection(sectionName);
|
||||||
|
|
||||||
|
// if (configSection == null|| !(configSection is NameValueCollection))
|
||||||
|
// return new NameValueCollection();
|
||||||
|
|
||||||
|
// return (NameValueCollection)configSection;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// If section does not exist return new instance of object rather than null
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="sectionName">A valid section in the config file</param>
|
||||||
|
// /// <returns>Return a instatnce of system.object</returns>
|
||||||
|
// public static object GetConfig(string sectionName)
|
||||||
|
// {
|
||||||
|
// object configSection = null; //#### ConfigurationManager.GetSection(sectionName);
|
||||||
|
|
||||||
|
// if (configSection == null|| !(configSection is NameValueCollection))
|
||||||
|
// return new object();
|
||||||
|
|
||||||
|
// return configSection;
|
||||||
|
// }
|
||||||
|
// /// <summary>
|
||||||
|
// /// If key does not exist in appSettings section return empty string othewise actual value
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="keyName">A valid key from the appSettings section</param>
|
||||||
|
// /// <returns>Return string if key exist in the appSettings section else empty string </returns>
|
||||||
|
// public static string GetAppSettings(string keyName)
|
||||||
|
// {
|
||||||
|
// string configValue = null; //#### ConfigurationManager.AppSettings[keyName];
|
||||||
|
|
||||||
|
// if (string.IsNullOrEmpty(configValue))
|
||||||
|
// return string.Empty;
|
||||||
|
|
||||||
|
// return configValue;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// Returns the a string according to specified parameter
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="sectionName">A valid name of section</param>
|
||||||
|
// /// <param name="key">A valid name of key of given section</param>
|
||||||
|
// /// <returns>Returns string if the key exist in the key else empty string</returns>
|
||||||
|
// public static string GetConfigSetting(string sectionName, string key)
|
||||||
|
// {
|
||||||
|
// NameValueCollection configSection = ConfigUtility.GetConfigSettings(sectionName);
|
||||||
|
|
||||||
|
// if (configSection == null || configSection.Count == 0 || configSection[key].Trim().Length<=0)
|
||||||
|
// return string.Empty;
|
||||||
|
|
||||||
|
// return configSection[key];
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// Set app settings
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="key">Valid key</param>
|
||||||
|
// /// <param name="value">value</param>
|
||||||
|
// public static void SetAppSettings(string key, string value)
|
||||||
|
// {
|
||||||
|
// //#### ConfigurationManager.AppSettings.Set(key, value);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// Hide the constructor
|
||||||
|
// /// </summary>
|
||||||
|
// private ConfigUtility(){}
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
}
|
104
Ease.Core/Utility/ConfigurationElement.cs
Normal file
104
Ease.Core/Utility/ConfigurationElement.cs
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
//public abstract class ConfigElementTemplate<ElementT>
|
||||||
|
// where ElementT : ConfigElementTemplate<ElementT>, new()
|
||||||
|
//{
|
||||||
|
// protected XmlNamespaceManager _nm;
|
||||||
|
// protected static ElementT GetConfig(string section)
|
||||||
|
// {
|
||||||
|
// return new ElementT(); //#### (ElementT)ConfigurationManager.GetSection(section);
|
||||||
|
// }
|
||||||
|
// //object IConfigurationSectionHandler.Create(object parent, object configContext, XmlNode section)
|
||||||
|
// //{
|
||||||
|
// // try
|
||||||
|
// // {
|
||||||
|
// // _nm = new XmlNamespaceManager(section.OwnerDocument.NameTable);
|
||||||
|
// // _nm.AddNamespace("_cfg_", section.NamespaceURI);
|
||||||
|
|
||||||
|
// // Parse(section as XmlElement);
|
||||||
|
// // return this;
|
||||||
|
// // }
|
||||||
|
// // catch (ConfigurationErrorsException)
|
||||||
|
// // {
|
||||||
|
// // throw;
|
||||||
|
// // }
|
||||||
|
// // catch (Exception e)
|
||||||
|
// // {
|
||||||
|
// // throw new ConfigurationErrorsException(e.Message, e, section);
|
||||||
|
// // }
|
||||||
|
// //}
|
||||||
|
|
||||||
|
// protected void CheckRequiredAttributes(XmlElement node, params string[] attributes)
|
||||||
|
// {
|
||||||
|
// foreach (string attribute in attributes)
|
||||||
|
// {
|
||||||
|
// //####
|
||||||
|
// //if (!node.HasAttribute(attribute))
|
||||||
|
// // throw new ConfigurationErrorsException("Required Attribute: " + attribute + " is missing", node);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //protected void RaiseError(XmlElement node, string message, params object[] args)
|
||||||
|
// //{
|
||||||
|
// // throw new ConfigurationErrorsException(string.Format(message, args), node);
|
||||||
|
// //}
|
||||||
|
|
||||||
|
// protected List<ChildT> ReadChildren<ChildT>(XmlElement node, string name)
|
||||||
|
// where ChildT : ConfigChildElementTemplate<ChildT, ElementT>, new()
|
||||||
|
// {
|
||||||
|
// List<ChildT> list = new List<ChildT>();
|
||||||
|
// AddChildren<ChildT>(node, name, list);
|
||||||
|
// return list;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// protected void AddChildren<ChildT>(XmlElement node, string name, IList<ChildT> list)
|
||||||
|
// where ChildT : ConfigChildElementTemplate<ChildT, ElementT>, new()
|
||||||
|
// {
|
||||||
|
// foreach (XmlElement childNode in node.SelectNodes("_cfg_:" + name, _nm))
|
||||||
|
// {
|
||||||
|
// ChildT child = new ChildT();
|
||||||
|
// child._nm = _nm;
|
||||||
|
// child.Parent = (ElementT)this;
|
||||||
|
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// child.Parse(childNode);
|
||||||
|
// }
|
||||||
|
// //####
|
||||||
|
// //catch (ConfigurationException)
|
||||||
|
// //{
|
||||||
|
// // throw;
|
||||||
|
// //}
|
||||||
|
// catch (Exception e)
|
||||||
|
// {
|
||||||
|
// //####
|
||||||
|
// //throw new ConfigurationErrorsException(e.Message, e, childNode);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// list.Add(child);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// protected abstract void Parse(XmlElement node);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public abstract class ConfigChildElementTemplate<ElementT, ParentT> : ConfigElementTemplate<ElementT>
|
||||||
|
// where ElementT : ConfigChildElementTemplate<ElementT, ParentT>, new()
|
||||||
|
// where ParentT : ConfigElementTemplate<ParentT>, new()
|
||||||
|
//{
|
||||||
|
// protected ParentT _parent;
|
||||||
|
// public ParentT Parent
|
||||||
|
// {
|
||||||
|
// get { return _parent; }
|
||||||
|
// internal set { _parent = value; }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
367
Ease.Core/Utility/Encryption.cs
Normal file
367
Ease.Core/Utility/Encryption.cs
Normal file
|
@ -0,0 +1,367 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
internal class Encryption
|
||||||
|
{
|
||||||
|
#region Declaration & Constructor
|
||||||
|
|
||||||
|
internal const string DefaultPublicKey = "CoMEaLtD";
|
||||||
|
internal const string DefaultPrivateKey = "CeL.DhK.LaL1@3$5";
|
||||||
|
|
||||||
|
internal Encryption()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Helper functions
|
||||||
|
|
||||||
|
protected string ByteToHex(byte[] value)
|
||||||
|
{
|
||||||
|
string s = string.Empty;
|
||||||
|
for (int i = 0; i < value.Length; i++)
|
||||||
|
s += ByteToHex(value[i]);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string ByteToHex(byte value)
|
||||||
|
{
|
||||||
|
return Convert.ToString(value, 16).PadLeft(2, '0').ToUpper();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string IntToHex(int intData)
|
||||||
|
{
|
||||||
|
return Convert.ToString(intData, 16).PadLeft(2, '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected byte[] HexToBytes(string value)
|
||||||
|
{
|
||||||
|
byte[] bytes = new byte[value.Length / 2];
|
||||||
|
for (int i = 0; i < value.Length; i += 2)
|
||||||
|
bytes[i / 2] = HexToByte(value.Substring(i, 2));
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected byte HexToByte(string value)
|
||||||
|
{
|
||||||
|
return Convert.ToByte(value, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int HexToInt(string hexData)
|
||||||
|
{
|
||||||
|
return Convert.ToInt32(hexData, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Encrypt & Decrypt
|
||||||
|
|
||||||
|
internal string Encrypt(string key, string data)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
char[] dataChrs, keyChrs;
|
||||||
|
string encryptedData = string.Empty;
|
||||||
|
|
||||||
|
//Save Length of Pass
|
||||||
|
data = (char)(data.Length) + data;
|
||||||
|
|
||||||
|
//Pad Password with space upto 10 Characters
|
||||||
|
if (data.Length < 10)
|
||||||
|
data = data.PadRight(10);
|
||||||
|
|
||||||
|
dataChrs = data.ToCharArray();
|
||||||
|
|
||||||
|
//Make the key big enough
|
||||||
|
while (key.Length < data.Length)
|
||||||
|
{
|
||||||
|
key += key;
|
||||||
|
}
|
||||||
|
|
||||||
|
key = key.Substring(0, data.Length);
|
||||||
|
keyChrs = key.ToCharArray();
|
||||||
|
|
||||||
|
//Encrypting Data
|
||||||
|
for (int i = 0; i < data.Length; i++)
|
||||||
|
{
|
||||||
|
char textChr = dataChrs[i];
|
||||||
|
char keyChr = keyChrs[i];
|
||||||
|
|
||||||
|
encryptedData += IntToHex((int)(textChr) ^ (int)(keyChr));
|
||||||
|
}
|
||||||
|
|
||||||
|
return encryptedData.ToUpper();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string Decrypt(string key, string data)
|
||||||
|
{
|
||||||
|
string decryptedData = string.Empty;
|
||||||
|
|
||||||
|
//Taking Lenght, half of Encrypting data
|
||||||
|
int len = data.Length / 2;
|
||||||
|
|
||||||
|
//Making key is big Enough
|
||||||
|
while (key.Length < len)
|
||||||
|
{
|
||||||
|
key += key;
|
||||||
|
}
|
||||||
|
|
||||||
|
key = key.Substring(0, len);
|
||||||
|
|
||||||
|
char[] keyChrs = key.ToCharArray();
|
||||||
|
char[] textChrs = data.ToCharArray();
|
||||||
|
|
||||||
|
//Decripting data
|
||||||
|
for (int i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
string textByte = string.Empty;
|
||||||
|
for (int j = i * 2; j < (i * 2 + 2); j++)
|
||||||
|
{
|
||||||
|
textByte += string.Format("{0}", textChrs.GetValue(j));
|
||||||
|
}
|
||||||
|
|
||||||
|
char textChr = (char)HexToInt(textByte);
|
||||||
|
char keyChr = keyChrs[i];
|
||||||
|
|
||||||
|
decryptedData += (char)((int)(keyChr) ^ (int)(textChr));
|
||||||
|
}
|
||||||
|
|
||||||
|
len = (int)decryptedData.ToCharArray()[0];
|
||||||
|
decryptedData = decryptedData.Substring(1, len);
|
||||||
|
|
||||||
|
return decryptedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class TDSEncryption : Encryption
|
||||||
|
{
|
||||||
|
#region Declaration & Constructor
|
||||||
|
|
||||||
|
private TripleDESCryptoServiceProvider _tdesCSP;
|
||||||
|
|
||||||
|
internal TDSEncryption()
|
||||||
|
{
|
||||||
|
_tdesCSP = new TripleDESCryptoServiceProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Helper function
|
||||||
|
|
||||||
|
void initialize(string privateKey, string publicKey)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
#region Make the key 128 bit
|
||||||
|
|
||||||
|
if (privateKey.Length < 16)
|
||||||
|
privateKey = privateKey.PadLeft(16);
|
||||||
|
|
||||||
|
if (privateKey.Length > 16)
|
||||||
|
privateKey = privateKey.Substring(0, 16);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Make IV 64 bit
|
||||||
|
|
||||||
|
if (publicKey.Length < 8)
|
||||||
|
publicKey = publicKey.PadLeft(8);
|
||||||
|
|
||||||
|
if (publicKey.Length > 8)
|
||||||
|
publicKey = publicKey.Substring(0, 8);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
_tdesCSP.Key = ASCIIEncoding.ASCII.GetBytes(privateKey);
|
||||||
|
_tdesCSP.IV = ASCIIEncoding.ASCII.GetBytes(publicKey);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invaid Key");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void destroy()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_tdesCSP != null)
|
||||||
|
_tdesCSP.Clear();
|
||||||
|
_tdesCSP = null;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Encrypt & Decrypt
|
||||||
|
|
||||||
|
internal string Encrypt(string privateKey, string publicKey, string data)
|
||||||
|
{
|
||||||
|
string value = string.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.initialize(privateKey, publicKey);
|
||||||
|
byte[] buffer = ASCIIEncoding.ASCII.GetBytes(data);
|
||||||
|
value = this.ByteToHex(_tdesCSP.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length));
|
||||||
|
this.destroy();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invalid Message");
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string Decrypt(string privateKey, string publicKey, string data)
|
||||||
|
{
|
||||||
|
string value = string.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.initialize(privateKey, publicKey);
|
||||||
|
byte[] buffer = this.HexToBytes(data);
|
||||||
|
value = ASCIIEncoding.ASCII.GetString(_tdesCSP.CreateDecryptor()
|
||||||
|
.TransformFinalBlock(buffer, 0, buffer.Length));
|
||||||
|
this.destroy();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invalid Message");
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class AESEncryption : Encryption
|
||||||
|
{
|
||||||
|
#region Declaration & Constructor
|
||||||
|
|
||||||
|
private AesCryptoServiceProvider _aesCSP;
|
||||||
|
|
||||||
|
internal AESEncryption()
|
||||||
|
{
|
||||||
|
_aesCSP = new AesCryptoServiceProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Helper functions
|
||||||
|
|
||||||
|
void initialize(string privateKey, string publicKey)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
#region Make the key 256 bit
|
||||||
|
|
||||||
|
if (privateKey.Length < 32)
|
||||||
|
privateKey = privateKey.PadLeft(32);
|
||||||
|
|
||||||
|
if (privateKey.Length > 32)
|
||||||
|
privateKey = privateKey.Substring(0, 32);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Make IV 128 bit
|
||||||
|
|
||||||
|
if (publicKey.Length < 16)
|
||||||
|
publicKey = publicKey.PadLeft(16);
|
||||||
|
|
||||||
|
if (publicKey.Length > 16)
|
||||||
|
publicKey = publicKey.Substring(0, 16);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
_aesCSP.Key = ASCIIEncoding.ASCII.GetBytes(privateKey);
|
||||||
|
_aesCSP.IV = ASCIIEncoding.ASCII.GetBytes(publicKey);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invaid Key");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void destroy()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_aesCSP != null)
|
||||||
|
_aesCSP.Clear();
|
||||||
|
_aesCSP = null;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Encrypt & Decrypt
|
||||||
|
|
||||||
|
public string Encrypt(string privatekey, string publickey, string data)
|
||||||
|
{
|
||||||
|
string value = string.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.initialize(privatekey, publickey);
|
||||||
|
byte[] buffer = ASCIIEncoding.ASCII.GetBytes(data);
|
||||||
|
value = this.ByteToHex(_aesCSP.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length));
|
||||||
|
this.destroy();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invalid Message");
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Decrypt(string privatekey, string publickey, string data)
|
||||||
|
{
|
||||||
|
string value = string.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.initialize(privatekey, publickey);
|
||||||
|
byte[] buffer = this.HexToBytes(data);
|
||||||
|
value = ASCIIEncoding.ASCII.GetString(_aesCSP.CreateDecryptor()
|
||||||
|
.TransformFinalBlock(buffer, 0, buffer.Length));
|
||||||
|
this.destroy();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception("Invalid Message");
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
225
Ease.Core/Utility/ExceptionLog.cs
Normal file
225
Ease.Core/Utility/ExceptionLog.cs
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using Ease.Core.Utility;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
#region Utility: Exception Log
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This object is used to log error raised in service.
|
||||||
|
/// This class cannot be inherited.
|
||||||
|
/// This class cannot be instantiated.
|
||||||
|
/// All functions are static.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class ExceptionLog
|
||||||
|
{
|
||||||
|
private static string _mode;
|
||||||
|
private static int _maxSize;
|
||||||
|
private static int _maxFiles;
|
||||||
|
private static string _source;
|
||||||
|
private static object _syncObject = new object();
|
||||||
|
|
||||||
|
static ExceptionLog()
|
||||||
|
{
|
||||||
|
AppConfigParser config = new AppConfigParser();
|
||||||
|
|
||||||
|
string configvalue = ""; //#### ConfigUtility.GetAppSettings("exceptionHandler");
|
||||||
|
if (!string.IsNullOrEmpty(configvalue))
|
||||||
|
config.Parse(configvalue);
|
||||||
|
|
||||||
|
//Mod of error
|
||||||
|
_mode = "File";
|
||||||
|
//if (config.Contains("mode"))
|
||||||
|
// _mode = config["mode"];
|
||||||
|
|
||||||
|
//Source property
|
||||||
|
_source = "Log";
|
||||||
|
//if (config.Contains("source"))
|
||||||
|
// _source = config["source"];
|
||||||
|
|
||||||
|
//No max of file in this folder
|
||||||
|
_maxFiles = 10;
|
||||||
|
//if (config.Contains("maxFiles"))
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// _maxFiles = int.Parse(config["maxFiles"]); //1 KB
|
||||||
|
// }
|
||||||
|
// catch { }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//File size
|
||||||
|
_maxSize = 5000 * 1024; //5 MB
|
||||||
|
//if (config.Contains("maxFileSize"))
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// _maxSize = int.Parse(config["maxFileSize"]) * 1024; //1 KB
|
||||||
|
// }
|
||||||
|
// catch { }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WriteToEventLog(string log)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//####
|
||||||
|
EventLog.WriteEntry(_source, log, EventLogEntryType.Error);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
WriteToFile(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WriteToFile(string log)
|
||||||
|
{
|
||||||
|
string path = Path.Combine(Environment.CurrentDirectory, _source);
|
||||||
|
string logFileSpec = Path.Combine(path, "Error.log");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
lock (_syncObject)
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(path))
|
||||||
|
Directory.CreateDirectory(path);
|
||||||
|
|
||||||
|
StreamWriter writer;
|
||||||
|
if (!File.Exists(logFileSpec))
|
||||||
|
{
|
||||||
|
writer = File.CreateText(logFileSpec);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FileInfo fi = new FileInfo(Path.Combine(path, logFileSpec));
|
||||||
|
if (fi.Length > _maxSize)
|
||||||
|
{
|
||||||
|
// Check no of files
|
||||||
|
ArrayList fileList = new ArrayList(Directory.GetFiles(path, "~*.log"));
|
||||||
|
if (fileList.Count >= _maxFiles - 1)
|
||||||
|
{
|
||||||
|
fileList.Sort();
|
||||||
|
for (int i = 0; i <= fileList.Count - _maxFiles + 1; i++)
|
||||||
|
File.Delete((string)fileList[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fi.MoveTo(Path.Combine(path, "~" + DateTime.Now.Ticks.ToString() + ".log"));
|
||||||
|
writer = File.CreateText(logFileSpec);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writer = File.AppendText(logFileSpec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteLine(log);
|
||||||
|
writer.Flush();
|
||||||
|
|
||||||
|
writer.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Log application into file/eventviewer according to configuration of application file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e">Valid instance of an exception object.</param>
|
||||||
|
public static void Write(Exception e)
|
||||||
|
{
|
||||||
|
string log = new string('*', 80) + Environment.NewLine;
|
||||||
|
log += string.Format(" TimeStamp: {0} {1}{2}", DateTime.Today.ToShortDateString(),
|
||||||
|
DateTime.Now.ToLongTimeString(), Environment.NewLine);
|
||||||
|
log += new string('*', 80) + Environment.NewLine;
|
||||||
|
|
||||||
|
while (e != null)
|
||||||
|
{
|
||||||
|
log += Environment.NewLine;
|
||||||
|
log += string.Format("Exception..: {0}{1}", e.GetType().Name, Environment.NewLine);
|
||||||
|
log += string.Format("Source.....: {0}{1}", e.Source, Environment.NewLine);
|
||||||
|
log += string.Format("Message....: {0}{1}", e.Message, Environment.NewLine);
|
||||||
|
log += string.Format("Stack Trace: {0}", e.StackTrace.Trim());
|
||||||
|
e = e.InnerException;
|
||||||
|
log += Environment.NewLine + new string('-', 80) + Environment.NewLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_mode == "EventLog")
|
||||||
|
{
|
||||||
|
WriteToEventLog(log);
|
||||||
|
}
|
||||||
|
else if (_mode == "File")
|
||||||
|
{
|
||||||
|
WriteToFile(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Log application into file/eventviewer according to configuration of application file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e">Valid instance of an ServiceException object.</param>
|
||||||
|
/// ####
|
||||||
|
//public static void Write(ServiceException e)
|
||||||
|
//{
|
||||||
|
// Write(e as Exception);
|
||||||
|
//}
|
||||||
|
private ExceptionLog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class AppConfigParser
|
||||||
|
{
|
||||||
|
private Dictionary<string, string> _attributes;
|
||||||
|
|
||||||
|
public void Parse(string configValue)
|
||||||
|
{
|
||||||
|
_attributes = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
string[] segments = configValue.Trim().Split(';');
|
||||||
|
foreach (string segment in segments)
|
||||||
|
{
|
||||||
|
string[] keyValue = segment.Trim().Split('=');
|
||||||
|
if (keyValue.Length != 2)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string key = keyValue[0].Trim();
|
||||||
|
string value = keyValue[1].Trim();
|
||||||
|
|
||||||
|
_attributes.Add(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(string key)
|
||||||
|
{
|
||||||
|
return _attributes.ContainsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string this[string key]
|
||||||
|
{
|
||||||
|
get { return _attributes[key]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public AppConfigParser()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
1590
Ease.Core/Utility/Global.cs
Normal file
1590
Ease.Core/Utility/Global.cs
Normal file
File diff suppressed because it is too large
Load Diff
22
Ease.Core/Utility/IAsyncStatusHandle.cs
Normal file
22
Ease.Core/Utility/IAsyncStatusHandle.cs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
public interface IAsyncStatusHandle
|
||||||
|
{
|
||||||
|
void UpdateStatus(string msg, params object[] args);
|
||||||
|
bool CancelRequested();
|
||||||
|
}
|
||||||
|
}
|
179
Ease.Core/Utility/LateBoundObject.cs
Normal file
179
Ease.Core/Utility/LateBoundObject.cs
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
//public sealed class LateBoundObject : IDisposable
|
||||||
|
//{
|
||||||
|
// private Type _t;
|
||||||
|
// private object _o;
|
||||||
|
// private Context _ctx;
|
||||||
|
|
||||||
|
// #region Context
|
||||||
|
|
||||||
|
// private class Context
|
||||||
|
// {
|
||||||
|
// private List<LateBoundObject> _objects = new List<LateBoundObject>();
|
||||||
|
// public void AddObject(LateBoundObject o)
|
||||||
|
// {
|
||||||
|
// _objects.Add(o);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public void Release()
|
||||||
|
// {
|
||||||
|
// foreach (LateBoundObject lbo in _objects)
|
||||||
|
// {
|
||||||
|
// if (lbo != null && lbo._o != null && Marshal.IsComObject(lbo._o))
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// Marshal.ReleaseComObject(lbo._o);
|
||||||
|
// }
|
||||||
|
// catch { }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
// public static bool IsValidProgID(string progID)
|
||||||
|
// {
|
||||||
|
// Type t = Type.GetTypeFromProgID(progID);
|
||||||
|
// return t != null;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// private LateBoundObject(Context ctx, object o)
|
||||||
|
// {
|
||||||
|
// _ctx = ctx;
|
||||||
|
// _ctx.AddObject(this);
|
||||||
|
|
||||||
|
// _o = o;
|
||||||
|
// if (_o != null)
|
||||||
|
// _t = _o.GetType();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public LateBoundObject(string progID)
|
||||||
|
// {
|
||||||
|
// _ctx = new Context();
|
||||||
|
// _ctx.AddObject(this);
|
||||||
|
|
||||||
|
// _t = Type.GetTypeFromProgID(progID);
|
||||||
|
// if (_t == null)
|
||||||
|
// throw new ArgumentException("Invalid ProgID " + progID, "progID");
|
||||||
|
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// _o = _t.InvokeMember("", BindingFlags.CreateInstance, null, null, null);
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public object Value
|
||||||
|
// {
|
||||||
|
// get { return _o; }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public LateBoundObject GetProperty(string name)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.GetProperty, null, _o, null));
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public LateBoundObject GetProperty(string name, params object[] args)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.GetProperty, null, _o, args));
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public void SetProperty(string name, object val)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// _t.InvokeMember(name, BindingFlags.SetProperty, null, _o, new object[] { val });
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public void SetProperty(string name, object val, params object[] args)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// object[] args1 = new object[args.Length + 1];
|
||||||
|
// args.CopyTo(args1, 0);
|
||||||
|
// args1[args1.Length - 1] = val;
|
||||||
|
// _t.InvokeMember(name, BindingFlags.SetProperty, null, _o, args1);
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public LateBoundObject ExecuteMethod(string name, params object[] args)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.InvokeMethod, null, _o, args));
|
||||||
|
// }
|
||||||
|
// catch (TargetInvocationException e)
|
||||||
|
// {
|
||||||
|
// if (e.InnerException != null)
|
||||||
|
// throw e.InnerException;
|
||||||
|
// else
|
||||||
|
// throw;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public void Dispose()
|
||||||
|
// {
|
||||||
|
// _ctx.Release();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
478
Ease.Core/Utility/ObjectUtility.cs
Normal file
478
Ease.Core/Utility/ObjectUtility.cs
Normal file
|
@ -0,0 +1,478 @@
|
||||||
|
/*
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
| Copyright © Computer Ease Limited |
|
||||||
|
| Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh |
|
||||||
|
| Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com |
|
||||||
|
| Unauthorized copy or distribution is strictly prohibited |
|
||||||
|
| Author: S. M. Russel, Last modified date: 23/07/2012 |
|
||||||
|
|-------------------------------------------------------------------------------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
#region Framework: Object utility
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Summary description for ObjectUtility.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class ObjectUtility
|
||||||
|
{
|
||||||
|
#region Create Instance
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="className">A valid class name</param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string className)
|
||||||
|
{
|
||||||
|
return ObjectUtility.CreateInstance(className, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="className">A valid class name</param>
|
||||||
|
/// <param name="args">Argument with comma separated</param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string className, object[] args)
|
||||||
|
{
|
||||||
|
return ObjectUtility.CreateInstance(className, args, typeof(ObjectUtility));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="className">A valid class name</param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
/// <param name="type">Type of object to be created </param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string className, object[] args, System.Type type)
|
||||||
|
{
|
||||||
|
return ObjectUtility.CreateInstance(className, args, type, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// into the given assembly
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assembly">A valid assembly name and must be located withing the same folder</param>
|
||||||
|
/// <param name="className">A valid class name</param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string assembly, string className, object[] args)
|
||||||
|
{
|
||||||
|
return ObjectUtility.CreateInstance(assembly, className, args, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// into the given assembly
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="assembly">A valid assembly name and must be located withing the same folder</param>
|
||||||
|
/// <param name="className">A valid class name</param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
/// <param name="throwNullError"></param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string assembly, string className, object[] args, bool throwNullError)
|
||||||
|
{
|
||||||
|
Type type = null;
|
||||||
|
Assembly asm = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
asm = Assembly.Load(assembly);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new ArgumentException(
|
||||||
|
string.Format("Failed to load the assembly '{0}' due to following message:\n{1}", assembly,
|
||||||
|
ex.Message), "assembly", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
type = asm.GetType(className, true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new ArgumentException(
|
||||||
|
string.Format(CultureInfo.CurrentCulture, "Class {0} does not exists in assembly {1}", className,
|
||||||
|
asm.FullName), "className", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ObjectUtility.CreateInstance(className, args, type, throwNullError);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create instance reference of an object for the given class full name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="className"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <param name="throwNullError"></param>
|
||||||
|
/// <returns>Returns an instance of the class</returns>
|
||||||
|
public static object CreateInstance(string className, object[] args, System.Type type, bool throwNullError)
|
||||||
|
{
|
||||||
|
if (type == null)
|
||||||
|
type = typeof(ObjectUtility);
|
||||||
|
|
||||||
|
object obj = null;
|
||||||
|
|
||||||
|
if (args == null)
|
||||||
|
obj = type.Assembly.CreateInstance(className);
|
||||||
|
else
|
||||||
|
obj = type.Assembly.CreateInstance(className, false,
|
||||||
|
BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance, null, args, null, null);
|
||||||
|
|
||||||
|
if (obj == null && throwNullError)
|
||||||
|
throw new ArgumentException(string.Format("Class {0} does not exists in assembly {1}", className,
|
||||||
|
type.Assembly.FullName));
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Get Custome Attribute
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Finds out the custom attribute in the value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Type">Tyep of attribute</param>
|
||||||
|
/// <param name="value">Instance of an object </param>
|
||||||
|
/// <returns>Returns the attribute if found otherwise null</returns>
|
||||||
|
public static object GetCustomAttribute(Type type, object value)
|
||||||
|
{
|
||||||
|
if (type == null || value == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
object[] attrs = null;
|
||||||
|
Type valueType = value.GetType();
|
||||||
|
|
||||||
|
if (valueType.IsEnum)
|
||||||
|
{
|
||||||
|
FieldInfo field = valueType.GetField(value.ToString());
|
||||||
|
|
||||||
|
if (field == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
attrs = field.GetCustomAttributes(type, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (value is PropertyInfo)
|
||||||
|
attrs = ((PropertyInfo)value).GetCustomAttributes(type, true);
|
||||||
|
else
|
||||||
|
attrs = valueType.GetCustomAttributes(type, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attrs != null && attrs.Length > 0)
|
||||||
|
return attrs[0];
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out the property from the given type, where property can
|
||||||
|
/// consists of key path.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <param name="property"></param>
|
||||||
|
/// <returns>Returns PropertyInfo object of the given property</returns>
|
||||||
|
public static object GetProperty(Type type, string property)
|
||||||
|
{
|
||||||
|
if (type == null || string.IsNullOrEmpty(property))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (property.IndexOf(".") == -1)
|
||||||
|
return type.GetProperty(property,
|
||||||
|
BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
||||||
|
|
||||||
|
PropertyInfo propertyInfo = null;
|
||||||
|
string[] propertyPath = property.Split('.');
|
||||||
|
|
||||||
|
foreach (string prop in propertyPath)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(prop))
|
||||||
|
{
|
||||||
|
propertyInfo = type.GetProperty(prop,
|
||||||
|
BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
||||||
|
|
||||||
|
if (propertyInfo == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
type = propertyInfo.PropertyType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return propertyInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Get Property Value
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out the property from the given type, where property can
|
||||||
|
/// consists of key path and returns the value of the property
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source"></param>
|
||||||
|
/// <param name="property"></param>
|
||||||
|
/// <returns>Returns value of the given property</returns>
|
||||||
|
public static object GetPropertyValue(object source, string property)
|
||||||
|
{
|
||||||
|
return ObjectUtility.GetPropertyValue(source, property, new object[] { });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out the property from the given type, where property can
|
||||||
|
/// consists of key path and returns the value of the property
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source"></param>
|
||||||
|
/// <param name="property"></param>
|
||||||
|
/// <param name="indexes"></param>
|
||||||
|
/// <returns>Returns value of the given property</returns>
|
||||||
|
public static object GetPropertyValue(object source, string property, object[] indexes)
|
||||||
|
{
|
||||||
|
if (source == null || string.IsNullOrEmpty(property))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (property.IndexOf(".") == -1)
|
||||||
|
return source.GetType().GetProperty(property).GetValue(source, indexes);
|
||||||
|
|
||||||
|
string[] propertyPath = property.Split('.');
|
||||||
|
|
||||||
|
foreach (string prop in propertyPath)
|
||||||
|
{
|
||||||
|
if (!(string.IsNullOrEmpty(prop)))
|
||||||
|
{
|
||||||
|
PropertyInfo propertyInfo = source.GetType().GetProperty(prop);
|
||||||
|
|
||||||
|
if (propertyInfo == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
source = propertyInfo.GetValue(source, indexes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Get Properties
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out all properties that have set functionality from the given type
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <returns>Returns list of PropertyInfo object of the given type</returns>
|
||||||
|
public static object[] GetProperties(Type type)
|
||||||
|
{
|
||||||
|
if (type == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return (object[])type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out all properties that have set functionality from the given type
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <param name="attributeType"></param>
|
||||||
|
/// <returns>Returns list of PropertyInfo object of the given type</returns>
|
||||||
|
public static object[] GetProperties(Type type, Type attributeType)
|
||||||
|
{
|
||||||
|
ArrayList list = new ArrayList();
|
||||||
|
|
||||||
|
if (attributeType != null)
|
||||||
|
{
|
||||||
|
PropertyInfo[] props = (PropertyInfo[])ObjectUtility.GetProperties(type);
|
||||||
|
|
||||||
|
foreach (PropertyInfo prop in props)
|
||||||
|
{
|
||||||
|
object[] attributes = prop.GetCustomAttributes(attributeType, true);
|
||||||
|
|
||||||
|
if (attributes != null && attributes.Length > 0)
|
||||||
|
list.Add(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (object[])list.ToArray(typeof(PropertyInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out all properties that have set functionality from the given type
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <param name="attributeType"></param>
|
||||||
|
/// <param name="includeChildProperties"></param>
|
||||||
|
/// <returns>Returns list of PropertyInfo object of the given type</returns>
|
||||||
|
public static object[] GetProperties(Type type, Type attributeType, bool includeChildProperties,
|
||||||
|
Type ignoreType)
|
||||||
|
{
|
||||||
|
ArrayList list = new ArrayList();
|
||||||
|
|
||||||
|
if (attributeType != null)
|
||||||
|
{
|
||||||
|
PropertyInfo[] props = (PropertyInfo[])ObjectUtility.GetProperties(type);
|
||||||
|
|
||||||
|
foreach (PropertyInfo prop in props)
|
||||||
|
{
|
||||||
|
object[] attributes = prop.GetCustomAttributes(attributeType, true);
|
||||||
|
|
||||||
|
if (attributes != null && attributes.Length > 0)
|
||||||
|
list.Add(prop);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (includeChildProperties && prop.PropertyType.BaseType != null
|
||||||
|
&& prop.PropertyType.BaseType.Equals(type.BaseType))
|
||||||
|
{
|
||||||
|
attributes = prop.GetCustomAttributes(ignoreType, true);
|
||||||
|
|
||||||
|
if (attributes != null && attributes.Length == 0)
|
||||||
|
list.AddRange(ObjectUtility.GetProperties(prop.PropertyType, attributeType,
|
||||||
|
includeChildProperties, ignoreType));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (object[])list.ToArray(typeof(PropertyInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Get Source Property Value
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find the property value from the given object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source"></param>
|
||||||
|
/// <param name="property"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static object GetSourcePropertyValue(object source, object property)
|
||||||
|
{
|
||||||
|
PropertyInfo prop = property as PropertyInfo;
|
||||||
|
|
||||||
|
if (prop == null)
|
||||||
|
return source;
|
||||||
|
|
||||||
|
object src = source;
|
||||||
|
|
||||||
|
if (source.GetType().Equals(prop.DeclaringType) == false)
|
||||||
|
{
|
||||||
|
src = null;
|
||||||
|
PropertyInfo[] props = (PropertyInfo[])ObjectUtility.GetProperties(source.GetType());
|
||||||
|
|
||||||
|
if (props != null && props.Length > 0)
|
||||||
|
{
|
||||||
|
foreach (PropertyInfo sourceProp in props)
|
||||||
|
{
|
||||||
|
if (sourceProp.PropertyType.Equals(prop.DeclaringType))
|
||||||
|
{
|
||||||
|
src = ObjectUtility.GetPropertyValue(source, sourceProp.Name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (sourceProp.PropertyType.BaseType != null &&
|
||||||
|
sourceProp.PropertyType.BaseType.Equals(prop.DeclaringType.BaseType))
|
||||||
|
{
|
||||||
|
object objVal = ObjectUtility.GetPropertyValue(src, sourceProp.Name);
|
||||||
|
|
||||||
|
if (objVal != null)
|
||||||
|
src = ObjectUtility.GetSourcePropertyValue(objVal, prop);
|
||||||
|
|
||||||
|
if (src != null)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Set Property
|
||||||
|
|
||||||
|
/// Find out the property from the given object, where property can
|
||||||
|
/// consists of key path and set the value for that property.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source"></param>
|
||||||
|
/// <param name="property"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
public static void SetProperty(object source, object property, object value, object[] index)
|
||||||
|
{
|
||||||
|
PropertyInfo pi = property as PropertyInfo;
|
||||||
|
if (pi == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
object src = ObjectUtility.GetSourcePropertyValue(source, pi);
|
||||||
|
|
||||||
|
if (src != null)
|
||||||
|
ObjectUtility.SetProperty(src, pi.Name, value, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Find out the property from the given object, where property can
|
||||||
|
/// consists of key path and set the value for that property.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source"></param>
|
||||||
|
/// <param name="propertyName"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
public static void SetProperty(object source, string propertyName, object value, object[] index)
|
||||||
|
{
|
||||||
|
PropertyInfo prop = (PropertyInfo)ObjectUtility.GetProperty(source.GetType(), propertyName);
|
||||||
|
|
||||||
|
if (prop == null)
|
||||||
|
throw new ArgumentNullException(string.Format(CultureInfo.CurrentCulture,
|
||||||
|
"Class {0} does not have a property named {1}", source.GetType().FullName, propertyName));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (prop.PropertyType.IsEnum)
|
||||||
|
prop.SetValue(source, Enum.Parse(prop.PropertyType, value.ToString(), true), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(bool)))
|
||||||
|
prop.SetValue(source, Convert.ToBoolean(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(DateTime)))
|
||||||
|
prop.SetValue(source, Convert.ToDateTime(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(double)))
|
||||||
|
prop.SetValue(source, Convert.ToDouble(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(decimal)))
|
||||||
|
prop.SetValue(source, Convert.ToDecimal(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int16)))
|
||||||
|
prop.SetValue(source, Convert.ToInt16(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int32)))
|
||||||
|
prop.SetValue(source, Convert.ToInt32(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(Int64)))
|
||||||
|
prop.SetValue(source, Convert.ToInt64(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else if (prop.PropertyType.Equals(typeof(byte)))
|
||||||
|
prop.SetValue(source, Convert.ToByte(value, CultureInfo.CurrentCulture), index);
|
||||||
|
else
|
||||||
|
prop.SetValue(source, value, index);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
|
||||||
|
"System failed to set value for property named {0} of class {1}", prop.Name,
|
||||||
|
source.GetType().FullName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
405
Ease.Core/Utility/ZipHelper.cs
Normal file
405
Ease.Core/Utility/ZipHelper.cs
Normal file
|
@ -0,0 +1,405 @@
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Data;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using Ease.Core.Model;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Ease.Core.Utility
|
||||||
|
{
|
||||||
|
public class ZipHelper
|
||||||
|
{
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
private ZipHelper()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Compress functions
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress string.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">Text to be compressed.</param>
|
||||||
|
/// <returns>Return compressed string. </returns>
|
||||||
|
public static string Compress(string text)
|
||||||
|
{
|
||||||
|
byte[] compressed;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
byte[] buffer = Encoding.UTF8.GetBytes(text);
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
|
||||||
|
{
|
||||||
|
zip.Write(buffer, 0, buffer.Length);
|
||||||
|
}
|
||||||
|
ms.Position = 0;
|
||||||
|
|
||||||
|
byte[] zipBuffer = new byte[ms.Length];
|
||||||
|
ms.Read(zipBuffer, 0, zipBuffer.Length);
|
||||||
|
compressed = new byte[zipBuffer.Length + 4];
|
||||||
|
Buffer.BlockCopy(zipBuffer, 0, compressed, 4, zipBuffer.Length);
|
||||||
|
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, compressed, 0, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert.ToBase64String(compressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress a DataSet.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data">DataSet to be compressed.</param>
|
||||||
|
/// <returns>Return comressed string.</returns>
|
||||||
|
public static string Compress(DataSet data)
|
||||||
|
{
|
||||||
|
byte[] compressed;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
|
||||||
|
{
|
||||||
|
data.WriteXml(zip, XmlWriteMode.WriteSchema);
|
||||||
|
}
|
||||||
|
compressed = ms.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert.ToBase64String(compressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress a DataTable.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data">DatTable to be compressed.</param>
|
||||||
|
/// <returns>Return comressed string.</returns>
|
||||||
|
public static string Compress(DataTable data)
|
||||||
|
{
|
||||||
|
byte[] compressed;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
|
||||||
|
{
|
||||||
|
data.WriteXml(zip, XmlWriteMode.WriteSchema);
|
||||||
|
}
|
||||||
|
compressed = ms.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert.ToBase64String(compressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress instance of an object.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of object to be compressed.</typeparam>
|
||||||
|
/// <param name="ot">Instatnce of T type object.</param>
|
||||||
|
/// <returns>Return compressed string.</returns>
|
||||||
|
public static string Compress<T>(T ot)
|
||||||
|
where T : ObjectTemplate
|
||||||
|
{
|
||||||
|
byte[] compressed;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress))
|
||||||
|
{
|
||||||
|
BinaryFormatter bf = new BinaryFormatter();
|
||||||
|
bf.Serialize(zip, ot);
|
||||||
|
}
|
||||||
|
compressed = ms.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert.ToBase64String(compressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress instance of an object of type T.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">>Type of object</typeparam>
|
||||||
|
/// <param name="ost">Instatnce of T type object collection.</param>
|
||||||
|
/// <returns>Return compressed string.</returns>
|
||||||
|
public static string Compress<T>(List<T> ost)
|
||||||
|
where T : ObjectTemplate
|
||||||
|
{
|
||||||
|
byte[] compressed;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress))
|
||||||
|
{
|
||||||
|
BinaryFormatter bf = new BinaryFormatter();
|
||||||
|
bf.Serialize(zip, ost);
|
||||||
|
}
|
||||||
|
compressed = ms.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert.ToBase64String(compressed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compress a file
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="srcFileName">Name of the file to be compressed.</param>
|
||||||
|
/// <param name="fileName">Name of the compressed file to be saved.</param>
|
||||||
|
public static void Compress(string srcFileName, string fileName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] buffer;
|
||||||
|
using (FileStream fsSrc = new FileStream(srcFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||||
|
{
|
||||||
|
buffer = new byte[fsSrc.Length];
|
||||||
|
fsSrc.Read(buffer, 0, buffer.Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(fs, CompressionMode.Compress, true))
|
||||||
|
{
|
||||||
|
zip.Write(buffer, 0, buffer.Length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Decompress functions
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from compressed string into actual string.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">Compressed string to be decompressed.</param>
|
||||||
|
/// <returns>Return actual string after decompression. </returns>
|
||||||
|
public static string Decompress(string text)
|
||||||
|
{
|
||||||
|
byte[] buffer;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
byte[] data = Convert.FromBase64String(text);
|
||||||
|
int length = BitConverter.ToInt32(data, 0);
|
||||||
|
ms.Write(data, 4, data.Length - 4);
|
||||||
|
buffer = new byte[length];
|
||||||
|
|
||||||
|
ms.Position = 0;
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
|
||||||
|
{
|
||||||
|
zip.Read(buffer, 0, buffer.Length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Encoding.UTF8.GetString(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reconstruct actual DataSet.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">Compressed string to be decompressed.</param>
|
||||||
|
/// <returns>Return actual DataSet.</returns>
|
||||||
|
public static DataSet DecompressDataSet(string text)
|
||||||
|
{
|
||||||
|
DataSet ds = new DataSet();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] data = Convert.FromBase64String(text);
|
||||||
|
using (MemoryStream ms = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
|
||||||
|
{
|
||||||
|
ds.ReadXml(zip, XmlReadMode.ReadSchema);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reconstruct actual DataTable.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">Compressed string to be decompressed.</param>
|
||||||
|
/// <returns>Return actual DataTable.</returns>
|
||||||
|
public static DataTable DecompressDataTable(string text)
|
||||||
|
{
|
||||||
|
DataTable dt = new DataTable();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] data = Convert.FromBase64String(text);
|
||||||
|
using (MemoryStream ms = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
|
||||||
|
{
|
||||||
|
dt.ReadXml(zip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reconstruct the actual object.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of object to be decompressed.</typeparam>
|
||||||
|
/// <param name="text">Compressed string to be decompressed.</param>
|
||||||
|
/// <returns>Return ObjectTemplate of type T</returns>
|
||||||
|
public static T DecompressObject<T>(string text)
|
||||||
|
where T : ObjectTemplate
|
||||||
|
{
|
||||||
|
T instance;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] data = Convert.FromBase64String(text);
|
||||||
|
using (MemoryStream ms = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
|
||||||
|
{
|
||||||
|
BinaryFormatter bf = new BinaryFormatter();
|
||||||
|
instance = (T)bf.Deserialize(zip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reconstruct the actual objects.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">Type of object to be decompressed.</typeparam>
|
||||||
|
/// <param name="text">Compressed string to be decompressed.</param>
|
||||||
|
/// <returns>Return collection ObjectTemplate of type T</returns>
|
||||||
|
public static List<T> DecompressObjects<T>(string text)
|
||||||
|
where T : ObjectTemplate
|
||||||
|
{
|
||||||
|
List<T> instance;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] data = Convert.FromBase64String(text);
|
||||||
|
using (MemoryStream ms = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
|
||||||
|
{
|
||||||
|
BinaryFormatter bf = new BinaryFormatter();
|
||||||
|
instance = (List<T>)bf.Deserialize(zip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Decompress source file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="srcFileName">Name of the compressed file.</param>
|
||||||
|
/// <param name="fileName">Name of the decompressed file to be saved.</param>
|
||||||
|
public static void Decompress(string srcFileName, string fileName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int length = 0;
|
||||||
|
const int bz = 4096;
|
||||||
|
DateTime ct = DateTime.Now;
|
||||||
|
byte[] buffer = new byte[bz];
|
||||||
|
FileStream fsi = new FileStream(srcFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||||
|
FileStream fso = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||||
|
using (GZipStream zip = new GZipStream(fsi, CompressionMode.Decompress, true))
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
length = zip.Read(buffer, 0, bz);
|
||||||
|
if (length != 0)
|
||||||
|
fso.Write(buffer, 0, length);
|
||||||
|
|
||||||
|
if (length != bz)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fso != null)
|
||||||
|
{
|
||||||
|
fso.Close();
|
||||||
|
fso.Dispose();
|
||||||
|
fso = null;
|
||||||
|
}
|
||||||
|
if (fsi != null)
|
||||||
|
{
|
||||||
|
fsi.Close();
|
||||||
|
fsi.Dispose();
|
||||||
|
fsi = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
18
Ease.Core/jsconfig1.json
Normal file
18
Ease.Core/jsconfig1.json
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"exclude": [
|
||||||
|
"**/bin",
|
||||||
|
"**/bower_components",
|
||||||
|
"**/jspm_packages",
|
||||||
|
"**/node_modules",
|
||||||
|
"**/obj",
|
||||||
|
"**/platforms"
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
"connectionString": {
|
||||||
|
"Conn": "server=cel60;Database=Armada_new;User ID=sa;Password=;provider=sql;sqlSyntax=SQL;",
|
||||||
|
"Conn1": "server=cel60;Database=Armada_new;User ID=sa;Password=;provider=sql;sqlSyntax=SQL;",
|
||||||
|
"Default": "server=cel60;Database=Armada_new;User ID=sa;Password=;provider=sql;sqlSyntax=SQL;"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
16
Erecruitment.UI/ClientApp/.editorconfig
Normal file
16
Erecruitment.UI/ClientApp/.editorconfig
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# Editor configuration, see http://editorconfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
max_line_length = off
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[*.{razor,cshtml}]
|
||||||
|
charset = utf-8-bom
|
41
Erecruitment.UI/ClientApp/.gitignore
vendored
Normal file
41
Erecruitment.UI/ClientApp/.gitignore
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# compiled output
|
||||||
|
/dist
|
||||||
|
/dist-server
|
||||||
|
/tmp
|
||||||
|
/out-tsc
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
|
||||||
|
# IDEs and editors
|
||||||
|
/.idea
|
||||||
|
.project
|
||||||
|
.classpath
|
||||||
|
.c9/
|
||||||
|
*.launch
|
||||||
|
.settings/
|
||||||
|
*.sublime-workspace
|
||||||
|
|
||||||
|
# IDE - VSCode
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
|
||||||
|
# misc
|
||||||
|
/.angular/cache
|
||||||
|
/.sass-cache
|
||||||
|
/connect.lock
|
||||||
|
/coverage
|
||||||
|
/libpeerconnection.log
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
testem.log
|
||||||
|
/typings
|
||||||
|
|
||||||
|
# System Files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
27
Erecruitment.UI/ClientApp/README.md
Normal file
27
Erecruitment.UI/ClientApp/README.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Erecruitment_Angular
|
||||||
|
|
||||||
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.0.
|
||||||
|
|
||||||
|
## Development server
|
||||||
|
|
||||||
|
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||||
|
|
||||||
|
## Code scaffolding
|
||||||
|
|
||||||
|
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
|
||||||
|
|
||||||
|
## Running unit tests
|
||||||
|
|
||||||
|
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||||
|
|
||||||
|
## Running end-to-end tests
|
||||||
|
|
||||||
|
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||||
|
|
||||||
|
## Further help
|
||||||
|
|
||||||
|
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
146
Erecruitment.UI/ClientApp/angular.json
Normal file
146
Erecruitment.UI/ClientApp/angular.json
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
{
|
||||||
|
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||||
|
"cli": {
|
||||||
|
"analytics": "b51a5acb-37a6-45fe-b7a1-14830c13f930"
|
||||||
|
},
|
||||||
|
"version": 1,
|
||||||
|
"newProjectRoot": "projects",
|
||||||
|
"projects": {
|
||||||
|
"Erecruitment_Angular": {
|
||||||
|
"root": "",
|
||||||
|
"sourceRoot": "src",
|
||||||
|
"projectType": "application",
|
||||||
|
"prefix": "app",
|
||||||
|
"schematics": {},
|
||||||
|
"architect": {
|
||||||
|
"build": {
|
||||||
|
"builder": "@angular-devkit/build-angular:browser",
|
||||||
|
"options": {
|
||||||
|
"progress": false,
|
||||||
|
"outputPath": "dist",
|
||||||
|
"index": "src/index.html",
|
||||||
|
"main": "src/main.ts",
|
||||||
|
"polyfills": "src/polyfills.ts",
|
||||||
|
"tsConfig": "src/tsconfig.app.json",
|
||||||
|
"assets": ["src/assets"],
|
||||||
|
"styles": [
|
||||||
|
"node_modules/bootstrap/dist/css/bootstrap.min.css",
|
||||||
|
"node_modules/font-awesome/css/font-awesome.css",
|
||||||
|
"src/styles.scss"
|
||||||
|
|
||||||
|
],
|
||||||
|
"scripts": [
|
||||||
|
"node_modules/jquery/dist/jquery.min.js",
|
||||||
|
"node_modules/@popperjs/core/dist/umd/popper.min.js",
|
||||||
|
"node_modules/bootstrap/dist/js/bootstrap.min.js"
|
||||||
|
],
|
||||||
|
"vendorChunk": true,
|
||||||
|
"extractLicenses": false,
|
||||||
|
"buildOptimizer": false,
|
||||||
|
"sourceMap": true,
|
||||||
|
"optimization": false,
|
||||||
|
"namedChunks": true
|
||||||
|
},
|
||||||
|
"configurations": {
|
||||||
|
"production": {
|
||||||
|
"budgets": [
|
||||||
|
{
|
||||||
|
"type": "anyComponentStyle",
|
||||||
|
"maximumWarning": "6kb"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fileReplacements": [
|
||||||
|
{
|
||||||
|
"replace": "src/environments/environment.ts",
|
||||||
|
"with": "src/environments/environment.prod.ts"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"optimization": true,
|
||||||
|
"outputHashing": "all",
|
||||||
|
"sourceMap": false,
|
||||||
|
"namedChunks": false,
|
||||||
|
"extractLicenses": true,
|
||||||
|
"vendorChunk": false,
|
||||||
|
"buildOptimizer": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaultConfiguration": ""
|
||||||
|
},
|
||||||
|
"serve": {
|
||||||
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
|
"options": {
|
||||||
|
"browserTarget": "Erecruitment_Angular:build"
|
||||||
|
},
|
||||||
|
"configurations": {
|
||||||
|
"production": {
|
||||||
|
"browserTarget": "Erecruitment_Angular:build:production"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extract-i18n": {
|
||||||
|
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||||
|
"options": {
|
||||||
|
"browserTarget": "Erecruitment_Angular:build"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"builder": "@angular-devkit/build-angular:karma",
|
||||||
|
"options": {
|
||||||
|
"main": "src/test.ts",
|
||||||
|
"polyfills": "src/polyfills.ts",
|
||||||
|
"tsConfig": "src/tsconfig.spec.json",
|
||||||
|
"karmaConfig": "src/karma.conf.js",
|
||||||
|
"styles": [
|
||||||
|
"src/styles.scss" ],
|
||||||
|
"scripts": [
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"assets": ["src/assets"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"server": {
|
||||||
|
"builder": "@angular-devkit/build-angular:server",
|
||||||
|
"options": {
|
||||||
|
"outputPath": "dist-server",
|
||||||
|
"main": "src/main.ts",
|
||||||
|
"tsConfig": "src/tsconfig.server.json",
|
||||||
|
"sourceMap": true,
|
||||||
|
"optimization": false
|
||||||
|
},
|
||||||
|
"configurations": {
|
||||||
|
"dev": {
|
||||||
|
"optimization": true,
|
||||||
|
"outputHashing": "all",
|
||||||
|
"sourceMap": false,
|
||||||
|
"namedChunks": false,
|
||||||
|
"extractLicenses": true
|
||||||
|
},
|
||||||
|
"production": {
|
||||||
|
"optimization": true,
|
||||||
|
"outputHashing": "all",
|
||||||
|
"sourceMap": false,
|
||||||
|
"namedChunks": false,
|
||||||
|
"extractLicenses": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaultConfiguration": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Erecruitment_Angular-e2e": {
|
||||||
|
"root": "e2e/",
|
||||||
|
"projectType": "application",
|
||||||
|
"architect": {
|
||||||
|
"e2e": {
|
||||||
|
"builder": "@angular-devkit/build-angular:protractor",
|
||||||
|
"options": {
|
||||||
|
"protractorConfig": "e2e/protractor.conf.js",
|
||||||
|
"devServerTarget": "Erecruitment_Angular:serve"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaultProject": "Erecruitment_Angular"
|
||||||
|
}
|
9
Erecruitment.UI/ClientApp/browserslist
Normal file
9
Erecruitment.UI/ClientApp/browserslist
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
|
||||||
|
# For additional information regarding the format and rule options, please see:
|
||||||
|
# https://github.com/browserslist/browserslist#queries
|
||||||
|
# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
|
||||||
|
> 0.5%
|
||||||
|
last 2 versions
|
||||||
|
Firefox ESR
|
||||||
|
not dead
|
||||||
|
# IE 9-11
|
28
Erecruitment.UI/ClientApp/e2e/protractor.conf.js
Normal file
28
Erecruitment.UI/ClientApp/e2e/protractor.conf.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Protractor configuration file, see link for more information
|
||||||
|
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
||||||
|
|
||||||
|
const { SpecReporter } = require("jasmine-spec-reporter");
|
||||||
|
|
||||||
|
exports.config = {
|
||||||
|
allScriptsTimeout: 11000,
|
||||||
|
specs: ["./src/**/*.e2e-spec.ts"],
|
||||||
|
capabilities: {
|
||||||
|
browserName: "chrome"
|
||||||
|
},
|
||||||
|
directConnect: true,
|
||||||
|
baseUrl: "http://localhost:4200/",
|
||||||
|
framework: "jasmine",
|
||||||
|
jasmineNodeOpts: {
|
||||||
|
showColors: true,
|
||||||
|
defaultTimeoutInterval: 30000,
|
||||||
|
print: function() {}
|
||||||
|
},
|
||||||
|
onPrepare() {
|
||||||
|
require("ts-node").register({
|
||||||
|
project: require("path").join(__dirname, "./tsconfig.e2e.json")
|
||||||
|
});
|
||||||
|
jasmine
|
||||||
|
.getEnv()
|
||||||
|
.addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
||||||
|
}
|
||||||
|
};
|
14
Erecruitment.UI/ClientApp/e2e/src/app.e2e-spec.ts
Normal file
14
Erecruitment.UI/ClientApp/e2e/src/app.e2e-spec.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import { AppPage } from './app.po';
|
||||||
|
|
||||||
|
describe('App', () => {
|
||||||
|
let page: AppPage;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
page = new AppPage();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should display welcome message', () => {
|
||||||
|
page.navigateTo();
|
||||||
|
expect(page.getMainHeading()).toEqual('Hello, world!');
|
||||||
|
});
|
||||||
|
});
|
11
Erecruitment.UI/ClientApp/e2e/src/app.po.ts
Normal file
11
Erecruitment.UI/ClientApp/e2e/src/app.po.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import { browser, by, element } from 'protractor';
|
||||||
|
|
||||||
|
export class AppPage {
|
||||||
|
navigateTo() {
|
||||||
|
return browser.get('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
getMainHeading() {
|
||||||
|
return element(by.css('app-root h1')).getText();
|
||||||
|
}
|
||||||
|
}
|
13
Erecruitment.UI/ClientApp/e2e/tsconfig.e2e.json
Normal file
13
Erecruitment.UI/ClientApp/e2e/tsconfig.e2e.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"extends": "../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "../out-tsc/app",
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es5",
|
||||||
|
"types": [
|
||||||
|
"jasmine",
|
||||||
|
"jasminewd2",
|
||||||
|
"node"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
27303
Erecruitment.UI/ClientApp/package-lock.json
generated
Normal file
27303
Erecruitment.UI/ClientApp/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
86
Erecruitment.UI/ClientApp/package.json
Normal file
86
Erecruitment.UI/ClientApp/package.json
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
"name": "erecruitment_angular",
|
||||||
|
"version": "13.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"ng": "ng",
|
||||||
|
"start": "ng serve",
|
||||||
|
"build": "ng build",
|
||||||
|
"build:ssr": "ng run Erecruitment_Angular:server:dev",
|
||||||
|
"test": "ng test",
|
||||||
|
"lint": "ng lint",
|
||||||
|
"e2e": "ng e2e"
|
||||||
|
},
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@angular/animations": "~13.0.2",
|
||||||
|
"@angular/cdk": "~13.0.2",
|
||||||
|
"@angular/common": "~13.0.2",
|
||||||
|
"@angular/compiler": "~13.0.2",
|
||||||
|
"@angular/core": "~13.0.2",
|
||||||
|
"@angular/forms": "~13.0.2",
|
||||||
|
"@angular/platform-browser": "~13.0.2",
|
||||||
|
"@angular/platform-browser-dynamic": "~13.0.2",
|
||||||
|
"@angular/router": "~13.0.2",
|
||||||
|
"@angular2-material/button-toggle": "^2.0.0-alpha.8-3",
|
||||||
|
"@auth0/angular-jwt": "^5.0.2",
|
||||||
|
"@nguniversal/module-map-ngfactory-loader": "~8.2.6",
|
||||||
|
"@popperjs/core": "^2.11.8",
|
||||||
|
"@progress/kendo-angular-common": "^2.0.0",
|
||||||
|
"@progress/kendo-angular-dateinputs": "^5.2.1",
|
||||||
|
"@progress/kendo-angular-dialog": "5.1.0",
|
||||||
|
"@progress/kendo-angular-dropdowns": "^5.3.0",
|
||||||
|
"@progress/kendo-angular-inputs": "^8.0.0",
|
||||||
|
"@progress/kendo-angular-intl": "^3.0.0",
|
||||||
|
"@progress/kendo-angular-l10n": "^3.0.0",
|
||||||
|
"@progress/kendo-angular-label": "^3.1.0",
|
||||||
|
"@progress/kendo-angular-layout": "6.1.8",
|
||||||
|
"@progress/kendo-angular-popup": "^4.0.0",
|
||||||
|
"@progress/kendo-angular-treeview": "5.4.0",
|
||||||
|
"@progress/kendo-drawing": "^1.9.3",
|
||||||
|
"@progress/kendo-licensing": "^1.2.2",
|
||||||
|
"@progress/kendo-theme-bootstrap": "4.40.1",
|
||||||
|
"@progress/kendo-theme-default": "4.40.1",
|
||||||
|
"@progress/kendo-theme-material": "4.40.1",
|
||||||
|
"@types/google-one-tap": "^1.2.2",
|
||||||
|
"@types/jquery": "^3.5.16",
|
||||||
|
"bootstrap": "^5.3.1",
|
||||||
|
"core-js": "^3.20.2",
|
||||||
|
"font-awesome": "^4.7.0",
|
||||||
|
"jquery": "^3.2.1",
|
||||||
|
"oidc-client": "~1.11.5",
|
||||||
|
"popper.js": "^1.16.1",
|
||||||
|
"resolve-url-loader": "^5.0.0",
|
||||||
|
"rxjs": "^6.6.3",
|
||||||
|
"tslib": "^2.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@angular-devkit/build-angular": "^13.2.4",
|
||||||
|
"@angular/cli": "~13.0.2",
|
||||||
|
"@angular/compiler-cli": "~13.0.2",
|
||||||
|
"@angular/localize": "^13.1.0",
|
||||||
|
"@types/jasmine": "~3.6.0",
|
||||||
|
"@types/jasminewd2": "~2.0.8",
|
||||||
|
"@types/node": "^12.11.1",
|
||||||
|
"codelyzer": "^6.0.0",
|
||||||
|
"ini": "^1.3.7",
|
||||||
|
"jasmine-core": "~3.6.0",
|
||||||
|
"jasmine-spec-reporter": "~5.0.0",
|
||||||
|
"karma": "~6.4.1",
|
||||||
|
"karma-chrome-launcher": "~3.1.0",
|
||||||
|
"karma-coverage-istanbul-reporter": "~3.0.2",
|
||||||
|
"karma-jasmine": "~4.0.0",
|
||||||
|
"karma-jasmine-html-reporter": "^1.5.0",
|
||||||
|
"typescript": "~4.4.3",
|
||||||
|
"url": "^0.11.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"node-sass": "^5.0.0",
|
||||||
|
"protractor": "~7.0.0",
|
||||||
|
"ts-node": "~8.4.1",
|
||||||
|
"tslint": "~6.1.0"
|
||||||
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"url-parse": ">=1.5.0",
|
||||||
|
"lodash": ">=4.17.21"
|
||||||
|
}
|
||||||
|
}
|
26
Erecruitment.UI/ClientApp/src/app/_guards/auth.guard.ts
Normal file
26
Erecruitment.UI/ClientApp/src/app/_guards/auth.guard.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { Injectable, EventEmitter } from '@angular/core';
|
||||||
|
import { CanActivate, Router } from '@angular/router';
|
||||||
|
import { AuthService } from '../_services/auth/auth.service';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class AuthGuard implements CanActivate {
|
||||||
|
public menuEvent: EventEmitter<boolean>;
|
||||||
|
|
||||||
|
constructor(private authService: AuthService, private router: Router) {
|
||||||
|
this.menuEvent = new EventEmitter();
|
||||||
|
}
|
||||||
|
canActivate(): boolean {
|
||||||
|
|
||||||
|
if (this.authService.loggedIn()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
this.router.navigate(['/login']);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public getMenuList(): any {
|
||||||
|
// return JSON.parse(localStorage.getItem('menuList'));
|
||||||
|
//}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
import { EnumExtension} from '../../_models/enums';
|
||||||
|
|
||||||
|
|
||||||
|
export class ErAppliedApplicant {
|
||||||
|
id: number;
|
||||||
|
userID: number;
|
||||||
|
jobID: number;
|
||||||
|
applyDate: Date;
|
||||||
|
applicationAcknowldged: boolean;
|
||||||
|
isSelectedforInterview: boolean;
|
||||||
|
isOfferLetteraccepted: boolean;
|
||||||
|
offerletterRejectReason: string;
|
||||||
|
offerLetterIssueDate: Date;
|
||||||
|
offerletterAcceptDate: Date;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.offerletterRejectReason = '';
|
||||||
|
this.applicationAcknowldged = false;
|
||||||
|
this.isSelectedforInterview = false;
|
||||||
|
this.isOfferLetteraccepted = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class ErJobUpdate {
|
||||||
|
id: number;
|
||||||
|
userID: number;
|
||||||
|
jobID: number;
|
||||||
|
appliedApplicantID: number;
|
||||||
|
isAcknowledged: boolean;
|
||||||
|
acknowledgeDate: Date;
|
||||||
|
referenceID: number;
|
||||||
|
description: string;
|
||||||
|
remarks: string;
|
||||||
|
updateDate: Date;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErApplicantDoc {
|
||||||
|
id: number;
|
||||||
|
userID: number;
|
||||||
|
appliedApplicantID: number;
|
||||||
|
originalFileName: string;
|
||||||
|
remarks: string;
|
||||||
|
createdDate: Date;
|
||||||
|
fileTobase64: string;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
import {BaseObject} from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class Occupation extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.code = '';
|
||||||
|
this.description = '';
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import {BaseObject} from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class Relation extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
description: string;
|
||||||
|
code: string;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import {BaseObject} from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class Religion extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
code: string;
|
||||||
|
name: string;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import {BaseObject} from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class ResultType extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
cgpa: boolean;
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
import { EnumStatus } from '../enums';
|
||||||
|
|
||||||
|
export class BaseObject {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.stepSerial = 0;
|
||||||
|
this.status = EnumStatus.Regardless;
|
||||||
|
this.createdDate = new Date();
|
||||||
|
this.id = 0;
|
||||||
|
this.createdBy = 0;
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
stepSerial: number;
|
||||||
|
status: EnumStatus;
|
||||||
|
modifiedBy?: number;
|
||||||
|
createdDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
formControlname: string;
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
import { EnumEntryMode, EnumCicularColumnType } from '../enums';
|
||||||
|
|
||||||
|
export class ErCircular {
|
||||||
|
id: number;
|
||||||
|
recruitementID: number;
|
||||||
|
publishFrom: Date;
|
||||||
|
publishTo: Date;
|
||||||
|
erCircularDetails: ErCircularDetail[] = [];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErCircularDetail{
|
||||||
|
id: number;
|
||||||
|
columnType: EnumCicularColumnType;
|
||||||
|
pAutoFocus: boolean;
|
||||||
|
description: string;
|
||||||
|
remarks: string;
|
||||||
|
erCircularID: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErCircularDetailData {
|
||||||
|
Position: string;
|
||||||
|
CompanyName: string;
|
||||||
|
KeySellingPoints: string;
|
||||||
|
Vacancy: number;
|
||||||
|
JobContext: string;
|
||||||
|
JobResponsibilities: string;
|
||||||
|
EmploymentStatus: string;
|
||||||
|
Workplace: string;
|
||||||
|
EducationalRequirements: string;
|
||||||
|
ExperienceRequirements :string;
|
||||||
|
AdditionalRequirements: string;
|
||||||
|
JobLocation :string;
|
||||||
|
Salary: string;
|
||||||
|
CompensationandOtherBenefits: string;
|
||||||
|
JobSource: string;
|
||||||
|
PublishToDate: string;
|
||||||
|
multipleEdReq: string[] = [];
|
||||||
|
Id: number;
|
||||||
|
IsApplied: boolean = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErCircularJobDetails {
|
||||||
|
constructor() {
|
||||||
|
this.educationalRequirements = [];
|
||||||
|
this.experienceRequirements = [];
|
||||||
|
this.additionalRequirements = [];
|
||||||
|
this.keySellingPoints = [];
|
||||||
|
this.compensationandOtherBenefits = [];
|
||||||
|
this.jobResponsibilities = [];
|
||||||
|
this.vacancy = "0";
|
||||||
|
this.salary = "0";
|
||||||
|
}
|
||||||
|
position: string;
|
||||||
|
companyName: string;
|
||||||
|
keySellingPoints: string[];
|
||||||
|
vacancy: string;
|
||||||
|
jobContext: string;
|
||||||
|
jobResponsibilities: string[];
|
||||||
|
employmentStatus: string;
|
||||||
|
workplace: string;
|
||||||
|
educationalRequirements: string[];
|
||||||
|
experienceRequirements: string[];
|
||||||
|
additionalRequirements: string[];
|
||||||
|
jobLocation: string;
|
||||||
|
salary: string;
|
||||||
|
compensationandOtherBenefits: string[];
|
||||||
|
jobSource: string;
|
||||||
|
multipleEdReq: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export class InterviewDetails {
|
||||||
|
stepName: string;
|
||||||
|
interviewRTime: string;
|
||||||
|
IsSelected: string;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
export class Discipline {
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
id: number;
|
||||||
|
disciplineLevels: DisciplineLevel[] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class DisciplineLevel {
|
||||||
|
constructor() {
|
||||||
|
this.disciplineID = 0;
|
||||||
|
this.levelID = 0;
|
||||||
|
}
|
||||||
|
disciplineID: number;
|
||||||
|
levelID: number;
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { BaseObject } from '../../_models/Basic/baseObject';
|
||||||
|
|
||||||
|
export class EducationLevel extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
educationTypeID: number;
|
||||||
|
educationType: any;
|
||||||
|
concentration: string;
|
||||||
|
}
|
3103
Erecruitment.UI/ClientApp/src/app/_models/enums.ts
Normal file
3103
Erecruitment.UI/ClientApp/src/app/_models/enums.ts
Normal file
File diff suppressed because it is too large
Load Diff
156
Erecruitment.UI/ClientApp/src/app/_models/ercv-bank/ercv.ts
Normal file
156
Erecruitment.UI/ClientApp/src/app/_models/ercv-bank/ercv.ts
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
import { SafeResourceUrl } from '@angular/platform-browser';
|
||||||
|
import { EnumEntryMode, EnumCicularColumnType, EnumTrainingCompletedFrom, EnumProfileStatus, EnumGender, EnumMaritalStatus, EnumOnBoradStatus } from '../enums';
|
||||||
|
import { Institution } from '../institutions/institution';
|
||||||
|
import { NatureOfTraining } from './nature-of-training';
|
||||||
|
import { TrainingType } from './training-type';
|
||||||
|
|
||||||
|
|
||||||
|
export class FileAttachment {
|
||||||
|
// FileAttachment- copied from branches\SanofiNew\HRM.UI\ClientApp\src\app\_models\common\uploadFile.ts
|
||||||
|
constructor() {
|
||||||
|
// this.UploaderModule = 24;
|
||||||
|
// this.UploadDate = new Date();
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
referenceID: number;
|
||||||
|
originalFileName: string;
|
||||||
|
filePath: string;
|
||||||
|
fileTobase64: string;
|
||||||
|
previousFileTobase64: string;
|
||||||
|
serialNo: number;
|
||||||
|
fileAsByteArray: any;
|
||||||
|
fileType: number;
|
||||||
|
profilePhotoUrl: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErCV {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
firstName: string;
|
||||||
|
lastName: string;
|
||||||
|
email: string;
|
||||||
|
mobile: string;
|
||||||
|
designation: string;
|
||||||
|
presentAddress: string;
|
||||||
|
permanentAddress: string;
|
||||||
|
gender: EnumGender;
|
||||||
|
maritalStatus: EnumMaritalStatus;
|
||||||
|
sortStatus: string;
|
||||||
|
religionID: number;
|
||||||
|
erCVProfilePhoto: FileAttachment;
|
||||||
|
|
||||||
|
|
||||||
|
allExperiences: ErCVExperience[];
|
||||||
|
allEduQualifications: ErCVEducation[];
|
||||||
|
cvReferences: ErCVReference[];
|
||||||
|
cvTrainings: ErCVTraining[];
|
||||||
|
irFileAttacments: FileAttachment[];
|
||||||
|
positionID: number;
|
||||||
|
positionStatus: EnumOnBoradStatus;
|
||||||
|
candidateID: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class ErCVEducation {
|
||||||
|
constructor() {
|
||||||
|
this.isNew = true;
|
||||||
|
this.isSave = false;
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
degreeTitleID: number;
|
||||||
|
degreeTitle: string;
|
||||||
|
disciplineID: number;
|
||||||
|
discipline: number;
|
||||||
|
boardID: number;
|
||||||
|
board: string;
|
||||||
|
name: string;
|
||||||
|
passingYear: string;
|
||||||
|
resultID: number;
|
||||||
|
cgpa :string;
|
||||||
|
outOF: string;
|
||||||
|
isHighest :boolean;
|
||||||
|
instituteName: string;
|
||||||
|
cvID: number;
|
||||||
|
isNew: boolean;
|
||||||
|
isSave: boolean;
|
||||||
|
duration: string;
|
||||||
|
achievement: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class ErCVExperience {
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
employeer: string;
|
||||||
|
contactPerson: string;
|
||||||
|
address: string;
|
||||||
|
industry: string;
|
||||||
|
designation: string;
|
||||||
|
fromDate: Date;
|
||||||
|
toDate: Date;
|
||||||
|
telephone: string;
|
||||||
|
roleDefination: string;
|
||||||
|
cvid: number;
|
||||||
|
mobile: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class ErCVReference {
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
occupation: string;
|
||||||
|
relation: string;
|
||||||
|
address: string;
|
||||||
|
email: string;
|
||||||
|
telephone: string;
|
||||||
|
mobile: string;
|
||||||
|
cvid: number;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErCVTraining {
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
id: number;
|
||||||
|
trainingTypeID: number;
|
||||||
|
trainingType: TrainingType;
|
||||||
|
natureOfTrainingID: number;
|
||||||
|
natureOfTraining: NatureOfTraining;
|
||||||
|
trainingCompletedFrom: EnumTrainingCompletedFrom;
|
||||||
|
description: string;
|
||||||
|
countryID: number;
|
||||||
|
instituteName: string;
|
||||||
|
institutionID: number;
|
||||||
|
institution: Institution;
|
||||||
|
place: string;
|
||||||
|
achievement: string;
|
||||||
|
fees: number;
|
||||||
|
name: string;
|
||||||
|
otherCost: number;
|
||||||
|
fromDate: Date;
|
||||||
|
fromDateString: string;
|
||||||
|
toDate: Date;
|
||||||
|
toDateString: Date;
|
||||||
|
trainingMonth: number;
|
||||||
|
trainingDay: number;
|
||||||
|
trainingHour: number;
|
||||||
|
confirmationDate: Date;
|
||||||
|
profileStatus: EnumProfileStatus;
|
||||||
|
days: string;
|
||||||
|
hours: string;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import {BaseObject} from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class NatureOfTraining extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
code: string;
|
||||||
|
name: string;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { BaseObject } from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class TrainingType extends BaseObject {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
code: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { EnmInstituteType } from "../enums";
|
||||||
|
|
||||||
|
export class Institution {
|
||||||
|
id: number;
|
||||||
|
code: string;
|
||||||
|
name: string;
|
||||||
|
type: EnmInstituteType;
|
||||||
|
educationTypeID: number;
|
||||||
|
}
|
183
Erecruitment.UI/ClientApp/src/app/_models/survey/survey.ts
Normal file
183
Erecruitment.UI/ClientApp/src/app/_models/survey/survey.ts
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
import { EnumExtension, EnumPURequestType, EnumReplacementDueTo, enumwfStatus, EnumAssetStatus, EnumAssetTranType, EnumAssetReceiverType, EnumSurveyQuestionType } from '../../_models/enums';
|
||||||
|
|
||||||
|
|
||||||
|
export class QuestionCategory {
|
||||||
|
id: number;
|
||||||
|
questionCategoryID: number;
|
||||||
|
modifiedBy?: number;
|
||||||
|
createdDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.code = '';
|
||||||
|
this.description = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Question {
|
||||||
|
id: number;
|
||||||
|
questionNo: string;
|
||||||
|
categoryID: number;
|
||||||
|
modifiedBy?: number;
|
||||||
|
creationDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
questionBody: string;
|
||||||
|
image: string;
|
||||||
|
isMultiple: boolean;
|
||||||
|
isPublished: boolean;
|
||||||
|
noOfOptions: number;
|
||||||
|
categoryString: string;
|
||||||
|
estimatedTime: number;
|
||||||
|
questionType: EnumSurveyQuestionType;
|
||||||
|
category: QuestionCategory;
|
||||||
|
questionAnswers: QuestionAnswer[];
|
||||||
|
questionAnswerAttachments: QuestionAnswerAttachment[];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.questionNo = '';
|
||||||
|
this.isMultiple = false;
|
||||||
|
this.isPublished = false;
|
||||||
|
this.questionAnswers = [];
|
||||||
|
this.questionAnswerAttachments = [];
|
||||||
|
this.questionType = EnumSurveyQuestionType.Multiple_Choice;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class QuestionAnswer {
|
||||||
|
id: number;
|
||||||
|
answerID: number;
|
||||||
|
questionID: number;
|
||||||
|
modifiedBy?: number;
|
||||||
|
creationDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
answerBody: string;
|
||||||
|
image: string;
|
||||||
|
myFiles: any;
|
||||||
|
isCorrect: boolean;
|
||||||
|
displayOrder: number;
|
||||||
|
weight: number;
|
||||||
|
numericAnswer: number;
|
||||||
|
isCandidateAnswer: boolean;
|
||||||
|
questionAnswerAttachments: QuestionAnswerAttachment[];
|
||||||
|
imageFile: any;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.answerBody = '';
|
||||||
|
this.isCorrect = false;
|
||||||
|
this.questionAnswerAttachments = [];
|
||||||
|
this.isCandidateAnswer = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class QuestionAnswerAttachment {
|
||||||
|
answerID: number;
|
||||||
|
questionID: number;
|
||||||
|
originalFileName: string;
|
||||||
|
previousFileTobase64: string;
|
||||||
|
attachmentType: number;
|
||||||
|
fileTobase64: string;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SurveyCategory {
|
||||||
|
id: number;
|
||||||
|
questionCategoryID: number;
|
||||||
|
modifiedBy?: number;
|
||||||
|
createdDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
code: string;
|
||||||
|
description: string;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.code = '';
|
||||||
|
this.description = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Survey {
|
||||||
|
id: number;
|
||||||
|
title: number;
|
||||||
|
categoryID: number;
|
||||||
|
description: string;
|
||||||
|
createdDate: Date;
|
||||||
|
createdBy: number;
|
||||||
|
modifiedDate?: Date;
|
||||||
|
actualTime: number;
|
||||||
|
passMark: number;
|
||||||
|
questionCount: number;
|
||||||
|
estimatedTime: number;
|
||||||
|
marks: number;
|
||||||
|
surveyQuestions: SurveyQuestion[];
|
||||||
|
surveyQuestionList: any;
|
||||||
|
noOfQuestions: number;
|
||||||
|
categoryName: string;
|
||||||
|
constructor() {
|
||||||
|
this.estimatedTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SurveyQuestion {
|
||||||
|
surveyID: number;
|
||||||
|
questionID: number;
|
||||||
|
question: Question;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SurveyResult {
|
||||||
|
surveyID: number;
|
||||||
|
employeeID: number;
|
||||||
|
questionID: number;
|
||||||
|
answerID: number;
|
||||||
|
isCorrect: boolean;
|
||||||
|
forEmployeeID: number;
|
||||||
|
candidateID: number;
|
||||||
|
weight: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SurveyEmployee {
|
||||||
|
surveyID: number;
|
||||||
|
employeeID: number;
|
||||||
|
candidateID: number;
|
||||||
|
startTime: Date;
|
||||||
|
currentQuestionID: number;
|
||||||
|
isDisconnected: boolean;
|
||||||
|
isPass: boolean;
|
||||||
|
erCircularID: number;
|
||||||
|
surveyMark: number;
|
||||||
|
surveyTime: number;
|
||||||
|
surveyParticipantDate: Date;
|
||||||
|
isCompleted: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Result
|
||||||
|
{
|
||||||
|
totalMark: number;
|
||||||
|
totalTime: number;
|
||||||
|
takenTime: string;
|
||||||
|
questionCount: number;
|
||||||
|
answerCount: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
28
Erecruitment.UI/ClientApp/src/app/_models/user/user.js
Normal file
28
Erecruitment.UI/ClientApp/src/app/_models/user/user.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
"use strict";
|
||||||
|
var __extends = (this && this.__extends) || (function () {
|
||||||
|
var extendStatics = function (d, b) {
|
||||||
|
extendStatics = Object.setPrototypeOf ||
|
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||||
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||||
|
return extendStatics(d, b);
|
||||||
|
};
|
||||||
|
return function (d, b) {
|
||||||
|
extendStatics(d, b);
|
||||||
|
function __() { this.constructor = d; }
|
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var baseObject_1 = require("../Basic/baseObject");
|
||||||
|
var User = /** @class */ (function (_super) {
|
||||||
|
__extends(User, _super);
|
||||||
|
function User() {
|
||||||
|
var _this = _super.call(this) || this;
|
||||||
|
_this.isNew = true;
|
||||||
|
_this.roleNames = '';
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
return User;
|
||||||
|
}(baseObject_1.BaseObject));
|
||||||
|
exports.User = User;
|
||||||
|
//# sourceMappingURL=user.js.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"user.js","sourceRoot":"","sources":["user.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,kDAAiD;AAEjD;IAA0B,wBAAU;IAEhC;QAAA,YACI,iBAAO,SAGV;QAFG,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;IACxB,CAAC;IAYL,WAAC;AAAD,CAAC,AAlBD,CAA0B,uBAAU,GAkBnC;AAlBY,oBAAI"}
|
18
Erecruitment.UI/ClientApp/src/app/_models/user/user.ts
Normal file
18
Erecruitment.UI/ClientApp/src/app/_models/user/user.ts
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import { EnumAuthStatus, EnumUserType } from '../enums';
|
||||||
|
import { BaseObject } from '../Basic/baseObject';
|
||||||
|
|
||||||
|
export class ErjobUser extends BaseObject {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
public loginID: string;
|
||||||
|
public userName: string;
|
||||||
|
public password: string;
|
||||||
|
public confirmPassword: string;
|
||||||
|
public email: string;
|
||||||
|
public passwordHints: string;
|
||||||
|
public mobile: string;
|
||||||
|
public isCVCompleted: boolean;
|
||||||
|
public jobUserID: number;
|
||||||
|
}
|
100
Erecruitment.UI/ClientApp/src/app/_services/auth/auth.service.ts
Normal file
100
Erecruitment.UI/ClientApp/src/app/_services/auth/auth.service.ts
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
/*import { User } from '../../_models/Authentication/user';*/
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { ApiService } from '../../app.api.service';
|
||||||
|
import { EnumRoleType, EnumSystemType, EnumUserType } from '../../_models/enums';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { BehaviorSubject, Subject } from 'rxjs';
|
||||||
|
import { ErjobUser } from '../../_models/user/user';
|
||||||
|
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AuthService {
|
||||||
|
public userExistcheck$ = new BehaviorSubject<any>({});
|
||||||
|
baseUrl = ApiService.BASE_URL + 'Authentication/';
|
||||||
|
jwtHelper = new JwtHelperService();
|
||||||
|
decodedToken: any;
|
||||||
|
|
||||||
|
// bookmarks: Bookmark[];
|
||||||
|
constructor(private http: HttpClient,
|
||||||
|
public apiService: ApiService,
|
||||||
|
private router: Router) {
|
||||||
|
}
|
||||||
|
|
||||||
|
login(param: any) {
|
||||||
|
|
||||||
|
return this.apiService.httpPostLoginWithGoogle<any>('/Authentication/loginWithGoogle', JSON.stringify(param)).pipe(
|
||||||
|
map((response: any) => {
|
||||||
|
const user = response;
|
||||||
|
if (user) {
|
||||||
|
localStorage.setItem('token', user);
|
||||||
|
ApiService.AuthenticationToken = user;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
GetLogInUserType(): any {
|
||||||
|
return this.apiService.httpGet<EnumUserType>('/Authentication/GetLogInUserType');
|
||||||
|
}
|
||||||
|
|
||||||
|
GetCurrentUser(): any {
|
||||||
|
return this.apiService.httpGet<any>('/Authentication/GetCurrentUser');
|
||||||
|
}
|
||||||
|
logout() {
|
||||||
|
localStorage.removeItem('token');
|
||||||
|
this.router.navigate(['/login']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//SaveUser(oUser: User): any {
|
||||||
|
// return this.apiService.httpPost<User>('/Authentication/SaveUser', oUser);
|
||||||
|
//}
|
||||||
|
|
||||||
|
loggedIn() {
|
||||||
|
const token = localStorage.getItem('token');
|
||||||
|
ApiService.AuthenticationToken = token;
|
||||||
|
return !this.jwtHelper.isTokenExpired(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
loadMenu() {
|
||||||
|
return this.http.get(this.baseUrl + 'loadMenu');
|
||||||
|
}
|
||||||
|
|
||||||
|
changePassword(userData: any) {
|
||||||
|
return this.apiService.httpPost<any>('/Authentication/changePassword', userData);
|
||||||
|
}
|
||||||
|
|
||||||
|
changePasswordbyAdmin(userData: any) {
|
||||||
|
return this.apiService.httpPost<any>('/Authentication/changePasswordbyAdmin', userData);
|
||||||
|
}
|
||||||
|
|
||||||
|
forgotPassword(data: any) {
|
||||||
|
return this.apiService.httpPost<any>('/Authentication/forgotPassword', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
getVersionNumber() {
|
||||||
|
return this.apiService.httpGet<string>('/Authentication/getVersionNumber');
|
||||||
|
}
|
||||||
|
|
||||||
|
register(data: any) {
|
||||||
|
return this.apiService.httpPost<ErjobUser>('/Authentication/register', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
systemLogin(param: any) {
|
||||||
|
|
||||||
|
// return this.apiService.httpPost<any>('/Authentication/login', param);
|
||||||
|
return this.apiService.httpPost<any>('/Authentication/login', param).pipe(
|
||||||
|
map((response: any) => {
|
||||||
|
const user = response;
|
||||||
|
if (user) {
|
||||||
|
localStorage.setItem('token', user);
|
||||||
|
ApiService.AuthenticationToken = user;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
154
Erecruitment.UI/ClientApp/src/app/_services/basic.service.ts
Normal file
154
Erecruitment.UI/ClientApp/src/app/_services/basic.service.ts
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { ApiService } from '../app.api.service';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
import { Discipline } from '../_models/discipline/discipline';
|
||||||
|
import { EducationLevel } from '../_models/education-level/education-level';
|
||||||
|
import { EnumStatus } from '../_models/enums';
|
||||||
|
import { Institution } from '../_models/institutions/institution';
|
||||||
|
import { ResultType } from '../_models/HRBasic/result-type';
|
||||||
|
import { Religion } from '../_models/HRBasic/religion';
|
||||||
|
import { Occupation } from '../_models/HRBasic/occupation';
|
||||||
|
import { Relation } from '../_models/HRBasic/relation';
|
||||||
|
import { TrainingType } from '../_models/ercv-bank/training-type';
|
||||||
|
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class BasicService {
|
||||||
|
getOccupation(id: number) {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
baseUrl = ApiService.BASE_URL + '/ERBasic';
|
||||||
|
|
||||||
|
constructor(public apiService: ApiService,
|
||||||
|
private http: HttpClient) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Department
|
||||||
|
getDepartment() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getDepartment');
|
||||||
|
}
|
||||||
|
getAllEducationLevel(): Observable<EducationLevel[]> {
|
||||||
|
return this.apiService.httpGet<EducationLevel[]>('/ERBasic/getAllEducationLevel' + '/' + EnumStatus.Regardless);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Designation
|
||||||
|
getDesignation() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getDesignation');
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllOccupation(): Observable<Occupation[]> {
|
||||||
|
const nname = this.apiService.getApiDefaultData('');
|
||||||
|
const ncode = this.apiService.getApiDefaultData('');
|
||||||
|
return this.apiService.httpGet<Occupation[]>('/ERBasic/getAllOccupation');
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllRelations(): Observable<Relation[]> {
|
||||||
|
return this.apiService.httpGet<Relation[]>('/ERBasic/getAllRelations');
|
||||||
|
}
|
||||||
|
|
||||||
|
//getAllDesignation(status: EnumStatus, code?: string, name?: string): Observable<Designation[]> {
|
||||||
|
// const nname = this.apiService.getApiDefaultData(name);
|
||||||
|
// const ncode = this.apiService.getApiDefaultData(code);
|
||||||
|
// return this.apiService.httpGet<Designation[]>('/HRBasic/getAllDesignation' + '/' + status + '/' + ncode +
|
||||||
|
// '/' + nname);
|
||||||
|
//}
|
||||||
|
|
||||||
|
getDesignationByID(id: number) {
|
||||||
|
return this.apiService.httpGet('/ERBasic/getDesignationByID' + '/' + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grade
|
||||||
|
getGrade() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getGrade');
|
||||||
|
}
|
||||||
|
|
||||||
|
//getAllGrade(status: EnumStatus, code?: string, name?: string): any {
|
||||||
|
// const nname = this.apiService.getApiDefaultData(name);
|
||||||
|
// const ncode = this.apiService.getApiDefaultData(code);
|
||||||
|
// return this.apiService.httpGet<Grade[]>('/HRBasic/getAllGrade' + '/' + status + '/' + ncode +
|
||||||
|
// '/' + nname);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//getGradeByID(id: number) {
|
||||||
|
// return this.apiService.httpGet<Grade>('/HRBasic/getGradeByID' + '/' + id);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// GradeSegment
|
||||||
|
getGradeSegment() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getGradeSegment');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Location
|
||||||
|
getLocation() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getLocation');
|
||||||
|
}
|
||||||
|
|
||||||
|
//getAllLocation(status: EnumStatus, code?: string, name?: string): Observable<Location[]> {
|
||||||
|
// const nname = this.apiService.getApiDefaultData(name);
|
||||||
|
// const ncode = this.apiService.getApiDefaultData(code);
|
||||||
|
// return this.apiService.httpGet<Location[]>('/HRBasic/GetAllLocation' + '/' + status + '/' + ncode +
|
||||||
|
// '/' + nname);
|
||||||
|
//}
|
||||||
|
|
||||||
|
getLocationByID(id: number) {
|
||||||
|
return this.apiService.httpGet('/ERBasic/getLocationByID' + '/' + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// religion
|
||||||
|
getAllReligion(): Observable<Religion[]> {
|
||||||
|
return this.apiService.httpGet<Religion[]>('/ERBasic/getAllReligion');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Term
|
||||||
|
getTerm() {
|
||||||
|
return this.apiService.httpGet(this.apiService.base_url + '/getTerm');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// institution
|
||||||
|
getAllInstitutions(): Observable<Institution[]> {
|
||||||
|
return this.apiService.httpGet<Institution[]>('/ERBasic/getAllInstitutions');
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllResultTypesByStatus(status: EnumStatus): Observable<ResultType[]> {
|
||||||
|
return this.apiService.httpGet<ResultType[]>('/ERBasic/getAllResultTypesByStatus/' + status);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Discipline
|
||||||
|
getAllDiscipline(): Observable<Discipline[]> {
|
||||||
|
return this.apiService.httpGet<Discipline[]>('/ERBasic/getAllDiscipline');
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAllTrainingType(status: EnumStatus, code?: string, name?: string): any {
|
||||||
|
const nname = this.apiService.getApiDefaultData(name);
|
||||||
|
const ncode = this.apiService.getApiDefaultData(code);
|
||||||
|
return this.apiService.httpGet<TrainingType[]>('/ERBasic/GetAllTrainingType' + '/' + status + '/' + ncode +
|
||||||
|
'/' + nname);
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAllInstitues(status: EnumStatus, code?: string, name?: string): any {
|
||||||
|
const nname = this.apiService.getApiDefaultData(name);
|
||||||
|
const ncode = this.apiService.getApiDefaultData(code);
|
||||||
|
return this.apiService.httpGet<TrainingType[]>('/ERBasic/GetAllInstitues' + '/' + status + '/' + ncode +
|
||||||
|
'/' + nname);
|
||||||
|
}
|
||||||
|
GetTrainingybyTypeID(traininTypeID: number): any {
|
||||||
|
return this.apiService.httpGet<TrainingType[]>('/ERBasic/GetTrainingybyTypeID/' + traininTypeID);
|
||||||
|
}
|
||||||
|
|
||||||
|
getSurvey(): Observable<any[]> {
|
||||||
|
return this.apiService.httpGet<Religion[]>('/ERBasic/getAllReligion');
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllCountries(): Observable<any[]> {
|
||||||
|
return this.apiService.httpGet<any[]>('/ERBasic/getAllCountries');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
import { ApiService } from '../../app.api.service';
|
||||||
|
import { ErApplicantDoc, ErAppliedApplicant } from '../../_models/Applicant/applicant';
|
||||||
|
import { ErCircular } from '../../_models/circular_detail/CircularDetail';
|
||||||
|
import { EducationLevel } from '../../_models/education-level/education-level';
|
||||||
|
import { EnumStatus } from '../../_models/enums';
|
||||||
|
import { ErCV } from '../../_models/ercv-bank/ercv';
|
||||||
|
import { SurveyEmployee } from '../../_models/survey/survey';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class RecruitmentService {
|
||||||
|
|
||||||
|
constructor(public apiService: ApiService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getPublishItems() {
|
||||||
|
return this.apiService.httpGet<ErCircular[]>('/Recruitment/getrecruitmentpublish');
|
||||||
|
}
|
||||||
|
getByErCircularID(id:number) {
|
||||||
|
return this.apiService.httpGet<ErCircular>('/Recruitment/getByErCircularID'+'/'+id);
|
||||||
|
}
|
||||||
|
|
||||||
|
getErCirculatById(id:number) {
|
||||||
|
return this.apiService.httpGet<ErCircular>('/Recruitment/getErCirculatById'+'/'+id);
|
||||||
|
}
|
||||||
|
|
||||||
|
loginWithgoogle(param: any) {
|
||||||
|
return this.apiService.httpPostLoginWithGoogle<any>('/Authentication/loginWithGoogle', JSON.stringify(param));
|
||||||
|
}
|
||||||
|
|
||||||
|
saveCV(dtresult: ErCV) {
|
||||||
|
return this.apiService.httpPost<ErCV>('/Recruitment/saveErCV', dtresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
saveErAppliedApplicant(dtresult: ErAppliedApplicant) {
|
||||||
|
return this.apiService.httpPost<ErAppliedApplicant>('/Recruitment/saveErAppliedApplicant', dtresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
getJobUpdateByUserId(jobId: number) {
|
||||||
|
return this.apiService.httpGet<ErCircular>('/Recruitment/getJobUpdateByUserId' + '/' + jobId);
|
||||||
|
}
|
||||||
|
getRecruitementStepForOfferLetter(recruitmentId: number) {
|
||||||
|
return this.apiService.httpGet<boolean>('/Recruitment/getRecruitementStepForOfferLetter' + '/' + recruitmentId);
|
||||||
|
}
|
||||||
|
getApplicantDocByUserId(jobId: number) {
|
||||||
|
return this.apiService.httpGet<ErApplicantDoc>('/Recruitment/getApplicantDocByUserId' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
getJobApplicantByUserId(jobId: number) {
|
||||||
|
return this.apiService.httpGet<ErAppliedApplicant[]>('/Recruitment/getJobApplicantByUserId' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptOfferLetter(jobId: number) {
|
||||||
|
return this.apiService.httpGet<any>('/Recruitment/acceptOfferLetter' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
rejectOfferLetter(jobId: number, remarks:string) {
|
||||||
|
return this.apiService.httpGet<any>('/Recruitment/rejectOfferLetter' + '/' + jobId + '/' + remarks);
|
||||||
|
}
|
||||||
|
|
||||||
|
getJobApplicant(jobId: number) {
|
||||||
|
return this.apiService.httpGet<ErAppliedApplicant>('/Recruitment/getJobApplicant' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
IsUserHaveErCV(jobId: number) {
|
||||||
|
return this.apiService.httpGet<boolean>('/Recruitment/IsUserHaveErCV' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
getCvInformation(userId: number) {
|
||||||
|
return this.apiService.httpGet<ErCV>('/Recruitment/getCvInformation' + '/' + userId);
|
||||||
|
}
|
||||||
|
getSurveyEmployeebyJobId(jobId: number) {
|
||||||
|
return this.apiService.httpGet<SurveyEmployee[]>('/Recruitment/getSurveyEmployeebyJobId' + '/' + jobId);
|
||||||
|
}
|
||||||
|
getAllJobApplicantByUserId() {
|
||||||
|
return this.apiService.httpGet<ErAppliedApplicant[]>('/Recruitment/getAllJobApplicantByUserId');
|
||||||
|
}
|
||||||
|
|
||||||
|
getInterViewInforBycandidateId(jobId: number) {
|
||||||
|
return this.apiService.httpGet<any>('/Recruitment/getInterViewInforBycandidateId' + '/' + jobId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { ApiService } from '../../app.api.service';
|
||||||
|
import { EnumClaimRequsitionStatus } from '../../_models/enums';
|
||||||
|
import { Question, QuestionAnswerAttachment, QuestionCategory, Result, Survey, SurveyCategory, SurveyEmployee, SurveyResult } from '../../_models/survey/survey';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class SurveyService {
|
||||||
|
|
||||||
|
constructor(public apiService: ApiService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
getQuestionCategories() {
|
||||||
|
return this.apiService.httpGet<QuestionCategory[]>('/survey/getQuestionCategories');
|
||||||
|
}
|
||||||
|
saveQuestion(param: Question) {
|
||||||
|
return this.apiService.httpPost<any>('/survey/savequestion', param);
|
||||||
|
}
|
||||||
|
getByCategory(categoryId: number) {
|
||||||
|
return this.apiService.httpGet<Question[]>('/survey/GetByCategory' + '/' + categoryId);
|
||||||
|
}
|
||||||
|
getQuestionById(questionId: number) {
|
||||||
|
return this.apiService.httpGet<Question>('/survey/getQuestionById' + '/' + questionId);
|
||||||
|
}
|
||||||
|
getAllfilesQuestionById(questionId: number) {
|
||||||
|
return this.apiService.httpGet<QuestionAnswerAttachment[]>('/survey/getAllFilesById' + '/' + questionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
getSurveyCategories() {
|
||||||
|
return this.apiService.httpGet<SurveyCategory[]>('/survey/getSurveyCategories');
|
||||||
|
}
|
||||||
|
saveSurvey(param: Survey) {
|
||||||
|
return this.apiService.httpPost<any>('/survey/savesurvey', param);
|
||||||
|
}
|
||||||
|
|
||||||
|
getQuestionSetCategoryId(categoryId: number) {
|
||||||
|
return this.apiService.httpGet<Survey[]>('/survey/GetQuestionsByCategory' + '/' + categoryId);
|
||||||
|
}
|
||||||
|
getSurveyById(surveyId: number) {
|
||||||
|
return this.apiService.httpGet<Survey>('/survey/getSurveyById' + '/' + surveyId);
|
||||||
|
}
|
||||||
|
getSurveyService() {
|
||||||
|
return this.apiService.httpGet<Survey[]>('/survey/getQuestionCategories');
|
||||||
|
}
|
||||||
|
getQuestionSet() {
|
||||||
|
return this.apiService.httpGet<Survey[]>('/survey/getQuestionSet');
|
||||||
|
}
|
||||||
|
getQuestionsBySurveyId(surveyId: number) {
|
||||||
|
return this.apiService.httpGet<Survey[]>('/survey/getQuestionsBySurveyId' + '/' + surveyId);
|
||||||
|
}
|
||||||
|
|
||||||
|
saveSurveyResult(param: SurveyResult) {
|
||||||
|
return this.apiService.httpPost<any>('/survey/saveSurveyResult', param);
|
||||||
|
}
|
||||||
|
saveSurveyEmployee(param: SurveyEmployee) {
|
||||||
|
return this.apiService.httpPost<any>('/survey/saveSurveyEmployee', param);
|
||||||
|
}
|
||||||
|
getResultByCandidateID(surveyId: number,jobId:number) {
|
||||||
|
return this.apiService.httpGet<Result>('/survey/getResultByCandidateID' + '/' + surveyId + '/' + jobId);
|
||||||
|
}
|
||||||
|
checkDisconncetedSurveyEmployee(jobId: number, surveyId: number) {
|
||||||
|
return this.apiService.httpGet<SurveyEmployee>('/survey/checkDisconncetedSurveyEmployee' + '/' + jobId + '/' + surveyId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
261
Erecruitment.UI/ClientApp/src/app/app.api.service.ts
Normal file
261
Erecruitment.UI/ClientApp/src/app/app.api.service.ts
Normal file
|
@ -0,0 +1,261 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Observable, Subject, throwError } from 'rxjs';
|
||||||
|
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
||||||
|
import { catchError, retry } from 'rxjs/operators';
|
||||||
|
import { DatePipe } from '@angular/common';
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
|
||||||
|
export class ApiService {
|
||||||
|
|
||||||
|
// For Development
|
||||||
|
public static BASE_URL = 'https://localhost:44375/api';
|
||||||
|
public base_url = 'https://localhost:44375/api';
|
||||||
|
|
||||||
|
// For WeLink
|
||||||
|
/*public static BASE_URL = '/welinkventures/api';
|
||||||
|
public base_url = '/welinkventures/api';*/
|
||||||
|
|
||||||
|
// For BAT
|
||||||
|
/*public static BASE_URL = '/batDemo/api';
|
||||||
|
public base_url = '/batDemo/api';*/
|
||||||
|
|
||||||
|
// For Demo
|
||||||
|
/*public static BASE_URL = '/celDemo/api';
|
||||||
|
public base_url = '/celDemo/api';*/
|
||||||
|
|
||||||
|
// For LiFung App Test
|
||||||
|
//public base_url = '/lifungtest/api';
|
||||||
|
//public static BASE_URL = '/lifungtest/api';
|
||||||
|
|
||||||
|
// For Synovia Test
|
||||||
|
// public base_url = '/synovia/api';
|
||||||
|
// public static BASE_URL = '/synovia/api';
|
||||||
|
|
||||||
|
// For Synovia Live
|
||||||
|
// public base_url = '/synoviahr/api';
|
||||||
|
// public static BASE_URL = '/synoviahr/api';
|
||||||
|
|
||||||
|
// For BProperty Live
|
||||||
|
/*public base_url = '/api';
|
||||||
|
public static BASE_URL = '/api';*/
|
||||||
|
|
||||||
|
// For Azure
|
||||||
|
/*public static BASE_URL = '/api';
|
||||||
|
public base_url = '/api';*/
|
||||||
|
|
||||||
|
// For H&M Live
|
||||||
|
/*public base_url = '/hnm/api';
|
||||||
|
public static BASE_URL = '/hnm/api';*/
|
||||||
|
|
||||||
|
// For erecruitment
|
||||||
|
/*public base_url = '/erecruitment/api';
|
||||||
|
public static BASE_URL = '/erecruitment/api';*/
|
||||||
|
|
||||||
|
// public mobileAppDownloadLink = this.BASE_URL + 'MobileApp/Download';
|
||||||
|
|
||||||
|
|
||||||
|
public static AuthenticationToken = '';
|
||||||
|
public selectedMenuName: string = '';
|
||||||
|
constructor(public httpClient: HttpClient, public datepipe: DatePipe) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
createClientHeader(): { headers: HttpHeaders } {
|
||||||
|
let token = '';
|
||||||
|
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
token = `Bearer ${ApiService.AuthenticationToken}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const httpOptions = {
|
||||||
|
headers: new HttpHeaders({
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Authorization': token
|
||||||
|
})
|
||||||
|
|
||||||
|
};
|
||||||
|
return httpOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getApiDefaultData(str: string) {
|
||||||
|
return (str === undefined || str === null || str.trim() === '') ? null : str;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiDateString(dDate: Date) {
|
||||||
|
if (dDate === undefined || dDate === null) return dDate;
|
||||||
|
var str: string = this.datepipe.transform(dDate, 'dd-MMM-yyyy');
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
getApiDefaultIntData(intData: number) {
|
||||||
|
return (intData === undefined || intData === null) ? undefined : intData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public httpGet<T>(url: string, params?: any): Observable<T> {
|
||||||
|
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
options = options.append('Authorization', `Bearer ${ApiService.AuthenticationToken}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (params) {
|
||||||
|
const p = [];
|
||||||
|
for (const k in params) {
|
||||||
|
p.push((k + '=' + params[k]) as any);
|
||||||
|
}
|
||||||
|
url = url + '?' + (p.join('&'));
|
||||||
|
}
|
||||||
|
|
||||||
|
var endpoint: string;
|
||||||
|
return this.httpClient.get<T>(this.base_url + url, { headers: options, withCredentials: true });
|
||||||
|
|
||||||
|
// return this.http.get<T>(`${url}`, { headers: options, withCredentials: true });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public httpGetByKey<T>(url: string, key: any): Observable<T> {
|
||||||
|
return this.httpClient.get<T>(ApiService.BASE_URL + url + key, this.createClientHeader())
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleClientError)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public httpPost<T>(url: string, body: any): Observable<T> {
|
||||||
|
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
debugger;
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
options = options.append('Authorization', `Bearer ${ApiService.AuthenticationToken}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.httpClient.post<T>(this.base_url + url, body, { headers: options, withCredentials: true });
|
||||||
|
//return this.httpClient.post<T>(ApiService.BASE_URL + url, body, this.createClientHeader())
|
||||||
|
// .pipe(
|
||||||
|
// catchError(this.handleClientError)
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
|
||||||
|
public httpPostLoginWithGoogle<T>(url: string, body: any): Observable<T> {
|
||||||
|
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
return this.httpClient.post<T>(this.base_url + url, body, { headers: options, withCredentials: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
//public LoginWithGoogle(credentials: string): Observable<any> {
|
||||||
|
// const header = new HttpHeaders().set('Content-type', 'application/json');
|
||||||
|
// return this.httpClient.post(this.base_url + "/auth/loginWithGoogle", JSON.stringify(credentials), { headers: header });
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
public httpDelete<T>(url: string, key: any): Observable<T> {
|
||||||
|
return this.httpClient.delete<T>(ApiService.BASE_URL + url + key, this.createClientHeader())
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleClientError)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public httpPostFile(url: string, body: any): Observable<Blob> {
|
||||||
|
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
options = options.append('Authorization', `Bearer ${ApiService.AuthenticationToken}`);
|
||||||
|
}
|
||||||
|
return this.httpClient.post<Blob>(this.base_url + url, body, { headers: options, withCredentials: true })
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleClientError)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public httpPostBlob(url: string, body: any): Observable<any> {
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
//options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
//options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
options = new HttpHeaders();
|
||||||
|
options = options.append('Authorization', `Bearer ${ApiService.AuthenticationToken}`);
|
||||||
|
}
|
||||||
|
return this.httpClient.post<Blob>(this.base_url + url, body, { headers: options, withCredentials: true })
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleClientError)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public httpDownloadFile(url: string, body: any): Observable<Blob> {
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
//options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
//options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
if (ApiService.AuthenticationToken) {
|
||||||
|
options = new HttpHeaders();
|
||||||
|
options = options.append('Authorization', `Bearer ${ApiService.AuthenticationToken}`);
|
||||||
|
}
|
||||||
|
return this.httpClient.post<Blob>(this.base_url + url, body, { headers: options, withCredentials: true, responseType: 'blob' as 'json' })
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleClientError)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
public httpDownloadFileNew(url: string, body: any): Observable<Blob> {
|
||||||
|
|
||||||
|
var options: HttpHeaders;
|
||||||
|
if (!options) {
|
||||||
|
options = new HttpHeaders({ 'Content-Type': 'application/json;charset=utf-8' });
|
||||||
|
options = options.append('Accept', 'application/json');
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.httpClient.post<Blob>(this.base_url + url, body, { headers: options, withCredentials: true, responseType: 'blob' as 'json' });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public handleClientError(error: HttpErrorResponse) {
|
||||||
|
// return Observable.throw(error.message || 'An error has been occurred. Please try again or contact to system administrator');
|
||||||
|
return throwError(error.error || 'An error has been occurred. Please try again or contact to system administrator');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class PubSubService {
|
||||||
|
public subjects: Subject<any>[] = [];
|
||||||
|
|
||||||
|
publish(eventName: string) {
|
||||||
|
this.subjects[eventName] = this.subjects[eventName] || new Subject<any>();
|
||||||
|
this.subjects[eventName].next();
|
||||||
|
}
|
||||||
|
|
||||||
|
on(eventName: string): Observable<any> {
|
||||||
|
this.subjects[eventName] = this.subjects[eventName] || new Subject<any>();
|
||||||
|
return this.subjects[eventName].asObservable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Injectable()
|
||||||
|
export class BaseHrefService {
|
||||||
|
|
||||||
|
}
|
6
Erecruitment.UI/ClientApp/src/app/app.component.html
Normal file
6
Erecruitment.UI/ClientApp/src/app/app.component.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<body>
|
||||||
|
<app-nav-menu></app-nav-menu>
|
||||||
|
<div class="container">
|
||||||
|
<router-outlet></router-outlet>
|
||||||
|
</div>
|
||||||
|
</body>
|
9
Erecruitment.UI/ClientApp/src/app/app.component.ts
Normal file
9
Erecruitment.UI/ClientApp/src/app/app.component.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-root',
|
||||||
|
templateUrl: './app.component.html'
|
||||||
|
})
|
||||||
|
export class AppComponent {
|
||||||
|
title = 'app';
|
||||||
|
}
|
101
Erecruitment.UI/ClientApp/src/app/app.module.ts
Normal file
101
Erecruitment.UI/ClientApp/src/app/app.module.ts
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
import { DialogModule } from '@progress/kendo-angular-dialog';
|
||||||
|
import { DateInputsModule } from "@progress/kendo-angular-dateinputs";
|
||||||
|
import { AppComponent } from './app.component';
|
||||||
|
import { NavMenuComponent } from './nav-menu/nav-menu.component';
|
||||||
|
import { HomeComponent } from './home/home.component';
|
||||||
|
import { CounterComponent } from './counter/counter.component';
|
||||||
|
import { FetchDataComponent } from './fetch-data/fetch-data.component';
|
||||||
|
import { RecruitmentService } from '../app/_services/recruitment/recruitment.service';
|
||||||
|
import { DatePipe } from '@angular/common';
|
||||||
|
import { RecruitmentPublishComponent } from './recruitment-publish/recruitment-publish.component';
|
||||||
|
import { RecruitmentJobDetailsComponent } from './recruitment-job-details/recruitment-job-details.component';
|
||||||
|
/*import { AngularFontAwesomeModule } from 'angular-font-awesome';*/
|
||||||
|
import { ERCVBankComponent } from './ercv-bank/ercv-bank.component';
|
||||||
|
import { ERCVBankEducationComponent } from '../../src/app/ercv-bank/ercv-bank-education.component';
|
||||||
|
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
||||||
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
import { LayoutModule } from "@progress/kendo-angular-layout";
|
||||||
|
import { ERCVBankExperienceComponent } from './ercv-bank/ercv-bank-experience.component';
|
||||||
|
import { ERCVBankReferenceComponent } from './ercv-bank/ercv-bank-reference.component';
|
||||||
|
import { DatePickerModule } from '@progress/kendo-angular-dateinputs';
|
||||||
|
import { LabelModule } from "@progress/kendo-angular-label"
|
||||||
|
import { ERCVBankTrainingComponent } from './ercv-bank/ercv-bank-training.component';
|
||||||
|
import { LoginComponent } from '../app/login/login.component';
|
||||||
|
import { AuthService } from '../app/_services/auth/auth.service';
|
||||||
|
import { AuthGuard } from './_guards/auth.guard';
|
||||||
|
import { OnlineExamComponent } from './online-exam/online-exam.component';
|
||||||
|
import { SurveyService } from '../app/_services/survey/survey.service';
|
||||||
|
import { ExamResultComponent } from './exam-result/exam-result.component';
|
||||||
|
import { RejectPopupComponent } from './recruitment-job-details/reject-popup.component';
|
||||||
|
import { LoadingPanelModule } from './spinner/loading-panel.module'
|
||||||
|
//import { LoginPopupComponent } from '../app/login/login-popup.component';
|
||||||
|
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
AppComponent,
|
||||||
|
NavMenuComponent,
|
||||||
|
HomeComponent,
|
||||||
|
CounterComponent,
|
||||||
|
FetchDataComponent,
|
||||||
|
RecruitmentPublishComponent,
|
||||||
|
RecruitmentJobDetailsComponent,
|
||||||
|
ERCVBankComponent,
|
||||||
|
ERCVBankEducationComponent,
|
||||||
|
ERCVBankExperienceComponent,
|
||||||
|
ERCVBankReferenceComponent,
|
||||||
|
ERCVBankTrainingComponent,
|
||||||
|
LoginComponent,
|
||||||
|
OnlineExamComponent,
|
||||||
|
ExamResultComponent,
|
||||||
|
RejectPopupComponent,
|
||||||
|
//LoginPopupComponent
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),
|
||||||
|
HttpClientModule,
|
||||||
|
FormsModule,
|
||||||
|
ReactiveFormsModule,
|
||||||
|
LayoutModule,
|
||||||
|
DatePickerModule,
|
||||||
|
LabelModule,
|
||||||
|
BrowserAnimationsModule,
|
||||||
|
DialogModule,
|
||||||
|
LoadingPanelModule,
|
||||||
|
RouterModule.forRoot([
|
||||||
|
{ path: '', component: HomeComponent, pathMatch: 'full' },
|
||||||
|
// { path: '', component: RecruitmentPublishComponent, pathMatch: 'full' },
|
||||||
|
{ path: 'login', component: LoginComponent },
|
||||||
|
{ path: 'counter', component: CounterComponent },
|
||||||
|
{ path: 'fetch-data', component: FetchDataComponent },
|
||||||
|
{ path: 'recruitment-publish', component: RecruitmentPublishComponent },
|
||||||
|
{ path: 'job-details/:id', component: RecruitmentJobDetailsComponent },
|
||||||
|
{ path: 'ercv-bank', component: ERCVBankComponent, canActivate: [AuthGuard] },
|
||||||
|
{ path: 'online-exam', component: OnlineExamComponent, canActivate: [AuthGuard]},
|
||||||
|
{ path: 'exam-result', component: ExamResultComponent, canActivate: [AuthGuard] },
|
||||||
|
{ path: 'reject-reason', component: RejectPopupComponent, canActivate: [AuthGuard]},
|
||||||
|
{ path: 'home', component: HomeComponent, canActivate: [AuthGuard]},
|
||||||
|
|
||||||
|
], { relativeLinkResolution: 'legacy' }),
|
||||||
|
DropDownsModule
|
||||||
|
|
||||||
|
],
|
||||||
|
providers: [RecruitmentService, DatePipe, AuthService, SurveyService],
|
||||||
|
bootstrap: [AppComponent]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
constructor() {
|
||||||
|
this.overrideDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
overrideDate() {
|
||||||
|
Date.prototype.toJSON = function (key) {
|
||||||
|
return this.toLocaleDateString('en-US') + ' ' + this.toLocaleTimeString('en-US');
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
11
Erecruitment.UI/ClientApp/src/app/app.server.module.ts
Normal file
11
Erecruitment.UI/ClientApp/src/app/app.server.module.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { ServerModule } from '@angular/platform-server';
|
||||||
|
import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
|
||||||
|
import { AppComponent } from './app.component';
|
||||||
|
import { AppModule } from './app.module';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [AppModule, ServerModule, ModuleMapLoaderModule],
|
||||||
|
bootstrap: [AppComponent]
|
||||||
|
})
|
||||||
|
export class AppServerModule { }
|
|
@ -0,0 +1,7 @@
|
||||||
|
<h1>Counter</h1>
|
||||||
|
|
||||||
|
<p>This is a simple example of an Angular component.</p>
|
||||||
|
|
||||||
|
<p aria-live="polite">Current count: <strong>{{ currentCount }}</strong></p>
|
||||||
|
|
||||||
|
<button class="btn btn-primary" (click)="incrementCounter()">Increment</button>
|
|
@ -0,0 +1,34 @@
|
||||||
|
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { CounterComponent } from './counter.component';
|
||||||
|
|
||||||
|
describe('CounterComponent', () => {
|
||||||
|
let fixture: ComponentFixture<CounterComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ CounterComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(CounterComponent);
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should display a title', waitForAsync(() => {
|
||||||
|
const titleText = fixture.nativeElement.querySelector('h1').textContent;
|
||||||
|
expect(titleText).toEqual('Counter');
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should start with count 0, then increments by 1 when clicked', waitForAsync(() => {
|
||||||
|
const countElement = fixture.nativeElement.querySelector('strong');
|
||||||
|
expect(countElement.textContent).toEqual('0');
|
||||||
|
|
||||||
|
const incrementButton = fixture.nativeElement.querySelector('button');
|
||||||
|
incrementButton.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(countElement.textContent).toEqual('1');
|
||||||
|
}));
|
||||||
|
});
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-counter-component',
|
||||||
|
templateUrl: './counter.component.html'
|
||||||
|
})
|
||||||
|
export class CounterComponent {
|
||||||
|
public currentCount = 0;
|
||||||
|
|
||||||
|
public incrementCounter() {
|
||||||
|
this.currentCount++;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
<form [formGroup]="generalForm">
|
||||||
|
<div class="card border">
|
||||||
|
<h5 class="card-header border-light" style="background-color:#DBDBDB">Academic {{indexNum}}</h5>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row" *ngIf="isEditActive">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="editClick();">
|
||||||
|
<i class="fa fa-save"></i> Edit
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="degreeTitle" class="label" style="margin-left:6px;">Education Level</label>
|
||||||
|
<kendo-dropdownlist class="form-control form-control-sm" id="degreeTitle"
|
||||||
|
[data]="educationLevels"
|
||||||
|
[defaultItem]="{ description: 'Select a level', id: null }"
|
||||||
|
[textField]="'description'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
[(ngModel)]="element.degreeTitleID"
|
||||||
|
(valueChange)="onChangeList($event)"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
style="width:100%;"
|
||||||
|
formControlName="degreeTitleID">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="degreeTitle" class="label" style="margin-left:6px;">Exam/Degree Title</label>
|
||||||
|
<input type="text" class="form-control" id="degreeTitle" formControlName="degreeTitle" [(ngModel)]="element.degreeTitle" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4" *ngIf="isFixedSubject=== false">
|
||||||
|
<label for="concentration" class="label">Concentration / Major</label>
|
||||||
|
<kendo-autocomplete class="form-control form-control-sm"
|
||||||
|
id="concentration" [data]="disciplines" [valueField]="'description'" [(ngModel)]="element.concentration" formControlName="concentration" [readonly]="isEditActive" style="width:100%">
|
||||||
|
<ng-template kendoAutoCompleteItemTemplate let-dataItem>
|
||||||
|
<span>{{ dataItem.description }}</span>
|
||||||
|
</ng-template>
|
||||||
|
</kendo-autocomplete>
|
||||||
|
<!--<input type="text" class="form-control" id="instituteName" formControlName="concentration" [(ngModel)]="element.instituteName" [readonly]="isEditActive">-->
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4" *ngIf="isFixedSubject=== true">
|
||||||
|
<label for="subject" class="label" style="margin-left:6px;">Subject</label>
|
||||||
|
<kendo-dropdownlist class="form-control form-control-sm" id="subject"
|
||||||
|
[data]="disciplines"
|
||||||
|
[defaultItem]="{ description: 'Select a discipline', id: null }"
|
||||||
|
[textField]="'description'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
[(ngModel)]="element.disciplineID"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
style="width:100%"
|
||||||
|
formControlName="subject">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4" *ngIf="isBoard=== true">
|
||||||
|
<label for="board" class="label" style="margin-left:6px;">Board</label>
|
||||||
|
<kendo-dropdownlist class="form-control form-control-sm" id="board"
|
||||||
|
[data]="institutions"
|
||||||
|
[defaultItem]="{name: 'Select Board', id: null }"
|
||||||
|
[textField]="'name'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
[(ngModel)]="element.boardID"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
style="width:100%;"
|
||||||
|
formControlName="board">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="instituteName" class="label">Institute Name</label>
|
||||||
|
<input type="text" class="form-control" id="instituteName" formControlName="instituteName" [(ngModel)]="element.instituteName" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="passingyear" class="label">Passing Year</label>
|
||||||
|
<input type="text" class="form-control" id="passingyear" formControlName="passingyear" [(ngModel)]="element.passingYear" [readonly]="isEditActive">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="result" class="label" style="margin-left:6px;">Result</label>
|
||||||
|
<kendo-dropdownlist class="form-control form-control-sm" id="result"
|
||||||
|
[data]="results"
|
||||||
|
[defaultItem]="{description: 'Select Result Type', id: null }"
|
||||||
|
[textField]="'description'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
[(ngModel)]="element.resultID"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
(valueChange)="onResultTypeChangeList($event)"
|
||||||
|
style="width:100%"
|
||||||
|
formControlName="result">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
<div *ngIf="generalForm.get('result').invalid">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="cgpa" class="label">{{resultTypeName}}</label>
|
||||||
|
<input type="text" class="form-control" id="cgpa" formControlName="cgpa" [(ngModel)]="element.cgpa" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4" *ngIf="isCGPA===true">
|
||||||
|
<label for="outof" class="label">Out Of</label>
|
||||||
|
<input type="text" class="form-control" id="outof" formControlName="outof" [(ngModel)]="element.outOF" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="duration" class="label">Duration</label>
|
||||||
|
<input type="text" class="form-control" id="duration" formControlName="duration" [(ngModel)]="element.duration" [readonly]="isEditActive">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="achievement" class="label">Achievement</label>
|
||||||
|
<input type="text" class="form-control" id="passingyear" formControlName="achievement" [(ngModel)]="element.achievement" [readonly]="isEditActive">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="margin-left:12px;margin-right:12px;background-color:#2c3e50;border-color:black" [hidden]="!isEditable">
|
||||||
|
<i class="fa fa-times"></i> Close
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="educationSave();" [hidden]="!isEditable" [disabled]="!generalForm.valid">
|
||||||
|
<i class="fa fa-save"></i> Save
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
|
@ -0,0 +1,278 @@
|
||||||
|
import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';
|
||||||
|
import { FormGroup, FormControl, Validators, AbstractControl, FormArray } from '@angular/forms';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { EducationLevel } from '../_models/education-level/education-level';
|
||||||
|
import { EnumExtension, EnumGender, EnumMaritalStatus, EnumStatus } from '../_models/enums';
|
||||||
|
import { ErCVEducation } from '../_models/ercv-bank/ercv';
|
||||||
|
import { RecruitmentService } from '../_services/recruitment/recruitment.service';
|
||||||
|
import { BasicService } from '../_services/basic.service';
|
||||||
|
import { Discipline } from '../_models/discipline/discipline';
|
||||||
|
import { Institution } from '../_models/institutions/institution';
|
||||||
|
import { ResultType } from '../_models/HRBasic/result-type';
|
||||||
|
import { Religion } from '../_models/HRBasic/religion';
|
||||||
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-ercv-bank-education',
|
||||||
|
templateUrl: './ercv-bank-education.component.html',
|
||||||
|
styles: [
|
||||||
|
`
|
||||||
|
.form-group label{
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
.form-control.error .k-dropdown-wrap {
|
||||||
|
border-color: red;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
]
|
||||||
|
})
|
||||||
|
/* cv-bank component*/
|
||||||
|
export class ERCVBankEducationComponent implements OnInit, OnChanges {
|
||||||
|
@Output() saveHandler = new EventEmitter<ErCVEducation>();
|
||||||
|
@Output() editHandler = new EventEmitter<ErCVEducation>();
|
||||||
|
@Input() public set InputObject(InputObject:ErCVEducation) {
|
||||||
|
debugger;
|
||||||
|
if (InputObject !== undefined && InputObject !== null) {
|
||||||
|
this.payload = new ErCVEducation();
|
||||||
|
this.payload = InputObject;
|
||||||
|
this.onChangeList(this.payload.degreeTitleID);
|
||||||
|
this.onResultTypeChangeList(this.payload.resultID);
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
} else {
|
||||||
|
debugger;
|
||||||
|
this.element = new ErCVEducation();
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// _val: Subject<ErCVEducation> = new Subject();
|
||||||
|
@Input() public set index(index: number) {
|
||||||
|
this.indexNum = index+1;
|
||||||
|
}
|
||||||
|
@Input() public set acaFormId(id: number) {
|
||||||
|
this.refId = id;
|
||||||
|
console.log(id);
|
||||||
|
}
|
||||||
|
indexNum: number;
|
||||||
|
refId: number = 0;
|
||||||
|
generalForm: FormGroup;
|
||||||
|
personalDetailForm: FormGroup;
|
||||||
|
isExpand: boolean = true;
|
||||||
|
genderType: any = EnumExtension.getNamesAndValues(EnumGender);
|
||||||
|
collections: ErCVEducation[] = [];
|
||||||
|
educationLevels: EducationLevel[] = [];
|
||||||
|
disciplines: Discipline[] = [];
|
||||||
|
institutions: Institution[] = [];
|
||||||
|
results: ResultType[] = [];
|
||||||
|
maritalStatusTypes: any = EnumExtension.getNamesAndValues(EnumMaritalStatus);
|
||||||
|
religions: Religion[] = [];
|
||||||
|
isEducationalDetail: boolean = true;
|
||||||
|
isFixedSubject: boolean = false;
|
||||||
|
isBoard: boolean = false;
|
||||||
|
id: number = 0;
|
||||||
|
isRequirementAdd: boolean = true;
|
||||||
|
teminals: FormArray;
|
||||||
|
element: ErCVEducation;
|
||||||
|
payload: ErCVEducation;
|
||||||
|
isEditable: boolean;
|
||||||
|
isEditActive: boolean;
|
||||||
|
resultTypeName: string="CGPA";
|
||||||
|
isEditForListClick: boolean = false
|
||||||
|
isCGPA: boolean = true;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public recruitmentService: RecruitmentService,
|
||||||
|
public basicService: BasicService
|
||||||
|
) {
|
||||||
|
this.loadForm();
|
||||||
|
this.loadEducationLevel();
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnChanges() {
|
||||||
|
if (this.InputObject !== undefined && this.InputObject !== null) {
|
||||||
|
this.payload = new ErCVEducation();
|
||||||
|
this.payload = this.InputObject;
|
||||||
|
this.onChangeList(this.payload.degreeTitleID);
|
||||||
|
this.onResultTypeChangeList(this.payload.resultID);
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
} else {
|
||||||
|
debugger;
|
||||||
|
this.element = new ErCVEducation();
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadForm() {
|
||||||
|
this.generalForm = new FormGroup({
|
||||||
|
degreeTitleID: new FormControl('', Validators.required),
|
||||||
|
degreeTitle: new FormControl(''),
|
||||||
|
outof: new FormControl('', Validators.required),
|
||||||
|
discipline: new FormControl(''),
|
||||||
|
board: new FormControl(''),
|
||||||
|
result: new FormControl('', Validators.required),
|
||||||
|
cgpa: new FormControl('', Validators.required),
|
||||||
|
instituteName: new FormControl(),
|
||||||
|
concentration: new FormControl(),
|
||||||
|
subject: new FormControl(''),
|
||||||
|
passingyear: new FormControl('', Validators.required),
|
||||||
|
duration: new FormControl(),
|
||||||
|
achievement: new FormControl()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
loadEducationLevel() {
|
||||||
|
this.basicService.getAllEducationLevel().subscribe(
|
||||||
|
(resp: any) => {
|
||||||
|
this.educationLevels = resp;
|
||||||
|
},
|
||||||
|
(err: any) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.loadDisciplines();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
onChangeList(event: any) {
|
||||||
|
if (this.educationLevels !== undefined) {
|
||||||
|
const temp = this.educationLevels.find(y => y.id == event);
|
||||||
|
if (temp !== undefined) {
|
||||||
|
if (temp.educationType.fixedSubject === true) {
|
||||||
|
this.isFixedSubject = true;
|
||||||
|
this.generalForm.controls['subject'].setValidators([Validators.required]);
|
||||||
|
this.generalForm.get('subject').updateValueAndValidity();
|
||||||
|
} else {
|
||||||
|
this.isFixedSubject = false;
|
||||||
|
this.generalForm.controls['subject'].clearValidators();
|
||||||
|
this.generalForm.get('subject').updateValueAndValidity();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp.educationType.boardRequired === true) {
|
||||||
|
this.isBoard = true;
|
||||||
|
this.generalForm.controls['board'].setValidators([Validators.required]);
|
||||||
|
this.generalForm.get('board').updateValueAndValidity();
|
||||||
|
} else {
|
||||||
|
this.isBoard = false;
|
||||||
|
this.generalForm.controls['board'].clearValidators();
|
||||||
|
this.generalForm.get('board').updateValueAndValidity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onResultTypeChangeList(event: any) {
|
||||||
|
if (this.results !== undefined) {
|
||||||
|
const temp = this.results.find(y => y.id === event);
|
||||||
|
if (temp !== undefined) {
|
||||||
|
debugger;
|
||||||
|
if (temp.cgpa === true) {
|
||||||
|
this.resultTypeName = "Cgpa";
|
||||||
|
this.isCGPA = true;
|
||||||
|
this.generalForm.controls['outof'].setValidators([Validators.required]);
|
||||||
|
this.generalForm.get('outof').updateValueAndValidity();
|
||||||
|
} else {
|
||||||
|
this.resultTypeName = "Marks(%)";
|
||||||
|
this.isCGPA = false;
|
||||||
|
this.generalForm.controls['outof'].clearValidators();
|
||||||
|
this.generalForm.get('outof').updateValueAndValidity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadDisciplines() {
|
||||||
|
this.basicService.getAllDiscipline().subscribe(
|
||||||
|
(resp: any) => {
|
||||||
|
this.disciplines = resp;
|
||||||
|
},
|
||||||
|
(err: any) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.loadInstitutions();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadInstitutions() {
|
||||||
|
this.basicService.getAllInstitutions().subscribe(
|
||||||
|
(resp: any) => {
|
||||||
|
this.institutions = resp;
|
||||||
|
},
|
||||||
|
(err: any) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.loadResults();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadResults() {
|
||||||
|
this.basicService.getAllResultTypesByStatus(EnumStatus.Active).subscribe(
|
||||||
|
(resp: any) => {
|
||||||
|
this.results = resp;
|
||||||
|
},
|
||||||
|
(err: any) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.loadReligion();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
loadReligion() {
|
||||||
|
this.basicService.getAllReligion().subscribe(
|
||||||
|
(resp: any) => {
|
||||||
|
this.religions = resp;
|
||||||
|
},
|
||||||
|
(err: any) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
if (this.payload !== undefined && this.payload !== null) {
|
||||||
|
this.element = this.payload;
|
||||||
|
this.onChangeList(this.element.degreeTitleID);
|
||||||
|
this.onResultTypeChangeList(this.payload.resultID);
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
if (this.payload !== undefined && this.payload !== null) {
|
||||||
|
this.element = new ErCVEducation();
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
educationSave() {
|
||||||
|
this.element.id = (this.refId === undefined || this.refId === null || this.refId===0) ? this.indexNum : this.refId;
|
||||||
|
debugger;
|
||||||
|
if (this.isEditForListClick === true) {
|
||||||
|
this.editHandler.emit(this.element);
|
||||||
|
} else {
|
||||||
|
this.saveHandler.emit(this.element);
|
||||||
|
this.element = new ErCVEducation();
|
||||||
|
}
|
||||||
|
this.isEditForListClick = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//educationEdit() {
|
||||||
|
// this.enterEdit.emit(this.element);
|
||||||
|
//}
|
||||||
|
|
||||||
|
editClick() {
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
this.isEditForListClick = true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
<form [formGroup]="cvExperienceForm">
|
||||||
|
<div class="card border">
|
||||||
|
<h5 class="card-header border-light" style="background-color:#DBDBDB">Experience {{indexNum}}</h5>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row" *ngIf="isEditActive">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="editClick();">
|
||||||
|
<i class="fa fa-save"></i> Edit
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="employeer" class="label">Employeer</label>
|
||||||
|
<input type="text" class="form-control" id="employeer" formControlName="employeer" [(ngModel)]="element.employeer" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="contactPerson" class="label">Contact Person</label>
|
||||||
|
<input type="text" class="form-control" id="contactPerson" formControlName="contactPerson" [(ngModel)]="element.contactPerson" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="address" class="label">Address</label>
|
||||||
|
<textarea class="form-control input-group-sm" id="name" formControlName="address" [(ngModel)]="element.address" rows="2"
|
||||||
|
type="text"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="industry" class="label">Industry/Business Person</label>
|
||||||
|
<input type="text" class="form-control" id="industry" formControlName="industry" [(ngModel)]="element.industry" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="desigantion" class="label">Designation</label>
|
||||||
|
<input type="text" class="form-control" id="desigantion" formControlName="desigantion" [(ngModel)]="element.designation" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="desigantion" class="label">Modile/Phone</label>
|
||||||
|
<input type="text" class="form-control" id="mobile" formControlName="mobile" [(ngModel)]="element.mobile" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="fromdate" class="label">From Date</label>
|
||||||
|
<kendo-datepicker id="fromDate" [(ngModel)]="element.fromDate" formControlName="fromDate" class="form-control input-group-sm" style="width:100%; margin-left:4px;" [readonly]="isEditActive">
|
||||||
|
</kendo-datepicker>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="toDate" class="label">To Date</label>
|
||||||
|
<kendo-datepicker id="toDate" [(ngModel)]="element.toDate" formControlName="toDate" class="form-control input-group-sm" style="width:100%; margin-left:4px;" [readonly]="isEditActive">
|
||||||
|
</kendo-datepicker>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="role" class="label">Role</label>
|
||||||
|
<textarea class="form-control input-group-sm" id="role" formControlName="role" rows="2" [(ngModel)]="element.roleDefination" [readonly]="isEditActive"
|
||||||
|
type="text"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="margin-left:12px;background-color:#2c3e50;border-color:black" [hidden]="!isEditable">
|
||||||
|
<i class="fa fa-times"></i> Close
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="experienceSave();" [hidden]="!isEditable">
|
||||||
|
<i class="fa fa-save"></i> Save
|
||||||
|
</button>
|
||||||
|
<!--<button class="btn btn-sm btn-primary pull-right" (click)="educationEdit();">
|
||||||
|
<i class="fa fa-save"></i> Edit
|
||||||
|
</button>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
|
@ -0,0 +1,117 @@
|
||||||
|
import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
||||||
|
import { FormGroup, FormControl, Validators, AbstractControl, FormArray } from '@angular/forms';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { EducationLevel } from '../_models/education-level/education-level';
|
||||||
|
import { EnumExtension, EnumGender, EnumMaritalStatus, EnumStatus } from '../_models/enums';
|
||||||
|
import { ErCVEducation, ErCVExperience } from '../_models/ercv-bank/ercv';
|
||||||
|
import { RecruitmentService } from '../_services/recruitment/recruitment.service';
|
||||||
|
import { BasicService } from '../_services/basic.service';
|
||||||
|
import { Discipline } from '../_models/discipline/discipline';
|
||||||
|
import { Institution } from '../_models/institutions/institution';
|
||||||
|
import { ResultType } from '../_models/HRBasic/result-type';
|
||||||
|
import { Religion } from '../_models/HRBasic/religion';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-ercv-bank-experience',
|
||||||
|
templateUrl: './ercv-bank-experience.component.html',
|
||||||
|
styles: [
|
||||||
|
`
|
||||||
|
.form-group label{
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
]
|
||||||
|
})
|
||||||
|
/* cv-bank component*/
|
||||||
|
export class ERCVBankExperienceComponent implements OnInit {
|
||||||
|
@Output() saveExperienceHandler = new EventEmitter<ErCVExperience>();
|
||||||
|
@Output() editExperienceHandler = new EventEmitter<ErCVExperience>();
|
||||||
|
@Input() public set InputObject(InputObject: ErCVExperience) {
|
||||||
|
debugger;
|
||||||
|
if (InputObject !== undefined && InputObject !== null) {
|
||||||
|
this.payload = new ErCVExperience();
|
||||||
|
this.payload = InputObject;
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
} else {
|
||||||
|
this.element = new ErCVExperience();
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Input() public set index(index: number) {
|
||||||
|
this.indexNum = index + 1;
|
||||||
|
}
|
||||||
|
@Input() public set expFormId(id: number) {
|
||||||
|
this.refId = id;
|
||||||
|
console.log(id);
|
||||||
|
}
|
||||||
|
id: number = 0;
|
||||||
|
indexNum: number;
|
||||||
|
refId: number;
|
||||||
|
cvExperienceForm: FormGroup;
|
||||||
|
personalDetailForm: FormGroup;
|
||||||
|
genderType: any = EnumExtension.getNamesAndValues(EnumGender);
|
||||||
|
maritalStatusTypes: any = EnumExtension.getNamesAndValues(EnumMaritalStatus);
|
||||||
|
teminals: FormArray;
|
||||||
|
element: ErCVExperience;
|
||||||
|
payload: ErCVExperience;
|
||||||
|
isEditable: boolean;
|
||||||
|
isEditActive: boolean;
|
||||||
|
isEditForListClick: boolean = false;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public recruitmentService: RecruitmentService,
|
||||||
|
public basicService: BasicService
|
||||||
|
) {
|
||||||
|
this.loadForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
loadForm() {
|
||||||
|
this.cvExperienceForm = new FormGroup({
|
||||||
|
employeer: new FormControl('', Validators.required),
|
||||||
|
contactPerson: new FormControl(),
|
||||||
|
address: new FormControl(),
|
||||||
|
industry: new FormControl(),
|
||||||
|
desigantion: new FormControl('', Validators.required),
|
||||||
|
role: new FormControl(),
|
||||||
|
fromDate: new FormControl('', Validators.required),
|
||||||
|
toDate: new FormControl('', Validators.required),
|
||||||
|
mobile: new FormControl('', Validators.required)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.element = new ErCVExperience();
|
||||||
|
//this.element.fromDate = new Date();
|
||||||
|
//this.element.toDate = new Date();
|
||||||
|
//this.element.fromDate.setFullYear(this.element.fromDate.getFullYear() + 1);
|
||||||
|
if (this.payload !== undefined && this.payload !== null) {
|
||||||
|
this.element = this.payload;
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
experienceSave() {
|
||||||
|
this.element.id = (this.refId === undefined || this.refId === null || this.refId === 0) ? this.indexNum : this.refId;
|
||||||
|
debugger;
|
||||||
|
if (this.isEditForListClick === true) {
|
||||||
|
this.editExperienceHandler.emit(this.element);
|
||||||
|
} else {
|
||||||
|
this.saveExperienceHandler.emit(this.element);
|
||||||
|
this.element = new ErCVExperience();
|
||||||
|
}
|
||||||
|
this.isEditForListClick = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
editClick() {
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
this.isEditForListClick = true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
<form [formGroup]="cvReferenceForm">
|
||||||
|
<div class="card border">
|
||||||
|
<h5 class="card-header border-light" style="background-color:#DBDBDB">Reference {{indexNum}}</h5>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row" *ngIf="isEditActive">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="editClick();">
|
||||||
|
<i class="fa fa-save"></i> Edit
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="name" class="label">Name</label>
|
||||||
|
<input type="text" class="form-control" id="name" formControlName="name" [(ngModel)]="element.name" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="occupation" class="label">Occupation</label>
|
||||||
|
<kendo-dropdownlist [(ngModel)]="element.occupation"
|
||||||
|
[data]="occupations"
|
||||||
|
[defaultItem]="{ description: 'Select', value: null }"
|
||||||
|
[textField]="'description'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
style="width:100%"
|
||||||
|
class="form-control form-control-sm input-sm"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
formControlName="occupation">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
<!--<input type="text" class="form-control" id="occupation" formControlName="occupation" [(ngModel)]="element.occupation" [readonly]="isEditActive">-->
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="relation" class="label">Relation</label>
|
||||||
|
<kendo-dropdownlist [(ngModel)]="element.relation"
|
||||||
|
[data]="relations"
|
||||||
|
[defaultItem]="{ description: 'Select', value: null }"
|
||||||
|
[textField]="'description'"
|
||||||
|
[valueField]="'id'"
|
||||||
|
[valuePrimitive]="true"
|
||||||
|
style="width:100%"
|
||||||
|
class="form-control form-control-sm input-sm"
|
||||||
|
[disabled]="isEditActive"
|
||||||
|
formControlName="relation">
|
||||||
|
</kendo-dropdownlist>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="email" class="label">Email</label>
|
||||||
|
<input type="text" class="form-control" id="email" formControlName="email" [(ngModel)]="element.email" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="mobile" class="label">Mobile</label>
|
||||||
|
<input type="text" class="form-control" id="mobile" formControlName="mobile" [(ngModel)]="element.mobile" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="telephone" class="label">Telephone</label>
|
||||||
|
<input type="text" class="form-control" id="telephone" formControlName="telephone" [(ngModel)]="element.telephone" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="address" class="label">Address</label>
|
||||||
|
<input type="text" class="form-control" id="address" formControlName="address" [(ngModel)]="element.address" [readonly]="isEditActive">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group mt-2 col-md-12">
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="margin-left:12px;background-color:#2c3e50;border-color:black" [hidden]="!isEditable">
|
||||||
|
<i class="fa fa-times"></i> Close
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-primary pull-right" style="background-color:#2c3e50;border-color:black" (click)="referenceSave();" [hidden]="!isEditable">
|
||||||
|
<i class="fa fa-save"></i> Save
|
||||||
|
</button>
|
||||||
|
<!--<button class="btn btn-sm btn-primary pull-right" (click)="educationEdit();">
|
||||||
|
<i class="fa fa-save"></i> Edit
|
||||||
|
</button>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
|
@ -0,0 +1,156 @@
|
||||||
|
import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
||||||
|
import { FormGroup, FormControl, Validators, AbstractControl, FormArray } from '@angular/forms';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { EducationLevel } from '../_models/education-level/education-level';
|
||||||
|
import { EnumExtension, EnumGender, EnumMaritalStatus, EnumStatus } from '../_models/enums';
|
||||||
|
import { ErCVEducation, ErCVExperience, ErCVReference } from '../_models/ercv-bank/ercv';
|
||||||
|
import { RecruitmentService } from '../_services/recruitment/recruitment.service';
|
||||||
|
import { BasicService } from '../_services/basic.service';
|
||||||
|
import { Discipline } from '../_models/discipline/discipline';
|
||||||
|
import { Institution } from '../_models/institutions/institution';
|
||||||
|
import { ResultType } from '../_models/HRBasic/result-type';
|
||||||
|
import { Religion } from '../_models/HRBasic/religion';
|
||||||
|
import { Occupation } from '../_models/HRBasic/occupation';
|
||||||
|
import { Relation } from '../_models/HRBasic/relation';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-ercv-bank-reference',
|
||||||
|
templateUrl: './ercv-bank-reference.component.html',
|
||||||
|
styles: [
|
||||||
|
`
|
||||||
|
.form-group label{
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
]
|
||||||
|
})
|
||||||
|
/* cv-bank component*/
|
||||||
|
export class ERCVBankReferenceComponent implements OnInit {
|
||||||
|
@Output() saveReferenceHandler = new EventEmitter<ErCVReference>();
|
||||||
|
@Output() editReferenceHandler = new EventEmitter<ErCVReference>();
|
||||||
|
@Input() public set InputObject(InputObject: ErCVReference) {
|
||||||
|
debugger;
|
||||||
|
if (InputObject !== undefined && InputObject !== null) {
|
||||||
|
this.payload = new ErCVReference();
|
||||||
|
this.payload = InputObject;
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
} else {
|
||||||
|
this.element = new ErCVReference();
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
id: number = 0;
|
||||||
|
@Input() public set index(index: number) {
|
||||||
|
this.indexNum = index + 1;
|
||||||
|
}
|
||||||
|
@Input() public set refFormId(id: number) {
|
||||||
|
this.refId = id;
|
||||||
|
console.log(id);
|
||||||
|
}
|
||||||
|
indexNum: number;
|
||||||
|
refId: number;
|
||||||
|
cvReferenceForm: FormGroup;
|
||||||
|
personalDetailForm: FormGroup;
|
||||||
|
isExpand: boolean = true;
|
||||||
|
genderType: any = EnumExtension.getNamesAndValues(EnumGender);
|
||||||
|
educationLevels: EducationLevel[] = [];
|
||||||
|
disciplines: Discipline[] = [];
|
||||||
|
institutions: Institution[] = [];
|
||||||
|
results: ResultType[] = [];
|
||||||
|
maritalStatusTypes: any = EnumExtension.getNamesAndValues(EnumMaritalStatus);
|
||||||
|
religions: Religion[] = [];
|
||||||
|
occupations: Occupation[] = [];
|
||||||
|
relations: Relation[] = [];
|
||||||
|
isEducationalDetail: boolean = true;
|
||||||
|
isRequirementAdd: boolean = true;
|
||||||
|
|
||||||
|
element: ErCVReference;
|
||||||
|
payload: ErCVReference;
|
||||||
|
isEditable: boolean;
|
||||||
|
isEditActive: boolean;
|
||||||
|
isEditForListClick: boolean = false;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public recruitmentService: RecruitmentService,
|
||||||
|
public basicService: BasicService
|
||||||
|
) {
|
||||||
|
this.loadForm();
|
||||||
|
this.loadOccupations();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
loadForm() {
|
||||||
|
this.cvReferenceForm = new FormGroup({
|
||||||
|
name: new FormControl('', Validators.required),
|
||||||
|
occupation: new FormControl('', Validators.required),
|
||||||
|
relation: new FormControl('', Validators.required),
|
||||||
|
email: new FormControl(),
|
||||||
|
mobile: new FormControl(),
|
||||||
|
role: new FormControl(),
|
||||||
|
address: new FormControl(),
|
||||||
|
telephone: new FormControl()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
loadOccupations() {
|
||||||
|
this.basicService.getAllOccupation().subscribe(
|
||||||
|
(resp) => {
|
||||||
|
this.occupations = resp;
|
||||||
|
},
|
||||||
|
(x) => {
|
||||||
|
console.log(x);
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
this.loadAllRelations();
|
||||||
|
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
loadAllRelations() {
|
||||||
|
this.basicService.getAllRelations().subscribe(
|
||||||
|
(resp) => {
|
||||||
|
this.relations = resp;
|
||||||
|
},
|
||||||
|
(x) => {
|
||||||
|
console.log(x);
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
if (this.payload !== undefined && this.payload !== null) {
|
||||||
|
this.element = this.payload;
|
||||||
|
this.isEditable = false;
|
||||||
|
this.isEditActive = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.element = new ErCVReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
referenceSave() {
|
||||||
|
this.element.id = (this.refId === undefined || this.refId === null || this.refId === 0) ? this.indexNum : this.refId;
|
||||||
|
debugger;
|
||||||
|
if (this.isEditForListClick === true) {
|
||||||
|
this.editReferenceHandler.emit(this.element);
|
||||||
|
} else {
|
||||||
|
this.saveReferenceHandler.emit(this.element);
|
||||||
|
this.element = new ErCVReference();
|
||||||
|
}
|
||||||
|
this.isEditForListClick = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
editClick() {
|
||||||
|
this.isEditable = true;
|
||||||
|
this.isEditActive = false;
|
||||||
|
this.isEditForListClick = true;
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user