2024-10-14 10:01:49 +06:00
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Data.SqlClient ;
using System.Drawing ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Windows.Forms ;
using System.IO ;
using System.Reflection ;
namespace DatabaseComparison
{
public partial class Form1 : Form
{
StringBuilder _sbErrMsg = new StringBuilder ( ) ;
List < TableList > _oTableLists = new List < TableList > ( ) ;
SqlConnection _SQLServerSourceConnection = null ;
SqlConnection _SQLServerDestinationConnection = null ;
DataTable _dtIdentityColumns = null ;
string _sourceConnetionString ;
string _destinationConnetionString ;
static Dictionary < string , bool > _dataTypes = new Dictionary < string , bool > ( ) ;
public Form1 ( )
{
InitializeComponent ( ) ;
}
[Serializable]
public enum EnumTargetType
{
Source = 1 ,
Destination = 2
}
[Serializable]
public enum EnumParamType
{
InParamType = 1 ,
EqualParamType = 2
}
[Serializable]
public enum EnumDBType
{
SqlServer = 1 ,
Oracle = 2 ,
MySql = 3
}
[Serializable]
public enum EnumScriptType
{
CreateTable = 1 ,
AlterTable = 2 ,
AlterColumn = 3
}
private void btnGetSource_Click ( object sender , EventArgs e )
{
Cursor . Current = Cursors . WaitCursor ;
try
{
GetConnection ( EnumTargetType . Source , txtSourceServer . Text , txtSourceUserNane . Text , txtSourcePassword . Text ) ;
cmbSourceDatabase . DataSource = null ;
cmbSourceDatabase . Items . Clear ( ) ;
cmbSourceDatabase . DataSource = ( GetDatabaseList ( EnumTargetType . Source ) ) ;
cmbSourceDatabase . DisplayMember = "Name" ;
cmbSourceDatabase . SelectedIndex = 0 ;
}
catch ( Exception exp )
{
MessageBox . Show ( exp . Message , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
finally
{
Cursor . Current = Cursors . Default ;
}
}
private void GetConnection ( EnumTargetType eTargetType , string sServer , string sName , string sPassword )
{
if ( eTargetType = = EnumTargetType . Source )
_sourceConnetionString = @"Data Source=" + sServer + ";User ID=" + sName + ";Password=" + sPassword + ";" ;
else
_destinationConnetionString = @"Data Source=" + sServer + ";User ID=" + sName + ";Password=" + sPassword + ";" ;
}
private void GetConnection ( EnumTargetType eTargetType , string sServer , string sDatabase , string sName , string sPassword )
{
if ( eTargetType = = EnumTargetType . Source )
_sourceConnetionString = @"Data Source=" + sServer + ";Initial Catalog=" + sDatabase + ";User ID =" + sName + ";Password=" + sPassword + ";" ;
else
_destinationConnetionString = @"Data Source=" + sServer + ";Initial Catalog=" + sDatabase + ";User ID =" + sName + ";Password=" + sPassword + ";" ;
}
public List < string > GetDatabaseList ( EnumTargetType eTargetType )
{
List < string > list = new List < string > ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( "SELECT name from sys.databases order by name" , con ) )
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
while ( dr . Read ( ) )
{
list . Add ( dr [ 0 ] . ToString ( ) ) ;
}
}
}
con . Close ( ) ;
}
return list ;
}
public List < string > GetTableList ( EnumTargetType eTargetType )
{
try
{
List < string > list = new List < string > ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( "SELECT name FROM sys.Tables order by name" , con ) )
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
while ( dr . Read ( ) )
{
list . Add ( dr [ 0 ] . ToString ( ) ) ;
}
}
}
con . Close ( ) ;
}
return list ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public DataTable GetColumnList ( EnumTargetType eTargetType , string sTableName )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( "SELECT column_name, data_type,character_maximum_length,IS_NULLABLE,COLUMN_DEFAULT, NUMERIC_PRECISION,NUMERIC_SCALE FROM information_schema.columns WHERE table_name = '" + sTableName + "' ORDER BY ORDINAL_POSITION" , con ) )
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public DataTable GetIdentityColumnList ( EnumTargetType eTargetType )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( @ "select o.name, c.name
from sys . objects o inner
join sys . columns c on o . object_id = c . object_id
where c . is_identity = 1 ", con))
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public string UpdateColumn ( string sTableName , string sColumnName , string sValue , string sCondition )
{
string sSqlCommand = "" ;
if ( sCondition = = "" )
{
sSqlCommand = "IF COL_LENGTH('dbo." + sTableName + "', '" + sColumnName + "') IS NOT NULL " +
" BEGIN " +
" update " + sTableName + " set " + sColumnName + " ='" + sValue + "' " +
" END " ;
}
else
{
sSqlCommand = "IF COL_LENGTH('dbo." + sTableName + "', '" + sColumnName + "') IS NOT NULL " +
" BEGIN " +
" update " + sTableName + " set " + sColumnName + " ='" + sValue + "' WHERE " + sCondition +
" END " ;
}
return sSqlCommand ;
}
public DataTable GePrimaryKeyList ( EnumTargetType eTargetType )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( @ "SELECT OBJECT_NAME(ic.OBJECT_ID) AS TableName, c.name AS ColumnName, i.name AS ConstraintName FROM
sys . indexes AS i
INNER JOIN
sys . index_columns AS ic ON i . OBJECT_ID = ic . OBJECT_ID AND i . index_id = ic . index_id
INNER JOIN
sys . columns AS c ON ic . OBJECT_ID = c . OBJECT_ID AND ic . column_id = c . column_id
WHERE
i . is_primary_key = 1 ; ", con))
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public DataTable GeForeignKeyList ( EnumTargetType eTargetType )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( @ "SELECT
f . name AS Constraint_Name ,
OBJECT_NAME ( f . parent_object_id ) AS FK_Table ,
c1 . name AS FK_Column ,
OBJECT_NAME ( f . referenced_object_id ) AS Reference_Table ,
c2 . name AS Referenced_Column
FROM sys . foreign_keys AS f
INNER JOIN sys . foreign_key_columns AS fk_cols ON f . object_id = fk_cols . constraint_object_id
INNER JOIN sys . columns AS c1 ON f . parent_object_id = c1 . object_id AND fk_cols . parent_column_id = c1 . column_id
INNER JOIN sys . columns AS c2 ON f . referenced_object_id = c2 . object_id AND fk_cols . referenced_column_id = c2 . column_id ; ", con))
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public DataTable GetDefaultConstraint ( EnumTargetType eTargetType )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( @ "SELECT
t . name AS TableName ,
c . name AS ColumnName ,
d . name AS DefaultConstraintName ,
d . definition AS DefaultDefinition
FROM sys . default_constraints d
INNER JOIN sys . columns c ON
d . parent_object_id = c . object_id
AND d . parent_column_id = c . column_id
INNER JOIN sys . tables t ON
t . object_id = c . object_id ", con))
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
public DataTable GetColumnList ( EnumTargetType eTargetType )
{
//List<string, string> list = new List<string>();
try
{
DataTable dt = new DataTable ( ) ;
string Connection = "" ;
if ( eTargetType = = EnumTargetType . Source )
Connection = _sourceConnetionString ;
else
Connection = _destinationConnetionString ;
using ( SqlConnection con = new SqlConnection ( Connection ) )
{
con . Open ( ) ;
using ( SqlCommand cmd = new SqlCommand ( @ "select 'sp_RENAME ''' + t.name + '.' + QUOTENAME(c.Column_Name) + ''', ''' + UPPER(c.Column_Name) + ''', ''COLUMN'';' As Command
from sys . tables t
INNER JOIN information_schema . columns c ON c . Table_Name = t . Name
WHERE lower ( t . name ) IN ( ' monthlyworkplan ' , ' dailyattnprocess ' , ' attnrawdata ' ,
' salarymonthly ' , ' salarymonthlydetail ' ,
' salaryempcostcenter ' , ' salarytempit ' , ' incometaxtemp ' , ' bonustempit ',' incometaxyearly ' )
ORDER BY t . name ", con))
{
using ( IDataReader dr = cmd . ExecuteReader ( ) )
{
dt . Load ( dr ) ;
}
}
con . Close ( ) ;
}
return dt ;
}
catch ( Exception exp )
{
throw new Exception ( exp . Message ) ;
}
}
private void cmbSourceDatabase_SelectedIndexChanged ( object sender , EventArgs e )
{
Cursor . Current = Cursors . WaitCursor ;
try
{
GetConnection ( EnumTargetType . Source , txtSourceServer . Text , cmbSourceDatabase . Text , txtSourceUserNane . Text , txtSourcePassword . Text ) ;
List < string > sTables = GetTableList ( EnumTargetType . Source ) ;
FillSourceList ( sTables ) ;
lblSourceCount . Text = "Total Table :" + sTables . Count ;
}
catch ( Exception exp )
{
MessageBox . Show ( exp . Message , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
finally
{
Cursor . Current = Cursors . Default ;
}
}
private void FillSourceList ( List < string > sTables )
{
lsvSourceList . Items . Clear ( ) ;
ListViewItem li = null ;
foreach ( string sName in sTables )
{
li = new ListViewItem ( ) ;
li . Text = sName ;
lsvSourceList . Items . Add ( li ) ;
}
}
private void FillDestinationList ( List < string > sTables )
{
lsvDestinationList . Items . Clear ( ) ;
ListViewItem li = null ;
foreach ( string sName in sTables )
{
li = new ListViewItem ( ) ;
li . Text = sName ;
lsvDestinationList . Items . Add ( li ) ;
}
}
private void cmbDestinationDatabase_SelectedIndexChanged ( object sender , EventArgs e )
{
Cursor . Current = Cursors . WaitCursor ;
try
{
GetConnection ( EnumTargetType . Destination , txtDestinationServer . Text , cmbDestinationDatabase . Text , txtDestinationUserNane . Text , txtDestinationPassword . Text ) ;
List < string > sTables = GetTableList ( EnumTargetType . Destination ) ;
FillDestinationList ( sTables ) ;
lblDestinationCount . Text = "Total Table :" + sTables . Count ;
}
catch ( Exception exp )
{
MessageBox . Show ( exp . Message , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
finally
{
Cursor . Current = Cursors . Default ;
}
}
private void btnGetDestination_Click ( object sender , EventArgs e )
{
Cursor . Current = Cursors . WaitCursor ;
try
{
GetConnection ( EnumTargetType . Destination , txtDestinationServer . Text , txtDestinationUserNane . Text , txtDestinationPassword . Text ) ;
cmbDestinationDatabase . Items . Clear ( ) ;
cmbDestinationDatabase . DataSource = ( GetDatabaseList ( EnumTargetType . Destination ) ) ;
cmbDestinationDatabase . DisplayMember = "Name" ;
cmbDestinationDatabase . SelectedIndex = 0 ;
}
catch ( Exception exp )
{
MessageBox . Show ( exp . Message , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
finally
{
Cursor . Current = Cursors . Default ;
}
}
public bool IsTableExists ( string sTableName )
{
bool found = false ;
foreach ( ListViewItem li in lsvDestinationList . Items )
{
if ( sTableName . ToLower ( ) . Trim ( ) = = li . Text . ToLower ( ) . Trim ( ) )
{
found = true ;
break ;
}
}
return found ;
}
public bool IsColumnExists ( DataRow dr , DataTable lsv )
{
bool found = false ;
foreach ( DataRow li in lsv . Rows )
{
if ( dr [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( ) )
{
found = true ;
break ;
}
}
return found ;
}
public bool IsColumnExistsWithType ( DataRow dr , DataTable lsv )
{
bool found = false ;
foreach ( DataRow li in lsv . Rows )
{
if ( dr [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 1 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 1 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 3 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 3 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 4 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 4 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 5 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 5 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 6 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 6 ] . ToString ( ) . ToLower ( ) . Trim ( ) )
{
found = true ;
break ;
}
if ( dr [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 0 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 1 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 1 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 3 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 3 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 5 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 5 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 6 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = li [ 6 ] . ToString ( ) . ToLower ( ) . Trim ( )
& & dr [ 4 ] . ToString ( ) . ToLower ( ) . Trim ( ) = = "" & & li [ 4 ] . ToString ( ) . ToLower ( ) . Trim ( ) ! = "" )
{
found = true ;
break ;
}
//int nSourceSize = 0;
//int nDestinationSize = 0;
//try
//{
// nSourceSize = Convert.ToInt16(dr[2].ToString().ToLower().Trim());
//}
//catch { }
//try
//{
// nDestinationSize = Convert.ToInt16(li[2].ToString().ToLower().Trim());
//}
//catch { }
//if (dr[0].ToString().ToLower().Trim() == li[0].ToString().ToLower().Trim()
// && dr[1].ToString().ToLower().Trim() == li[1].ToString().ToLower().Trim()
// && nSourceSize < nDestinationSize
// && dr[3].ToString().ToLower().Trim() == li[3].ToString().ToLower().Trim()
// && dr[4].ToString().ToLower().Trim() == li[4].ToString().ToLower().Trim()
// && dr[5].ToString().ToLower().Trim() == li[5].ToString().ToLower().Trim()
// && dr[6].ToString().ToLower().Trim() == li[6].ToString().ToLower().Trim())
//{
// found = true;
// break;
//}
}
return found ;
}
private TableList GetObject ( string sTableName , DataRow dr )
{
TableList oItem = new TableList ( ) ;
oItem . TableName = sTableName . ToUpper ( ) ;
oItem . ColumnName = dr [ 0 ] . ToString ( ) . ToUpper ( ) ;
oItem . DataType = dr [ 1 ] . ToString ( ) . ToUpper ( ) ;
oItem . Length = dr [ 2 ] . ToString ( ) . ToUpper ( ) ;
oItem . AllowNull = dr [ 3 ] . ToString ( ) . ToUpper ( ) ;
oItem . DefaultValue = dr [ 4 ] . ToString ( ) . ToUpper ( ) ;
oItem . Precision = dr [ 5 ] . ToString ( ) . ToUpper ( ) ;
oItem . Scale = dr [ 6 ] . ToString ( ) . ToUpper ( ) ;
oItem . IsDefaultValueRequired = false ;
return oItem ;
}
private void btnCompate_Click ( object sender , EventArgs e )
{
var watch = System . Diagnostics . Stopwatch . StartNew ( ) ;
Cursor . Current = Cursors . WaitCursor ;
StringBuilder sbCreate = new StringBuilder ( ) ;
StringBuilder sbAlterMain = new StringBuilder ( ) ;
StringBuilder sbAlter = new StringBuilder ( ) ;
IEnumerable < ListViewItem > lv = lsvDestinationList . Items . Cast < ListViewItem > ( ) ;
_oTableLists = new List < TableList > ( ) ;
foreach ( ListViewItem li in lsvSourceList . CheckedItems )
{
TableList oItem = null ;
lblMsg . Text = "Compare Table : " + li . Text ;
lblMsg . Refresh ( ) ;
if ( IsTableExists ( li . Text ) )
{
bool diff = false ;
GetConnection ( EnumTargetType . Source , txtSourceServer . Text , cmbSourceDatabase . Text , txtSourceUserNane . Text , txtSourcePassword . Text ) ;
DataTable dtSource = GetColumnList ( EnumTargetType . Source , li . Text ) ;
GetConnection ( EnumTargetType . Destination , txtDestinationServer . Text , cmbDestinationDatabase . Text , txtDestinationUserNane . Text , txtDestinationPassword . Text ) ;
DataTable dtDestination = GetColumnList ( EnumTargetType . Destination , li . Text ) ;
int nCount = 1 ;
int nDiffCount = 1 ;
foreach ( DataRow dr in dtSource . Rows )
{
if ( ! IsColumnExists ( dr , dtDestination ) )
{
oItem = GetObject ( li . Text , dr ) ;
oItem . ScriptType = EnumScriptType . AlterTable ;
if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "int" )
{
oItem . Precision = "" ;
oItem . Scale = "" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "float" )
{
oItem . Length = oItem . Precision ;
oItem . Precision = "" ;
}
if ( ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nvarchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varbinary" ) & & dr [ 2 ] . ToString ( ) = = "-1" )
{
oItem . Length = "MAX" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "text" )
{
oItem . Length = "" ;
}
if ( dr [ 3 ] . ToString ( ) . ToLower ( ) = = "no" )
{
if ( dr [ 4 ] . ToString ( ) . ToLower ( ) = = "" )
{
if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "date" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "datetime" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "datetime2" )
oItem . DefaultValue = "GETDATE()" ;
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "char" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nvarchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "text" )
oItem . DefaultValue = "''" ;
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "int" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "bit" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "smallint" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "money" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "numeric" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "decimal" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "float" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "tinyint" )
oItem . DefaultValue = "0" ;
oItem . IsDefaultValueRequired = true ;
}
}
if ( oItem . ColumnName . ToLower ( ) = = "payrolltypeid" | | oItem . ColumnName . ToLower ( ) = = "createdby" )
{
oItem . AllowNull = "NO" ;
oItem . DefaultValue = textBox2 . Text = = "" ? "1" : textBox2 . Text ;
if ( oItem . ColumnName . ToLower ( ) = = "createdby" )
oItem . DefaultValue = textBox1 . Text = = "" ? "1" : textBox2 . Text ;
}
_oTableLists . Add ( oItem ) ;
}
nCount + + ;
}
foreach ( DataRow dr in dtSource . Rows )
{
if ( ! IsColumnExistsWithType ( dr , dtDestination ) )
{
oItem = GetObject ( li . Text , dr ) ;
TableList ob = _oTableLists . Find ( x = > x . TableName = = oItem . TableName & & x . ColumnName = = oItem . ColumnName & & x . ScriptType = = EnumScriptType . AlterTable ) ;
if ( ob ! = null )
{
nCount + + ;
continue ;
}
oItem . ScriptType = EnumScriptType . AlterColumn ;
if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "int" )
{
oItem . Precision = "" ;
oItem . Scale = "" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "float" )
{
oItem . Length = oItem . Precision ;
oItem . Precision = "" ;
}
if ( ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nvarchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varbinary" ) & & dr [ 2 ] . ToString ( ) = = "-1" )
{
oItem . Length = "MAX" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "text" )
{
oItem . Length = "" ;
}
if ( dr [ 3 ] . ToString ( ) . ToLower ( ) = = "no" )
{
if ( dr [ 4 ] . ToString ( ) . ToLower ( ) = = "" )
{
if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "date" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "datetime" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "datetime2" )
oItem . DefaultValue = "GETDATE()" ;
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "char" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nvarchar" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "text" )
oItem . DefaultValue = "''" ;
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "int" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "bit" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "smallint" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "money" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "numeric" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "decimal" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "float" | |
dr [ 1 ] . ToString ( ) . ToLower ( ) = = "tinyint" )
oItem . DefaultValue = "0" ;
oItem . IsDefaultValueRequired = true ;
}
}
if ( oItem . ColumnName . ToLower ( ) = = "payrolltypeid" | | oItem . ColumnName . ToLower ( ) = = "createdby" )
{
oItem . AllowNull = "NO" ;
oItem . DefaultValue = textBox2 . Text = = "" ? "1" : textBox2 . Text ;
if ( oItem . ColumnName . ToLower ( ) = = "createdby" )
oItem . DefaultValue = textBox1 . Text = = "" ? "1" : textBox2 . Text ;
}
_oTableLists . Add ( oItem ) ;
}
else
{
}
nCount + + ;
}
}
else
{
GetConnection ( EnumTargetType . Source , txtSourceServer . Text , cmbSourceDatabase . Text , txtSourceUserNane . Text , txtSourcePassword . Text ) ;
DataTable dt = GetColumnList ( EnumTargetType . Source , li . Text ) ;
int nCount = 1 ;
if ( dt ! = null & & dt . Rows . Count > 0 )
{
foreach ( DataRow dr in dt . Rows )
{
oItem = GetObject ( li . Text , dr ) ;
oItem . ScriptType = EnumScriptType . CreateTable ;
//if (nCount != 1)
//{
// oItem.TableName = "";
//}
if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "int" )
{
oItem . Precision = "" ;
oItem . Scale = "" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "float" )
{
oItem . Length = oItem . Precision ;
oItem . Precision = "" ;
}
if ( ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "nvarchar"
| | dr [ 1 ] . ToString ( ) . ToLower ( ) = = "varbinary" ) & & dr [ 2 ] . ToString ( ) = = "-1" )
{
oItem . Length = "MAX" ;
}
else if ( dr [ 1 ] . ToString ( ) . ToLower ( ) = = "text" )
{
oItem . Length = "" ;
}
nCount + + ;
_oTableLists . Add ( oItem ) ;
}
}
}
}
FillGridView ( ) ;
Cursor . Current = Cursors . Default ;
watch . Stop ( ) ;
var elapsedMs = watch . ElapsedMilliseconds / 1000 ;
lblMsg . Text = "Total Time Elapsed :" + CalculateTimeElapsed ( elapsedMs ) ;
lblMsg . Refresh ( ) ;
}
private string CalculateTimeElapsed ( long nTime )
{
TimeSpan t = TimeSpan . FromSeconds ( nTime ) ;
string answer = string . Format ( "{0:D2} h:{1:D2} m:{2:D2} s" ,
t . Hours ,
t . Minutes ,
t . Seconds ) ;
return answer ;
}
private void FillGridView ( )
{
grdList . Rows . Clear ( ) ;
foreach ( TableList li in _oTableLists )
{
int RowIndex = grdList . Rows . Add ( ) ;
DataGridViewRow oRow = grdList . Rows [ RowIndex ] ;
oRow . Cells [ 0 ] . Style . Font = new System . Drawing . Font ( "Microsoft Sans Serif" , 8F , System . Drawing . FontStyle . Bold ) ;
if ( li . ScriptType = = EnumScriptType . CreateTable )
{
oRow . Cells [ 0 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 1 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 2 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 3 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 4 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 5 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 7 ] . Style . ForeColor = Color . Red ;
oRow . Cells [ 8 ] . Style . ForeColor = Color . Red ;
}
else if ( li . ScriptType = = EnumScriptType . AlterTable )
{
oRow . Cells [ 0 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 1 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 2 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 3 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 4 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 5 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 7 ] . Style . ForeColor = Color . Green ;
oRow . Cells [ 8 ] . Style . ForeColor = Color . Green ;
}
else if ( li . ScriptType = = EnumScriptType . AlterColumn )
{
oRow . Cells [ 0 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 1 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 2 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 3 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 4 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 5 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 7 ] . Style . ForeColor = Color . Purple ;
oRow . Cells [ 8 ] . Style . ForeColor = Color . Purple ;
}
oRow . Cells [ 0 ] . Value = li . TableName ;
oRow . Cells [ 1 ] . Value = li . ColumnName ;
oRow . Cells [ 2 ] . Value = li . DataType ;
oRow . Cells [ 3 ] . Value = li . Length ;
oRow . Cells [ 4 ] . Value = li . AllowNull ;
oRow . Cells [ 5 ] . Value = li . DefaultValue ;
oRow . Cells [ 6 ] . Value = li . IsDefaultValueRequired ? "Yes" : "No" ;
oRow . Cells [ 7 ] . Value = li . Precision ;
oRow . Cells [ 8 ] . Value = li . Scale ;
if ( li . IsDefaultValueRequired )
{
oRow . Cells [ 6 ] . Style . ForeColor = Color . Blue ;
oRow . Cells [ 6 ] . Style . Font = new System . Drawing . Font ( "Microsoft Sans Serif" , 8.25F , System . Drawing . FontStyle . Bold ) ;
}
grdList . Rows [ RowIndex ] . Tag = li ;
RowIndex + + ;
}
}
private void checkBox1_CheckedChanged ( object sender , EventArgs e )
{
foreach ( ListViewItem li in lsvSourceList . Items )
li . Checked = checkBox1 . Checked ;
}
private void button1_Click ( object sender , EventArgs e )
{
Clipboard . SetText ( rtbText . Text ) ;
}
private void ExecuteQuery ( string sQuery )
{
try
{
SqlConnection conn = new SqlConnection ( _destinationConnetionString ) ;
sQuery = sQuery . Replace ( "GO" , "" ) ;
SqlCommand cmd = new SqlCommand ( sQuery , conn ) ;
conn . Open ( ) ;
cmd . ExecuteNonQuery ( ) ;
conn . Close ( ) ;
}
catch ( Exception e )
{
Console . WriteLine ( "exception occured while creating table:" + e . Message + "\t" + e . GetType ( ) ) ;
}
}
private void btnCreateScript_Click ( object sender , EventArgs e )
{
try
{
//primary key
DataTable dtSource = GePrimaryKeyList ( EnumTargetType . Source ) ;
DataTable dtDestination = GePrimaryKeyList ( EnumTargetType . Destination ) ;
//foreign key
DataTable dtFKSource = GeForeignKeyList ( EnumTargetType . Source ) ;
DataTable dtFKDestination = GeForeignKeyList ( EnumTargetType . Destination ) ;
//default key
DataTable dtDefaultKeyDestination = GetDefaultConstraint ( EnumTargetType . Destination ) ;
StringBuilder sql = new StringBuilder ( ) ;
StringBuilder errorCheckerMessage = new StringBuilder ( ) ;
bool isAllDfGiven = false ;
_oTableLists = new List < TableList > ( ) ;
foreach ( DataGridViewRow grd in grdList . Rows )
{
TableList item = ( TableList ) grd . Tag ;
item . DefaultValue = grd . Cells [ 5 ] . Value . ToString ( ) ;
_oTableLists . Add ( item ) ;
}
foreach ( var item in _oTableLists )
{
if ( item . IsDefaultValueRequired )
{
if ( String . IsNullOrEmpty ( item . DefaultValue ) )
{
isAllDfGiven = true ;
errorCheckerMessage . AppendFormat ( "Table: {0}, Col Name: {1}" , item . TableName , item . ColumnName ) ;
errorCheckerMessage . AppendFormat ( "\r\n" ) ;
}
}
}
if ( isAllDfGiven = = true )
{
StringBuilder errorMessage = new StringBuilder ( ) ;
errorMessage . AppendFormat ( "Default Values Required: " ) ;
errorMessage . AppendFormat ( "\r\n" ) ;
errorMessage . AppendFormat ( errorCheckerMessage . ToString ( ) ) ;
Form2 form = new Form2 ( ) ;
form . ShowDialog ( errorMessage . ToString ( ) ) ;
return ;
}
_dtIdentityColumns = GetIdentityColumnList ( EnumTargetType . Source ) ;
List < string > _oTempCreateTableNames = _oTableLists . Where ( x = > x . ScriptType = = EnumScriptType . CreateTable ) . Select ( y = > y . TableName ) . Distinct ( ) . ToList ( ) ;
List < string > _oTempAlterTableNames = _oTableLists . Where ( x = > x . ScriptType = = EnumScriptType . AlterTable ) . Select ( y = > y . TableName ) . Distinct ( ) . ToList ( ) ;
List < string > _oTempAlterTableAlterColNames = _oTableLists . Where ( x = > x . ScriptType = = EnumScriptType . AlterColumn ) . Select ( y = > y . TableName ) . Distinct ( ) . ToList ( ) ;
//create table script
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "-------------- Create Table ------------------------------------\r\n\r\n" ) ;
foreach ( var item in _oTempCreateTableNames )
{
var tempTable = _oTableLists . Where ( x = > x . TableName = = item & & x . ScriptType = = EnumScriptType . CreateTable ) . ToList ( ) ;
string pkCol = null ;
string pkConstraint = null ;
foreach ( DataRow dr in dtSource . Rows )
{
if ( item . ToLower ( ) = = dr [ 0 ] . ToString ( ) . ToLower ( ) )
{
pkCol = dr [ 1 ] . ToString ( ) ;
pkConstraint = dr [ 2 ] . ToString ( ) ;
}
}
sql . AppendFormat ( "CREATE TABLE [{0}]\r\n(\r\n" , item ) ;
int i = 0 ;
string snip = "" ;
foreach ( var row in tempTable )
{
snip = GetColumnSqlCREATE ( row ) ;
sql . AppendFormat ( ( i < tempTable . Count - 1 ) ? snip . ToString ( ) : snip . ToString ( ) . TrimEnd ( ',' , '\r' , '\n' ) ) ;
+ + i ;
}
if ( pkCol ! = null )
{
var pkColumnExist = tempTable . Where ( x = > x . ColumnName . ToLower ( ) = = pkCol . ToLower ( ) ) . Any ( ) ;
if ( pkColumnExist = = true )
{
sql . AppendFormat ( "," ) ;
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( "\t CONSTRAINT {0} PRIMARY KEY ({1})" ,
pkConstraint , pkCol ) ;
}
}
sql . AppendFormat ( "\r\n)" ) ;
sql . AppendFormat ( "\r\n" ) ;
}
//Alter Table script
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "-------------- Alter Table ------------------------------------\r\n\r\n" ) ;
foreach ( var item in _oTempAlterTableNames )
{
var tempTable = _oTableLists . Where ( x = > x . TableName = = item & & x . ScriptType = = EnumScriptType . AlterTable ) . ToList ( ) ;
string pkCol = null ;
string pkConstraint = null ;
foreach ( DataRow dr in dtSource . Rows )
{
if ( item . ToLower ( ) = = dr [ 0 ] . ToString ( ) . ToLower ( ) )
{
pkCol = dr [ 1 ] . ToString ( ) ;
pkConstraint = dr [ 2 ] . ToString ( ) ;
}
}
sql . AppendFormat ( "ALTER TABLE [{0}]\r\n ADD" , item ) ;
int i = 0 ;
string snip = "" ;
foreach ( var row in tempTable )
{
snip = GetColumnSqlALTER ( row ) ;
sql . AppendFormat ( ( i < tempTable . Count - 1 ) ? snip : snip . Substring ( 0 , snip . LastIndexOf ( ',' ) )
+ ";"
+ snip . Substring ( snip . LastIndexOf ( ',' ) + 1 ) ) ;
+ + i ;
}
if ( pkCol ! = null )
{
var pkColumnAlreadyExist = dtDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( ) ) . Any ( ) ;
var pkColumnExist = dtDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( )
& & x [ 1 ] . ToString ( ) . ToLower ( ) = = pkCol . ToLower ( ) ) . Any ( ) ;
if ( pkColumnAlreadyExist = = false & & pkColumnExist = = false )
{
var text = sql . ToString ( ) . Substring ( 0 , sql . ToString ( ) . LastIndexOf ( ';' ) )
+ ","
+ sql . ToString ( ) . Substring ( sql . ToString ( ) . LastIndexOf ( ';' ) + 1 ) ;
sql = new StringBuilder ( ) ;
sql . AppendFormat ( text ) ;
// sql.AppendFormat("\r\n");
sql . AppendFormat ( "CONSTRAINT {0} PRIMARY KEY ({1})" ,
pkConstraint , pkCol ) ;
sql . AppendFormat ( ";" ) ;
}
}
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( "\r\n" ) ;
}
//Alter col script
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "-------------- Alter Column ------------------------------------\r\n\r\n" ) ;
foreach ( var item in _oTempAlterTableAlterColNames )
{
var tempTable = _oTableLists . Where ( x = > x . TableName = = item & & x . ScriptType = = EnumScriptType . AlterColumn ) . ToList ( ) ;
string pkCol = null ;
string pkConstraint = null ;
foreach ( DataRow dr in dtSource . Rows )
{
if ( item . ToLower ( ) = = dr [ 0 ] . ToString ( ) . ToLower ( ) )
{
pkCol = dr [ 1 ] . ToString ( ) ;
pkConstraint = dr [ 2 ] . ToString ( ) ;
}
}
int i = 0 ;
foreach ( var row in tempTable )
{
//update if convert to null to not null
if ( row . AllowNull . ToLower ( ) = = "no" )
{
if ( row . ColumnName . ToLower ( ) = = "userid" | | row . ColumnName . ToLower ( ) = = "createdby"
| | row . ColumnName . ToLower ( ) = = "payrolltypeid" | |
row . ColumnName . ToLower ( ) = = "createddate" )
{
if ( row . IsDefaultValueRequired | | ! String . IsNullOrEmpty ( row . DefaultValue ) )
{
row . DefaultValue = DefaultValueSet ( row . DefaultValue , row . ColumnName ) ;
sql . AppendFormat ( "UPDATE {0} SET {1}={2} WHERE {3} IS NULL " ,
row . TableName ,
row . ColumnName , row . ColumnName . ToLower ( ) = = "createddate" ? ( row . DefaultValue . ToLower ( ) = = "getdate()" ? row . DefaultValue : "'" + row . DefaultValue + "'" ) : row . DefaultValue , row . ColumnName ) ;
sql . AppendFormat ( "\r\n" ) ;
}
}
else
{
if ( row . IsDefaultValueRequired | | ! String . IsNullOrEmpty ( row . DefaultValue ) )
{
row . DefaultValue = DefValueBracesCheck ( row . DefaultValue ) ;
if ( row . DataType . ToLower ( ) = = "int" | | row . DataType . ToLower ( ) = = "money" | | row . DataType . ToLower ( ) = = "numeric" | |
row . DataType . ToLower ( ) = = "decimal" | | row . DefaultValue = = "tinyint" )
{
var fkForeignKeyExist = dtFKDestination . AsEnumerable ( ) . Where ( x = > x [ 1 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( ) & & x [ 2 ] . ToString ( ) . ToLower ( ) = = row . ColumnName . ToLower ( ) ) . Any ( ) ;
if ( fkForeignKeyExist = = true )
{
sql . AppendFormat ( "UPDATE {0} SET {1}=1 WHERE {2} IS NULL " ,
row . TableName ,
row . ColumnName , row . ColumnName ) ;
}
else
{
sql . AppendFormat ( "UPDATE {0} SET {1}=0 WHERE {2} IS NULL " ,
row . TableName ,
row . ColumnName , row . ColumnName ) ;
}
}
if ( row . DataType . ToLower ( ) = = "bit" | | row . DataType . ToLower ( ) = = "smallint" )
{
sql . AppendFormat ( "UPDATE {0} SET {1}=0 WHERE {2} IS NULL " ,
row . TableName ,
row . ColumnName , row . ColumnName ) ;
}
sql . AppendFormat ( "\r\n" ) ;
}
}
}
ExistingDefaultConstraintCheck ( dtDefaultKeyDestination , sql , row ) ;
sql . AppendFormat ( "ALTER TABLE [{0}] ALTER COLUMN [{1}] [{2}] {3} {4} {5} " ,
row . TableName ,
row . ColumnName ,
row . DataType ,
( HasLength ( row . DataType ) ) ? "(" + row . Length . ToString ( ) + ")" : string . Empty ,
( HasPrecisionAndScale ( row . DataType ) ) ? ( ( row . Precision ! = null & & row . Scale ! = null ) ? "(" + row . Precision + "," + row . Scale + ")" : string . Empty ) : string . Empty ,
( row . AllowNull . ToLower ( ) = = "yes" ) ? "NULL" : "NOT NULL"
) ;
sql . AppendFormat ( ";\r\n" ) ;
//def value append
DefaultValueAppendAlterColumn ( row , sql ) ;
+ + i ;
}
if ( pkCol ! = null )
{
var pkAlreadyColumnExist = dtDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( ) ) . Any ( ) ;
var pkColumnExist = dtDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( )
& & x [ 1 ] . ToString ( ) . ToLower ( ) = = pkCol . ToLower ( ) ) . Any ( ) ;
if ( pkAlreadyColumnExist = = false & & pkColumnExist = = false )
{
sql . AppendFormat ( "ALTER TABLE [{0}] ADD CONSTRAINT [{1}] PRIMARY KEY ({2})" ,
item , pkConstraint , pkCol ) ;
sql . AppendFormat ( ";" ) ;
}
}
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( "\r\n" ) ;
}
//foreign key
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "-------------- Foreign key ------------------------------------\r\n\r\n" ) ;
ForeignKeyCreate ( dtFKSource , sql , dtFKDestination ) ;
#region Misc script
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "update users set usertype = 0 where userid in ( -9,-8)" ) ;
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "update userrole set EVENTDATE ='1 Jan 2023'" ) ;
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "update employee set persontype =0 where persontype is null" ) ;
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW BankInformation AS
SELECT employeeid , bn . NAME BANK , e . ACCOUNTNO FROM EMPLOYEE e , BRANCHES brn , BANKS bn
WHERE e . BRANCHID = brn . BRANCHID
AND brn . BANKID = bn . BANKID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EMPDigitalServiceBook AS
2025-07-21 17:22:45 +06:00
SELECT E . EMPLOYEEID , E . EMPLOYEENO , E . BANGLANAME AS NAME , E . FATHERNAME , E . MOTHERNAME , ES . NAME AS SPOUSENAME , E . JOININGDATE , E . EMPLOYEESTATUS ,
2024-10-14 10:01:49 +06:00
DES . NAMEINBANGLA AS DESIGNATION , EC . PARMANENTADDRESS AS PARMANENTADDRESS , EC . PRESENTADDRESS AS PRESENTADDRESS , EC . PERMANENTPOSTOFFICE AS POSTOFFICE ,
EC . PERMANENTPOSTCODENO AS POSTCODENO , EC . PERMANENTVILLAGE AS VILLAGE , EC . PERMANENTROADNO AS ROADNO ,
EC . PERMANENTWARDNO AS WARDNO , E . BIRTHDATE AS BIRTHDATE , E . PHOTOPATH AS PHOTO , E . NATIONALID AS NIDNO , E . HEIGHT AS HEIGHT , E . BLOODGROUP AS BLOODGROUP ,
E . EMPSIGNATURE AS EMPSIGNATURE , LM . EMPSIGNATURE AS LMSIGNATURE , LMDES . NAMEINBANGLA AS LMDESIGNATION , EL . DESCRIPTION AS EDUCATIONLEVEL
FROM EMPLOYEE E
LEFT JOIN EMPCONTACT EC ON E . EMPLOYEEID = EC . EMPLOYEEID
LEFT JOIN DESIGNATION DES ON E . DEPARTMENTID = DES . DESIGNATIONID
LEFT JOIN DISTRICT DIS ON DIS . DISTRICTID = EC . PARMANENTDISTRICTID
LEFT JOIN THANA T ON T . THANAID = EC . PARMANENTTHANAID
LEFT JOIN EMPSPOUSE ES ON E . EMPLOYEEID = ES . EMPLOYEEID
LEFT JOIN EMPLOYEE LM ON E . LINEMANAGERID = E . EMPLOYEEID
LEFT JOIN DESIGNATION LMDES ON LMDES . DESIGNATIONID = LM . DESIGNATIONID
LEFT JOIN EMPACADEMIC EA ON E . EMPLOYEEID = EA . EMPLOYEEID
LEFT JOIN EDUCATIONLEVEL EL ON EA . EDUCATIONLEVELID = EL . EDUCATIONLEVELID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeAcademicInfo as SELECT e.employeeId AS EmployeeId, e.employeeNo AS EmployeeNo, e.name AS EmployeeName, a.institutename AS InstituteName,
( SELECT description FROM EDUCATIONTYPE WHERE a . EDUCATIONTYPEID = EDUCATIONTYPEID ) AS EducationType ,
( SELECT description FROM EDUCATIONLEVEL WHERE a . educationlevelId = educationlevelId ) AS EducationLevel ,
( SELECT description FROM DISCIPLINE WHERE a . disciplineId = disciplineId ) AS Discipline ,
( SELECT name FROM INSTITUTION WHERE a . institutionid = INSTITUTIONID ) AS Institute ,
a . passingYear AS PassingYear ,
( SELECT DESCRIPTION FROM RESULTTYPE WHERE RESULTTYPEID = a . resulttypeid ) AS ResultType
FROM EMPACADEMIC a LEFT JOIN EMPLOYEE e ON a . EMPLOYEEID = e . EMPLOYEEID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EMPLOYEEBASIC
AS Select E . EmployeeId , E . EMPLOYEENO , E . NAME , E . BASICSALARY , E . GrossSalary , E . TAXAMOUNT , E . Fathername , occf . Description AS FatherOccupation ,
occm . Description AS MotherOccupation , E . MotherName , E . PhotoPath AS Photo ,
( case E . GENDER
When 1 Then ' Male '
When 2 Then ' Female '
When 3 Then ' Both '
Else ' None '
End ) As Gender ,
E . BIRTHDATE , E . BIRTHPlace , E . TINNO , E . JOININGDATE , E . EMAILADDRESS , Ca . DESCRIPTION as Category , L . DESCRIPTION as Location ,
( Case E . STATUS
When 1 Then ' Active '
When 2 Then ' InActive '
Else ' Regardless '
End ) As Status ,
( case dept5 . tire
when 5 then dept1 . DESCRIPTION
when 4 then dept2 . DESCRIPTION
when 3 then dept3 . DESCRIPTION
when 2 then dept4 . DESCRIPTION
when 1 then dept5 . DESCRIPTION
Else ' '
End ) As Division ,
( case dept5 . tire
when 5 then dept1 . DEPARTMENTID
when 4 then dept2 . DEPARTMENTID
when 3 then dept3 . DEPARTMENTID
when 2 then dept4 . DEPARTMENTID
when 1 then dept5 . DEPARTMENTID
End ) As DivisionID ,
case dept5 . tire
when 5 THEN dept2 . DESCRIPTION
when 4 then dept3 . DESCRIPTION
when 3 then dept4 . DESCRIPTION
when 2 then dept5 . DESCRIPTION
Else ' '
End As Company ,
( case dept5 . tire
when 5 THEN dept2 . DEPARTMENTID
when 4 then dept3 . DEPARTMENTID
when 3 then dept4 . DEPARTMENTID
when 2 then dept5 . DEPARTMENTID
End ) As CompanyID ,
( case dept5 . tire
when 5 then dept3 . DESCRIPTION
when 4 then dept4 . DESCRIPTION
when 3 then dept5 . DESCRIPTION
when 2 then ' '
Else ' '
End ) As Department ,
( case dept5 . tire
when 5 then dept3 . DEPARTMENTID
when 4 then dept4 . DEPARTMENTID
when 3 then dept5 . DEPARTMENTID
End ) As DepartmentID ,
( case dept5 . tire
when 5 then dept4 . DESCRIPTION
when 4 then dept5 . DESCRIPTION
when 3 then ' '
when 2 then ' '
Else ' '
End ) As Section ,
( case dept5 . tire
when 5 then dept4 . DEPARTMENTID
when 4 then dept5 . DEPARTMENTID
End ) As SectionID ,
( case dept5 . tire
when 5 then dept5 . DESCRIPTION
when 4 then ' '
when 3 then ' '
when 2 then ' '
Else ' '
End ) As SubSection ,
( case dept5 . tire
when 5 then dept5 . DEPARTMENTID
End ) As SubSectionID ,
Deg . NAME as DESIGNATION , Gr . DESCRIPTION as GRADE , R . Name AS RELIGION ,
( case E . MARITALSTATUSID
When 1 Then ' Married '
When 2 Then ' Unmarried '
When 3 Then ' Divorced '
When 4 Then ' Widow '
Else ' None '
End ) As MaritalStatus ,
E . MOBILENO , E . VendorCode , E . DATEOFCONFIRMATION , E . NATIONALID , E . PassPortNo , E . PhotoPath , E . bloodgroup , lmemp . EMPLOYEEID AS LineManagerID ,
lmemp . EmployeeNo AS LineManagerNo , lmemp . Name AS LineManagerName , lmDeg . Name AS LineManagerDes ,
( case lmDEp . tire
when 4 then lmdept1 . DESCRIPTION
when 3 then lmdept2 . DESCRIPTION
when 2 then lmdept3 . DESCRIPTION
when 1 then lmDEp . DESCRIPTION
Else ' '
End ) As lmDivision ,
( case lmDEp . tire
when 4 THEN lmdept1 . DEPARTMENTID
when 3 then lmdept2 . DEPARTMENTID
when 2 THEN lmdept3 . DEPARTMENTID
when 1 then lmDEp . DEPARTMENTID
End ) As lmDivisionID ,
case lmDEp . tire
when 4 THEN lmdept2 . DESCRIPTION
when 3 then lmdept3 . DESCRIPTION
when 2 then lmDEp . DESCRIPTION
Else ' '
End As lmDepartment ,
( case lmDEp . tire
when 4 then lmdept2 . DepartmentID
when 3 then lmdept3 . DepartmentID
when 2 then lmDEp . DepartmentID
End ) As lmDepartmentID ,
( case lmDEp . tire
when 4 then lmdept3 . DESCRIPTION
when 3 then lmDEp . DESCRIPTION
when 2 then ' '
Else ' '
End ) As lmUnit ,
( case lmDEp . tire
when 4 then lmdept3 . DepartmentID
when 3 then lmDEp . DepartmentID
End ) As lmUnitID ,
( case lmDEp . tire
when 4 then lmDEp . DESCRIPTION
when 3 then ' '
when 2 then ' '
Else ' '
End ) As lmSubUnit ,
( case lmDEp . tire
when 4 then lmDEp . DepartmentID
End ) As lmSubUnitID ,
( case E . IsConfirmed
When 0 Then ' Probetionary '
When 1 Then ' Confirmed '
Else ' Regardless '
End ) As EmpStatus ,
cg . Code AS costcenter , nt . DESCRIPTION AS NATIONALITY , BK . NAME Bank , BR . NAME Branch , BKOUT . NAME OUTPayBank , BROUT . NAME OUTPayBranch , E . ACCOUNTNO , E . OutPayAccountNo
from Employee E
Left outer join CATEGORY Ca on E . CATEGORYID = Ca . CATEGORYID
LEFT JOIN DEPARTMENT dept5 ON dept5 . DEPARTMENTID = E . DEPARTMENTID
LEFT JOIN DEPARTMENT dept4 ON dept4 . DEPARTMENTID = dept5 . PARENTID
LEFT JOIN DEPARTMENT dept3 ON dept3 . DEPARTMENTID = dept4 . PARENTID
LEFT JOIN DEPARTMENT dept2 ON dept2 . DEPARTMENTID = dept3 . PARENTID
LEFT JOIN DEPARTMENT dept1 ON dept1 . DEPARTMENTID = dept2 . PARENTID
Left outer join DESIGNATION Deg on E . DESIGNATIONID = Deg . DESIGNATIONID
Left outer join GRADES Gr on E . GRADEID = Gr . GRADEID
Left Outer Join LOCATION L on E . LOCATIONID = L . LOCATIONID
Left Outer Join RELIGION R on E . RELIGIONID = R . RELIGIONID
LEFT OUTER JOIN EMPCOSTCENTER ec ON ec . EMPLOYEEID = e . EMPLOYEEID AND ec . CURRENTCC = 1
LEFT OUTER JOIN CRG cg ON cg . CRGID = ec . COSTCENTERID
LEFT OUTER JOIN NATIONALITY nt ON nt . NATIONALITYID = e . NATIONALITYID
LEFT OUTER JOIN OCCUPATION occf ON occf . OCCUPATIONID = e . FATHEROCCUPATIONID
LEFT OUTER JOIN OCCUPATION occm ON occm . OCCUPATIONID = e . MOTHEROCCUPATIONID
LEFT OUTER JOIN EMPLOYEE lmemp ON lmemp . Employeeid = e . linemanagerid
LEFT OUTER JOIN ORGANEMPLOYEE orge ON orge . EMPLOYEEID = e . EMPLOYEEID
LEFT OUTER JOIN ORGANOGRAM org ON org . ORGANOGRAMID = orge . NODEID
LEFT OUTER JOIN ORGANEMPLOYEE orgel ON orgel . NODEID = org . PARENTID
LEFT OUTER JOIN EMPLOYEE em ON em . EMPLOYEEID = orgel . EMPLOYEEID
Left outer join DESIGNATION lmDeg on lmemp . DESIGNATIONID = lmDeg . DESIGNATIONID
Left JOIN DEPARTMENT lmDEp ON lmDEp . DEPARTMENTID = lmemp . DEPARTMENTID
LEFT JOIN DEPARTMENT lmdept3 ON lmdept3 . DEPARTMENTID = lmDEp . PARENTID
LEFT JOIN DEPARTMENT lmdept2 ON lmdept2 . DEPARTMENTID = lmdept3 . PARENTID
LEFT JOIN DEPARTMENT lmdept1 ON lmdept1 . DEPARTMENTID = lmdept2 . PARENTID
LEFT OUTER JOIN Branches BR ON E . BRANCHID = BR . BRANCHID
LEFT OUTER JOIN BANKS BK ON BK . BANKID = BR . BANKID
LEFT OUTER JOIN Branches BROUT ON E . OUTPayBRANCHID = BROUT . BRANCHID
LEFT OUTER JOIN BANKS BKOUT ON BKOUT . BANKID = BROUT . BANKID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeChildrenInfo AS SELECT e.employeeid AS EmployeeId, e.employeeNo AS EmployeeNo, e.name AS EmployeeName, c.NAME,
(
CASE WHEN c . gender = 1 THEN ' Male '
WHEN c . gender = 2 THEN ' Female '
WHEN c . gender = 3 THEN ' Other '
ELSE ' '
END
) ' Gender ' , c . BIRTHDATE AS BirthDate ,
(
CASE WHEN c . MARITALSTATUS = 1 THEN ' Married '
WHEN c . MARITALSTATUS = 2 THEN ' Unmarried '
WHEN c . MARITALSTATUS = 3 THEN ' Divorced '
WHEN c . MARITALSTATUS = 4 THEN ' Widow '
ELSE ' '
END
) ' MaritalStatus ' , ( SELECT description FROM OCCUPATION WHERE OCCUPATIONID = c . occupationId ) AS Occupation , c . passportNo AS PassportNo ,
c . passportIssueDate AS PassportIssueDate , c . PassportExpDate AS PassportExpDate , c . nid ,
( SELECT description FROM EDUCATIONLEVEL WHERE EDUCATIONLEVELID = c . educationLevelId ) AS EducationLevel , c . InsuranceId , c . InclusionDate
FROM EMPCHILDREN c LEFT JOIN EMPLOYEE e ON c . employeeid = e . employeeId
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeContactInfo AS SELECT e.EMPLOYEEID AS EmployeeId, e.EMPLOYEENO AS EmployeeNo, e.NAME, c.PARMANENTADDRESS AS 'PermanentAddress',
( SELECT name FROM DISTRICT WHERE DISTRICTID = c . PARMANENTDISTRICTID ) AS ' PermanentDistrict ' ,
( SELECT name FROM Thana WHERE ThanaId = c . PARMANENTTHANAID ) AS ' PermanentThana ' ,
c . PARMANENTTELEPHONE AS ' PermanentTelephone ' ,
c . PARMANENTMOBILE AS ' PermanentMobile ' ,
c . PRESENTADDRESS AS ' PresentAddress ' ,
( SELECT name FROM DISTRICT WHERE DISTRICTID = c . PresentDISTRICTID ) AS ' PresentDistrict ' ,
( SELECT name FROM Thana WHERE ThanaId = c . PresentTHANAID ) AS ' PresentThana ' ,
c . PresentTELEPHONE AS ' PresentTelephone ' ,
c . PRESENTMOBILE AS ' PresentMobile ' ,
c . EMERGENCYCONTACTADDRESS AS ' EmergencyContactAddress ' ,
c . EMERGENCYCONTACTPERSON AS ' EmergencyContactPerson ' ,
c . EMERGENCYTELEPHONE AS ' EmergencyTelephone '
FROM EMPCONTACT c
LEFT JOIN EMPLOYEE e ON e . EMPLOYEEID = c . EMPLOYEEID ;
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "Create view VW_EmployeeGenderRatioData as
WITH CTE AS
(
select d3 . DepartmentID SectionId , d3 . DESCRIPTION Section , d2 . departmentId departmentId , d2 . DESCRIPTION Department , d1 . departmentId DivisionId , d1 . DESCRIPTION Division
from department d3
LEFT JOIN department d2 ON d3 . PARENTID = d2 . DEPARTMENTID
LEFT JOIN department d1 ON d2 . PARENTID = d1 . DEPARTMENTID
)
SELECT e . EMPLOYEEID AS EmployeeId , e . CATEGORYID AS categoryId , c . DESCRIPTION AS Category , e . DESIGNATIONID AS designationId , dg . NAME AS Designation ,
e . GRADEID AS GradeId , g . DESCRIPTION AS Grade , e . RELIGIONID AS ReligionId , r . NAME AS Religion , e . departmentId AS sectionId ,
dept . Section AS Section , dept . departmentId , dept . Department , dept . DivisionId , dept . Division ,
(
CASE WHEN e . gender = 1 THEN ' Male '
WHEN e . gender = 2 THEN ' Female '
WHEN e . gender = 3 THEN ' Other '
ELSE ' '
END
) Gender
FROM employee e LEFT JOIN CATEGORY c ON e . CATEGORYID = c . CATEGORYID
LEFT JOIN DESIGNATION dg ON e . DESIGNATIONID = dg . DESIGNATIONID
LEFT JOIN GRADES g ON e . GRADEID = g . GRADEID
LEFT JOIN RELIGION r ON r . RELIGIONID = e . RELIGIONID
LEFT JOIN CTE dept ON dept . sectionId = e . DEPARTMENTID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeGeneralData AS SELECT e.EMPLOYEEID, e.EMPLOYEENO, e.FIRSTNAME, e.LASTNAME, e.name AS 'FullName', e.ExtraField1 AS 'EmployeeDName', e.JOININGDATE,
e . BIRTHDATE ,
( SELECT name FROM DESIGNATION WHERE DESIGNATIONID = e . employeeid ) AS ' Designation ' ,
( SELECT DESCRIPTION FROM GRADES WHERE GRADEID = e . employeeid ) AS ' Grade ' ,
(
CASE WHEN e . MARITALSTATUSID = 1 THEN ' Married '
WHEN e . MARITALSTATUSID = 2 THEN ' Unmarried '
WHEN e . MARITALSTATUSID = 3 THEN ' Divorced '
WHEN e . MARITALSTATUSID = 4 THEN ' Widow '
ELSE ' '
END
) ' MaritalStatus ' ,
(
CASE WHEN e . gender = 1 THEN ' Male '
WHEN e . gender = 2 THEN ' Female '
WHEN e . gender = 3 THEN ' Other '
ELSE ' '
END
) ' Gender ' ,
(
CASE WHEN e . BLOODGROUP = 1 THEN ' A + '
WHEN e . BLOODGROUP = 2 THEN ' A - '
WHEN e . BLOODGROUP = 3 THEN ' B + '
WHEN e . BLOODGROUP = 4 THEN ' B - '
WHEN e . BLOODGROUP = 5 THEN ' O + '
WHEN e . BLOODGROUP = 6 THEN ' O - '
WHEN e . BLOODGROUP = 7 THEN ' AB + '
WHEN e . BLOODGROUP = 8 THEN ' AB - '
ELSE ' '
END
) ' BloodGroup ' ,
( SELECT description FROM CATEGORY c WHERE c . CATEGORYID = e . categoryid ) AS ' Category ' ,
( SELECT employeeNo + '-' + name FROM EMPLOYEE WHERE employeeid = e . lineManagerId ) AS ' LineManager ' ,
e . emailAddress , e . mobileno ,
( SELECT name FROM RELIGION WHERE RELIGIONID = e . religionId ) AS ' Religion ' ,
( SELECT description FROM NATIONALITY WHERE NATIONALITYID = e . nationalityId ) AS NATIONALITY ,
e . geid AS ' EmpCode ' , e . NATIONALID AS ' NID ' , e . TINNO AS ' TIN ' , e . DRIVINGLICENCENO AS ' DrivingLicenceNo ' , e . BirthPlace AS ' BirthPlace ' ,
e . passportNo AS ' PassportNo ' , e . PASSPORTISSUEDATE AS ' PassportIssueDate ' , e . PASSPORTEXPDATE AS ' PassportExpireDate ' ,
(
CASE WHEN e . extraField2 = 1 THEN ' Dhaka '
WHEN e . extraField2 = 2 THEN ' Other '
ELSE ' '
END
) ' BaseStation ' ,
e . insuranceId AS ' InsuranceId ' , e . fatherName AS ' FatherName ' ,
( SELECT description FROM OCCUPATION WHERE OCCUPATIONID = e . fatherOccupationId ) AS ' FatherOccupation ' ,
e . motherName AS ' MotherName ' ,
( SELECT description FROM OCCUPATION WHERE OCCUPATIONID = e . motherOccupationId ) AS ' MotherOccupation ' ,
e . extraField3 AS ' TypeName ' , e . vendorCode AS ' VendorCode ' , e . extrafield4 AS ' MinValue ' , e . extrafield5 AS ' MaxValue '
FROM EMPLOYEE e ;
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW dbo.vw_EmployeeImportantInfo
AS
SELECT E . EmployeeID , E . EmployeeNo , E . Name , E . TINNO , E . JoiningDate , E . BasicSalary , e . GROSSSALARY , e . [ STATUS ] , e . BloodGroup , G . GRADEID , IsNull ( G . DESCRIPTION , ' ' ) AS GradeName ,
IsNULL ( G . CODE , ' ' ) AS GCode , IsNull ( G . SequenceNo , 0 ) AS SequenceNo , D . DESIGNATIONID , IsNUll ( D . NAME , ' ' ) AS [ Designation ]
, E . PaymentMode , ' PaymentModeName ' = CASE WHEN E . PaymentMode = 1 THEN ' Cash ' ELSE ' Bank ' END , ISNULL ( E . ACCOUNTNO , ' ' ) AS ACCOUNTNO , E . BRANCHID , ISNULL ( BR . NAME , ' ' )
AS BranchName , BA . BANKID , ISNULL ( Ba . NAME , ' ' ) AS BankName , E . OUTPAYACCOUNTNO , E . OUTPAYBRANCHID , ISNULL ( BRO . Name , ' ' ) AS OutPayBranchName , BAO . BankID AS OUTPAYBANKID , ISNULL ( BAO . NAME , ' ' )
AS OUTPAYBankName , E . CardID ,
( SELECT CardNumber
FROM AccessCard
WHERE AccessCardId = E . CardId ) AS [ RFNumber ] , e . NationalID , n . [ DESCRIPTION ] AS Nationality , e . EMAILADDRESS , e . MOBILENO , e . FATHERNAME , e . MOTHERNAME ,
e . BIRTHDATE , rl . NAME AS Religion , e . MARITALSTATUSID , e . GENDER AS GenderID , ec . PRESENTADDRESS , ec . PARMANENTADDRESS ,
ec . PERSONALTELEPHONE , d2 . NAME AS ParmanentDistric , d3 . NAME AS TempDistric ,
t1 . NAME AS TempThana , ec . PERSONALEMAIL , ec . OFFICIALEMAIL , ec . EMERGENCYTELEPHONE , ec . EMERGENCYMOBILE , ec . FAX ,
t2 . NAME AS ParmanentThana , e3 . [ DESCRIPTION ] AS EducationLevel , e2 . PASSINGYEAR , MIN ( gs . GROSSSALARY ) AS JoiningSalary , MIN ( gs . EFFECTDATE ) AS EffectedDate ,
e . PhotoPath , e . EMPSIGNATURE , ' Divission ' = CASE WHEN dept5 . tire = 5 THEN ISNULL ( dept1 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 4 THEN ISNULL ( dept2 . [ DESCRIPTION ] , ' ' )
WHEN dept5 . tire = 3 THEN ISNULL ( dept3 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 2 THEN ISNULL ( dept4 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 1 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) END ,
' DivissionID ' = CASE WHEN dept5 . tire = 5 THEN dept1 . DEPARTMENTID WHEN dept5 . tire = 4 THEN dept2 . DEPARTMENTID WHEN dept5 . tire = 3 THEN dept3 . DEPARTMENTID WHEN dept5 . tire = 2 THEN dept4 . DEPARTMENTID WHEN
dept5 . tire = 1 THEN dept1 . DEPARTMENTID END ,
' Unit ' = CASE WHEN dept5 . tire = 3 THEN ISNULL ( dept3 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 2 THEN ISNULL ( dept4 . [ DESCRIPTION ] , ' ' )
WHEN dept5 . tire = 1 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) END ,
' Department ' = CASE WHEN dept5 . tire = 5 THEN ISNULL ( dept2 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 4 THEN ISNULL ( dept3 . [ DESCRIPTION ] , ' ' )
WHEN dept5 . tire = 3 THEN ISNULL ( dept4 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 2 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) END ,
' FunctionalUnit ' = CASE WHEN dept5 . tire = 3 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) END ,
' DepartmentID ' = CASE WHEN dept5 . tire = 5 THEN dept2 . DepartmentID WHEN dept5 . tire = 4 THEN dept3 . DepartmentID
WHEN dept5 . tire = 3 THEN dept4 . DepartmentID WHEN dept5 . tire = 2 THEN dept5 . DepartmentID END ,
' Floor ' = CASE WHEN dept5 . tire = 5 THEN ISNULL ( dept3 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 4 THEN ISNULL ( dept4 . [ DESCRIPTION ] , ' ' )
WHEN dept5 . tire = 3 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 2 THEN ' ' END ,
' FloorID ' = CASE WHEN dept5 . tire = 5 THEN dept3 . DepartmentID WHEN dept5 . tire = 4 THEN dept4 . DepartmentID WHEN dept5 . tire = 3 THEN dept5 . DepartmentID WHEN dept5 . tire = 2 THEN ' ' END ,
' Section ' = CASE WHEN dept5 . tire = 5 THEN ISNULL ( dept4 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 4 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 3 THEN ' ' WHEN dept5 . tire = 2 THEN ' ' END ,
' SectionID ' = CASE WHEN dept5 . tire = 5 THEN dept4 . DepartmentID WHEN dept5 . tire = 4 THEN dept5 . DepartmentID WHEN dept5 . tire = 3 THEN ' ' WHEN dept5 . tire = 2 THEN ' ' END ,
' Line ' = CASE WHEN dept5 . tire = 5 THEN ISNULL ( dept5 . [ DESCRIPTION ] , ' ' ) WHEN dept5 . tire = 4 THEN ' ' WHEN dept5 . tire = 3 THEN ' ' WHEN dept5 . tire = 2 THEN ' ' END ,
' LineID ' = CASE WHEN dept5 . tire = 5 THEN dept5 . DepartmentID WHEN dept5 . tire = 4 THEN ' ' WHEN dept5 . tire = 3 THEN ' ' WHEN dept5 . tire = 2 THEN ' ' END
FROM Employee E LEFT JOIN
DESIGNATION D ON D . DESIGNATIONID = E . DESIGNATIONID LEFT JOIN
Grades G ON E . GRADEID = G . GRADEID LEFT JOIN
BRANCHES BR ON E . BRANCHID = BR . BRANCHID LEFT JOIN
BANKS BA ON BR . BANKID = BA . BANKID LEFT JOIN
BRANCHES BRO ON E . OUTPAYBRANCHID = BRO . BRANCHID LEFT JOIN
BANKS BAO ON BRO . BANKID = BAO . BANKID LEFT JOIN
RELIGION AS rl ON rl . RELIGIONID = e . RELIGIONID LEFT JOIN
EMPCONTACT AS Ec ON ec . EMPLOYEEID = e . EMPLOYEEID LEFT JOIN
DISTRICT AS d2 ON d2 . DISTRICTID = ec . PARMANENTDISTRICTID LEFT JOIN
DISTRICT AS d3 ON d3 . DISTRICTID = ec . PRESENTDISTRICTID LEFT JOIN
THANA AS t1 ON t1 . THANAID = ec . PRESENTTHANAID LEFT JOIN
THANA AS t2 ON t2 . THANAID = ec . PARMANENTTHANAID LEFT JOIN
( SELECT *
FROM ( SELECT EmployeeID , ROW_NUMBER ( ) OVER ( PARTITION BY EMPLOYEEID
ORDER BY EMPLOYEEID , LastLevel DESC , PassingYear DESC ) Sl , PassingYear , LastLevel , EDUCATIONLEVELID
FROM EMPACADEMIC
GROUP BY EMPLOYEEID , LastLevel , PassingYear , EDUCATIONLEVELID ) a
WHERE Sl = 1 ) AS e2 ON e2 . EMPLOYEEID = e . EMPLOYEEID LEFT JOIN
GRADESALARYASSIGNMENT AS gs ON gs . EMPLOYEEID = e . EMPLOYEEID LEFT JOIN
EDUCATIONLEVEL AS e3 ON e3 . EDUCATIONLEVELID = e2 . EDUCATIONLEVELID LEFT JOIN
NATIONALITY AS n ON n . NATIONALITYID = e . NATIONALITYID LEFT JOIN
DEPARTMENT dept5 ON dept5 . DEPARTMENTID = E . DEPARTMENTID LEFT JOIN
DEPARTMENT dept4 ON dept4 . DEPARTMENTID = dept5 . PARENTID LEFT JOIN
DEPARTMENT dept3 ON dept3 . DEPARTMENTID = dept4 . PARENTID LEFT JOIN
DEPARTMENT dept2 ON dept2 . DEPARTMENTID = dept3 . PARENTID LEFT JOIN
DEPARTMENT dept1 ON dept1 . DEPARTMENTID = dept2 . PARENTID
GROUP BY E . EmployeeID , E . EmployeeNo , E . Name , E . TINNO , E . JoiningDate , E . BasicSalary , e . GROSSSALARY , e . [ STATUS ] , e . BloodGroup , G . GRADEID , G . DESCRIPTION , G . CODE , G . SequenceNo ,
D . DESIGNATIONID , D . NAME , E . PaymentMode , E . ACCOUNTNO , E . BRANCHID , BR . NAME , BA . BANKID , BA . NAME , E . OUTPAYACCOUNTNO , E . OUTPAYBRANCHID , BRO . Name , BAO . BankID , BAO . NAME , E . CardID ,
e . NationalID , n . [ DESCRIPTION ] , e . EMAILADDRESS , e . MOBILENO , e . FATHERNAME , e . MOTHERNAME , e . BIRTHDATE , rl . NAME , e . MARITALSTATUSID , e . GENDER ,
ec . PRESENTADDRESS , ec . PARMANENTADDRESS ,
ec . PERSONALTELEPHONE , d2 . NAME , d3 . NAME , t1 . NAME , ec . PERSONALEMAIL , ec . OFFICIALEMAIL , ec . EMERGENCYTELEPHONE , ec . EMERGENCYMOBILE , ec . FAX ,
t2 . NAME , e3 . [ DESCRIPTION ] , e2 . PASSINGYEAR , e . PhotoPath , e . EMPSIGNATURE , dept1 . TIRE , dept1 . [ DESCRIPTION ] , dept1 . DepartmentID , dept2 . TIRE , dept2 . [ DESCRIPTION ] ,
dept2 . DepartmentID , dept3 . TIRE , dept3 . [ DESCRIPTION ] , dept3 . DepartmentID , dept4 . TIRE , dept4 . [ DESCRIPTION ] , dept4 . DepartmentID , dept5 . TIRE ,
dept5 . [ DESCRIPTION ] , dept5 . DepartmentID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeSpouseInfo as SELECT e.employeeid, e.employeeNo, e.Name AS 'EmployeeName', s.NAME AS 'SpouseName', ed.description AS 'EducationLevel',
oc . DESCRIPTION AS ' Occupation ' , s . PASSPORTNO AS PassportNo , s . PASSPORTISSUEDATE AS ' PassportIssueDate ' , s . PASSPORTEXPDATE AS ' PassportExpDate ' ,
s . NID , s . InsuranceId , s . InclusionDate
FROM EMPSPOUSE s LEFT JOIN EMPLOYEE e ON s . EMPLOYEEID = e . EMPLOYEEID
LEFT JOIN EDUCATIONLEVEL ed ON s . EDUCATIONLEVELID = ed . EDUCATIONLEVELID
LEFT JOIN OCCUPATION oc ON s . OCCUPATIONID = oc . OCCUPATIONID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "create view VW_EmployeeSummaryData as
select X . * ,
(
case
when X . age > = 20 and X . age < = 30 then ' 20 - 30 '
when X . age > = 31 and X . age < = 40 then ' 31 - 40 '
when X . age > = 41 and X . age < = 50 then ' 41 - 50 '
when X . age > = 51 then ' 50 + '
else ' Others '
end
) AgeGroup
from
(
SELECT emp . name Name , dept . DESCRIPTION Department , sc . DESCRIPTION Section , dv . DESCRIPTION division , desg . NAME Designation , g . description Grade , cat . Description Category , region . description Region , zone . description Zone ,
(
CASE WHEN emp . MARITALSTATUSID = 1 THEN ' Married '
WHEN emp . MARITALSTATUSID = 2 THEN ' Unmarried '
WHEN emp . MARITALSTATUSID = 3 THEN ' Divorced '
WHEN emp . MARITALSTATUSID = 4 THEN ' Widow '
ELSE ' '
END
) ' MaritalStatus ' ,
(
CASE WHEN emp . gender = 1 THEN ' Male '
WHEN emp . gender = 2 THEN ' Female '
WHEN emp . gender = 3 THEN ' Other '
ELSE ' '
END
) ' Gender ' ,
(
CASE WHEN emp . BLOODGROUP = 1 THEN ' A + '
WHEN emp . BLOODGROUP = 2 THEN ' A - '
WHEN emp . BLOODGROUP = 3 THEN ' B + '
WHEN emp . BLOODGROUP = 4 THEN ' B - '
WHEN emp . BLOODGROUP = 5 THEN ' O + '
WHEN emp . BLOODGROUP = 6 THEN ' O - '
WHEN emp . BLOODGROUP = 7 THEN ' AB + '
WHEN emp . BLOODGROUP = 8 THEN ' AB - '
ELSE ' '
END
) ' BloodGroup ' ,
religion . NAME Religion ,
DATEDIFF ( MONTH , emp . birthdate , GETDATE ( ) ) / 12 age
FROM EMPLOYEE emp
LEFT JOIN DEPARTMENT dept ON emp . DEPARTMENTID = dept . DEPARTMENTID
LEFT JOIN DEPARTMENT sc ON sc . DEPARTMENTID = dept . PARENTID
LEFT JOIN DEPARTMENT dv ON dv . DEPARTMENTID = sc . PARENTID
LEFT JOIN DESIGNATION desg ON emp . DESIGNATIONID = desg . DESIGNATIONID
LEFT JOIN RELIGION religion ON emp . RELIGIONID = RELIGION . RELIGIONID
LEFT JOIN CATEGORY cat ON emp . CATEGORYID = cat . CATEGORYID
LEFT JOIN GRADES g ON emp . GRADEID = g . GRADEID
LEFT JOIN LOCATION region on emp . LOCATIONID = region . LOCATIONID
LEFT JOIN LOCATION zone on zone . LOCATIONID = region . parentId
WHERE emp . STATUS = 1
) X
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE VIEW VW_EmployeeTrainingInfo as SELECT e.EMPLOYEEID AS EmployeeId, e.employeeNo AS EmployeeNo, e.NAME AS EmployeeName, t.name AS TrainingTitle, t.description AS Description,
( SELECT name FROM TRAININGTYPE WHERE TRAININGTYPEID = t . trainingTypeId ) AS TrainingType ,
( SELECT name FROM TRAINING WHERE TRAININGID = t . TRAININGID ) AS NatureOfTraining ,
( SELECT name FROM INSTITUTION WHERE INSTITUTIONID = t . institutionId ) AS Institution ,
t . trainingPlace AS TrainingPlace , t . fromDate AS FromDate , t . toDate AS ToDate
FROM EMPTRAINING t LEFT JOIN EMPLOYEE e ON t . EMPLOYEEID = e . EMPLOYEEID
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "create Procedure ProfileComplitionPercentCalcuate
@empId INT
AS
SET NOCOUNT ON ;
DECLARE @total INT = 0
DECLARE @mobile VARCHAR ( 200 ) , @NID VARCHAR ( 200 ) , @Blood INT , @TIN VARCHAR ( 50 )
DECLARE @perAd VARCHAR ( 2000 ) , @perD INT , @perThana INT , @perTel VARCHAR ( 100 ) , @perMobile VARCHAR ( 100 )
DECLARE @pAd VARCHAR ( 2000 ) , @pD INT , @pThana INT , @pTel VARCHAR ( 100 ) , @pMobile VARCHAR ( 100 )
DECLARE @ePerson VARCHAR ( 100 ) , @eAd VARCHAR ( 2000 ) , @eTel VARCHAR ( 100 )
begin
SELECT @mobile = e . MOBILENO , @NID = e . NATIONALID , @Blood = e . BLOODGROUP , @TIN = e . TINNO FROM EMPLOYEE e WHERE e . EMPLOYEEID = @empId
IF isnull ( @mobile , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
IF isnull ( @NID , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
IF isnull ( @Blood , 0 ) < > 0
BEGIN
SET @total = @total + 10
END
IF isnull ( @TIN , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
IF EXISTS ( SELECT a . ACADEMICID FROM EMPACADEMIC a WHERE a . EMPLOYEEID = @empId )
BEGIN
SET @total = @total + 20
END
IF EXISTS ( SELECT e . empFileuploadid FROM empFileUpload e WHERE e . empid = @empId AND e . fileType = 1 )
BEGIN
SET @total = @total + 10
END
SELECT @perAd = c . PARMANENTADDRESS , @perD = c . PARMANENTDISTRICTID , @perThana = c . PARMANENTTHANAID , @perTel = c . PARMANENTTELEPHONE , @perMobile = c . PARMANENTMOBILE FROM EMPCONTACT c WHERE c . EMPLOYEEID = @empId
IF isnull ( @perAd , ' ' ) < > ' '
AND isnull ( @perD , 0 ) < > 0
AND isnull ( @perThana , 0 ) < > 0
AND isnull ( @perTel , ' ' ) < > ' '
AND isnull ( @perMobile , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
SELECT @pAd = c . PRESENTADDRESS , @pD = c . PRESENTDISTRICTID , @pThana = c . PRESENTTHANAID , @pTel = c . PRESENTTELEPHONE , @pMobile = c . PRESENTMOBILE FROM EMPCONTACT c WHERE c . EMPLOYEEID = @empId
IF isnull ( @pAd , ' ' ) < > ' '
AND isnull ( @pD , 0 ) < > 0
AND isnull ( @pThana , 0 ) < > 0
AND isnull ( @pTel , ' ' ) < > ' '
AND isnull ( @pMobile , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
SELECT @ePerson = c . EMERGENCYCONTACTPERSON , @eAd = c . EMERGENCYCONTACTADDRESS , @eTel = c . EMERGENCYTELEPHONE FROM EMPCONTACT c WHERE c . EMPLOYEEID = @empId
IF isnull ( @ePerson , ' ' ) < > ' '
AND isnull ( @eAd , ' ' ) < > ' '
AND isnull ( @eTel , ' ' ) < > ' '
BEGIN
SET @total = @total + 10
END
UPDATE EMPLOYEE SET ProfileComplitionPercent = @total WHERE EMPLOYEEID = @empId
end
GO
");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE PROCEDURE [dbo].[sp_DashboardInformation] @ModEmployee smallint = 1, @ModLeave smallint = 0, @ModAttendance smallint = 0, @PayrollTypeID int = 1
AS
begin
declare @LiveEmployee int = 0 ,
@NewJoiner int = 0 ,
@LeftEmployee int = 0 ,
@PostingMissing int = 0 ,
@ConfirmationWaiting int = 0 ,
@NextSalaryDate date ,
@ProfileComplitionPercent int = 0 ,
@ProfileRequest int = 0 ,
@LeaveinNextweek int = 0 ,
@PendingApproval int = 0 ,
@LongPending int = 0 ,
@RosterMissing int = 0 ,
@PresentDays int = 0 ,
@AbsentDays int = 0 ,
@WeekStart date = ( select DATEADD ( DAY , DATEDIFF ( DAY , - 1 , GETDATE ( ) ) / 7 * 7 , 5 ) ) ,
@WeekEnd date = ( select DATEADD ( DAY , DATEDIFF ( DAY , - 1 , GETDATE ( ) ) / 7 * 7 , 5 ) ) + 6 ,
@TableName NVARCHAR ( 128 ) ,
@Sql NVARCHAR ( max ) = ' ' ,
@InsertSql NVARCHAR ( max ) = ' '
if @ModEmployee = 1
begin
set @LiveEmployee = ( select count ( employeeid )
from EMPLOYEE where status = 1
and PAYROLLTYPEID = @PayrollTypeID )
set @NewJoiner = ( select count ( e . employeeid )
from EMPLOYEE e
where month ( e . joiningdate ) = month ( getdate ( ) )
AND year ( e . joiningdate ) = year ( getdate ( ) ) and PAYROLLTYPEID = @PayrollTypeID )
set @LeftEmployee = ( select count ( e . employeeid )
from EMPLOYEE e
where month ( e . ENDOFCONTRACTDATE ) = month ( getdate ( ) )
AND year ( e . ENDOFCONTRACTDATE ) = year ( getdate ( ) )
and PAYROLLTYPEID = @PayrollTypeID )
set @PostingMissing = ( select count ( e . employeeid )
from EMPLOYEE e
where PAYROLLTYPEID = @PayrollTypeID
AND ( e . GRADEID is null OR e . DEPARTMENTID is null OR e . DESIGNATIONID is null OR e . locationid is null OR e . basicsalary = 0 ) )
set @ConfirmationWaiting = ( select count ( e . employeeid )
from EMPLOYEE e
where e . ISCONFIRMED = 0
and dbo . fun_datediff_in_months ( e . joiningdate , getdate ( ) ) > = 3
and PAYROLLTYPEID = @PayrollTypeID ) - - Window period 3 months
set @NextSalaryDate = ( select NEXTPAYPROCESSDATE
from payrolltype
where PAYROLLTYPEID = @PayrollTypeID )
set @ProfileComplitionPercent = ( select
( select sum ( ProfileComplitionPercent )
from employee
where status = 1 and PAYROLLTYPEID = @PayrollTypeID ) /
( select count ( employeeid )
from employee where status = 1
and PAYROLLTYPEID = @PayrollTypeID ) )
set @ProfileRequest = ( select count ( purid ) from ProfileUpdateRequest pr , employee e
where month ( pr . Requestdate ) = month ( getdate ( ) ) AND year ( pr . Requestdate ) = year ( getdate ( ) )
and e . employeeid = pr . RequestEmpID and e . PAYROLLTYPEID = @PayrollTypeID
)
set @Sql = @Sql + ' LiveEmployee INT , NewJoiner INT , LeftEmployee INT , PostingMissing INT , ConfirmationWaiting int , NextSalaryDate date , ProfileComplitionPercent int ' ;
set @InsertSql = @InsertSql + cast ( @LiveEmployee as varchar ) + ',' + cast ( @NewJoiner as varchar ) + ',' + cast ( @LeftEmployee as varchar ) + ',' + cast ( @PostingMissing as varchar ) + ',' + cast ( @ConfirmationWaiting as varchar ) + ',' ' ' + cast ( @NextSalaryDate as varchar ) + ''' , ' + cast ( @ProfileComplitionPercent as varchar ) ;
end
if @ModLeave = 1
begin
set @LeaveinNextweek = ( select count ( le . tranid )
from leaveentry le , employee e
where e . employeeid = le . empid
AND le . aprfromdate > = @WeekStart and le . aprtodate < = @WeekEnd
AND e . payrolltypeid = @Payrolltypeid
)
set @PendingApproval = ( select count ( wn . employeeid )
from WFMovementNext wn , employee e
where e . employeeid = wn . employeeid
AND month ( receivedatetime ) = month ( getdate ( ) ) AND year ( receivedatetime ) = year ( getdate ( ) )
AND e . payrolltypeid = @Payrolltypeid )
set @LongPending = ( select count ( wn . employeeid )
from WFMovementNext wn , employee e
where e . employeeid = wn . employeeid
AND dbo . fun_datediff_in_months ( receivedatetime , getdate ( ) ) > = 1 - - - one month window
AND e . payrolltypeid = @Payrolltypeid )
if len ( @Sql ) > 0
begin
set @Sql = @Sql + ',' ;
end
if len ( @InsertSql ) > 0
begin
set @InsertSql = @InsertSql + ',' ;
end
set @Sql = @Sql + ' LeaveinNextweek int , PendingApproval int , LongPending int ' ;
set @InsertSql = @InsertSql + cast ( @LeaveinNextweek as varchar ) + ',' + cast ( @PendingApproval as varchar ) + ',' + cast ( @LongPending as varchar )
end
if @ModAttendance = 1
begin
set @RosterMissing = ( SELECT count ( EMPLOYEEID )
FROM employee e
WHERE NOT EXISTS
( select ws . EMPLOYEEID from employeeworkplansetup ws , monthlyworkplan wp
where ws . WORKPLANGROUPID = wp . WorkPlanGroupID
and CONVERT ( VARCHAR , wp . WorkDate , 106 ) = CONVERT ( VARCHAR , GETDATE ( ) , 106 )
AND ws . EMPLOYEEID = e . EMPLOYEEID )
and status = 1
and PAYROLLTYPEID = @Payrolltypeid )
set @PresentDays = ( select count ( e . employeeid ) from DAILYATTNPROCESS dp , EMPLOYEE e
where CONVERT ( VARCHAR , attndate , 106 ) = CONVERT ( VARCHAR , GETDATE ( ) , 106 )
- - and AttenType = 1 // AttenType not found
and e . EMPLOYEEID = dp . EMPLOYEEID
and e . PAYROLLTYPEID = @Payrolltypeid )
set @AbsentDays = ( select count ( e . employeeid ) from DAILYATTNPROCESS dp , EMPLOYEE e
where CONVERT ( VARCHAR , attndate , 106 ) = CONVERT ( VARCHAR , GETDATE ( ) , 106 )
- - and AttenType = 2 // AttenType not found
and e . EMPLOYEEID = dp . EMPLOYEEID
and e . PAYROLLTYPEID = @Payrolltypeid )
if len ( @Sql ) > 0
begin
set @Sql = @Sql + ',' ;
end
if len ( @InsertSql ) > 0
begin
set @InsertSql = @InsertSql + ',' ;
end
set @Sql = @Sql + ' RosterMissing int , PresentDays int , AbsentDays int ' ;
set @InsertSql = @InsertSql + cast ( @RosterMissing as varchar ) + ',' + cast ( @PresentDays as varchar ) + ',' + cast ( @AbsentDays as varchar )
end
set @TableName = ' DashboardInformation ' ;
exec ( ' drop table ' + @TableName )
- - WAITFOR DELAY ' 00 : 00 : 02 '
set @Sql = ' CREATE TABLE ' + @TableName + '(' + @Sql + ')' ;
exec sp_executeSQL @Sql
- - WAITFOR DELAY ' 00 : 00 : 02 '
set @InsertSql = ' Insert into ' + @TableName + ' values ( ' + @InsertSql + ')' ;
exec sp_executeSQL @InsertSql
select * from DashboardInformation
end
- - exec sp_DashboardInformation 1 , 1 , 1 , 1
- - select joiningdate from EMPLOYEE
- - select * from ProfileUpdateRequest
- - - drop table DashboardInformation
- - - - - - - select * from DashboardInformation
- - select * from WFMovementNext
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE PROCEDURE sp_delete_LeaveEntry_with_Workflow
@TranID INT
AS
- - BEGIN
- - Column name or number of supplied values does not match table definition .
- - delete process of WFMOVEMENTTASK
- - IF OBJECT_ID ( ' dbo . DELETED_WFMOVEMENTTASK ' ) IS NULL
- - BEGIN
- - SELECT * INTO DELETED_WFMOVEMENTTASK FROM WFMOVEMENTTASK
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - END
- - ELSE
- - BEGIN
- - INSERT INTO DELETED_WFMOVEMENTTASK
- - SELECT * FROM WFMOVEMENTTASK
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - END
- - DELETE FROM WFMOVEMENTTASK
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - - - delete process of WFMOVEMENTNEXT
- - IF OBJECT_ID ( ' dbo . DELETED_WFMOVEMENTNEXT ' ) IS NULL
- - BEGIN
- - SELECT * INTO DELETED_WFMOVEMENTNEXT FROM WFMOVEMENTNEXT
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - END
- - ELSE
- - BEGIN
- - INSERT INTO DELETED_WFMOVEMENTNEXT
- - SELECT * FROM WFMOVEMENTNEXT
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - END
- - DELETE FROM WFMOVEMENTNEXT
- - WHERE WFMOVEMENTTRANID IN ( SELECT WFMOVEMENTTRANID FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID )
- - - - delete process of WFMOVEMENTTRAN
- - IF OBJECT_ID ( ' dbo . DELETED_WFMOVEMENTTRAN ' ) IS NULL
- - BEGIN
- - SELECT * INTO DELETED_WFMOVEMENTTRAN FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID
- - END
- - ELSE
- - BEGIN
- - INSERT INTO DELETED_WFMOVEMENTTRAN
- - SELECT * FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID
- - END
- - DELETE FROM WFMOVEMENTTRAN WHERE OBJECTID = @TranID
- - - - delete process of LEAVEENTRY
- - IF OBJECT_ID ( ' dbo . DELETED_LEAVEENTRY ' ) IS NULL
- - BEGIN
- - SELECT * INTO DELETED_LEAVEENTRY FROM LEAVEENTRY WHERE TRANID = @TranID
- - END
- - ELSE
- - BEGIN
- - INSERT INTO DELETED_LEAVEENTRY
- - SELECT * FROM LEAVEENTRY WHERE TRANID = @TranID
- - END
- - DELETE FROM LEAVEENTRY WHERE TRANID = @TranID
- - END
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE PROCEDURE [dbo].[sp_Insert_DailyAttendanceAllowance]
@DailyAttendanceProcessID INT ,
@AttnDate DATETIME ,
@EmployeeID INT ,
@ShiftID INT ,
@PayrollTypeID INT ,
@OtherBenifitItemID INT ,
@OtherBenifitValue money ,
@SalaryMonth INT ,
@IsArrear INT ,
@AutoCreated INT ,
@ManualEdited INT ,
@CreatedBy INT ,
@CreatedDate DATETIME ,
@ModifiedBy INT ,
@ModifiedDate DATETIME
AS
BEGIN
SET NOCOUNT ON ;
DECLARE @DailyAttendanceAllowanceCount INT = 0 ;
SET @DailyAttendanceAllowanceCount = ( Select COUNT ( * )
FROM DailyAttendanceAllowance WHERE EmployeeID = @EmployeeID AND AttnDate = @AttnDate ) ;
IF @DailyAttendanceAllowanceCount > 0
BEGIN
- - Update Script
UPDATE DailyAttendanceAllowance
SET
ShiftID = @ShiftID ,
ModifiedBy = @ModifiedBy , ModifiedDate = @ModifiedDate ,
PayrollTypeID = @PayrollTypeID , OtherBenifitItemID = @OtherBenifitItemID , OtherBenifitValue = @OtherBenifitValue ,
SalaryMonth = @SalaryMonth , IsArrear = @IsArrear , AutoCreated = @AutoCreated , ManualEdited = @ManualEdited
WHERE EmployeeID = @EmployeeID AND AttnDate = @AttnDate
END
ELSE
BEGIN
- - Insert Script
INSERT INTO DailyAttendanceAllowance (
DailyAttendanceProcessID , AttnDate , EmployeeID , ShiftID , PayrollTypeID , CreatedBy , CreatedDate ,
OtherBenifitItemID , OtherBenifitValue , SalaryMonth , IsArrear , AutoCreated , ManualEdited
)
VALUES (
null , @AttnDate , @EmployeeID , @ShiftID , @PayrollTypeID , @CreatedBy , @CreatedDate ,
@OtherBenifitItemID , @OtherBenifitValue , @SalaryMonth , @IsArrear , @AutoCreated , @ManualEdited
)
END
END
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE PROCEDURE [dbo].[sp_Insert_DailyAttnProcess]
@EMPLOYEEID INT ,
@AttnDate DATETIME ,
@ShiftID INT ,
@WorkDayType SMALLINT ,
@AttenType SMALLINT ,
@Comments VARCHAR ( 250 ) ,
@Reason VARCHAR ( 250 ) ,
@IsManualEntry BIT ,
@IsLate BIT ,
@LateHour DECIMAL ( 28 , 16 ) ,
@EarlyHour DECIMAL ( 28 , 16 ) ,
@OTHour DECIMAL ( 28 , 16 ) ,
@CREATEDBY INT ,
@CREATEDDATE DATETIME ,
@OtRemarks VARCHAR ( 150 ) ,
@WFStatus INT ,
@ApprovedOTHOUR DECIMAL ( 6 , 2 ) ,
@LMRemarks VARCHAR ( 400 ) ,
@IsFromMobile BIT ,
@ReferenceID INT ,
@actualShiftID INT ,
@Empremarks VARCHAR ( 200 ) ,
@LineManagerID INT ,
@OnbehalfEmpID INT ,
@WorkHour MONEY ,
@InTimeNearestAddress VARCHAR ( 500 ) ,
@OutTimeNearestAddress VARCHAR ( 500 ) ,
@InTimeLatitude VARCHAR ( 200 ) ,
@OutTimeLatitude VARCHAR ( 200 ) ,
@InTimeLongitude VARCHAR ( 200 ) ,
@outTimeLongitude VARCHAR ( 200 ) ,
@LMApproveDate DATETIME ,
@EmpApplyDate DATETIME ,
@InTime DATETIME ,
@OutTime DATETIME ,
@ActualInTime DATETIME ,
@ActualOutTime DATETIME ,
@MODIFIEDBY INT ,
@MODIFIEDDATE DATETIME
AS
BEGIN
SET NOCOUNT ON ;
DECLARE @DailyAttnProcessCount INT = 0 ;
SET @DailyAttnProcessCount = ( Select COUNT ( * ) from DailyAttnProcess WHERE EmployeeID = @EmployeeID AND AttnDate = @AttnDate ) ;
IF @DailyAttnProcessCount > 0
BEGIN
- - Update Script ( no attentype found on employee table )
UPDATE DailyAttnProcess SET ShiftID = @ShiftID , InTime = @InTime , OutTime = @OutTime - - , AttenType = @AttenType
, Comments = @Comments ,
IsManualEntry = @IsManualEntry , IsFromMobile = @IsFromMobile , LateHour = @LateHour , EarlyHour = @EarlyHour , OTHour = @OTHour ,
ReferenceID = @ReferenceID , WorkDayType = @WorkDayType , Reason = @Reason , IsLate = @IsLate , OtRemarks = @OtRemarks ,
WFStatus = @WFStatus , ApprovedOTHOUR = @ApprovedOTHOUR , LMRemarks = @LMRemarks , ActualInTime = @ActualInTime , ActualOutTime = @ActualOutTime ,
actualShiftID = @ActualShiftID , Empremarks = @Empremarks , EmpApplyDate = @EmpApplyDate , LMApproveDate = @LMApproveDate , LineManagerID = @LineManagerID ,
OnbehalfEmpID = @OnbehalfEmpID , WorkHour = @WorkHour , InTimeNearestAddress = @InTimeNearestAddress , OutTimeNearestAddress = @OutTimeNearestAddress ,
InTimeLatitude = @InTimeLatitude , OutTimeLatitude = @OutTimeLatitude , InTimeLongitude = @InTimeLongitude , outTimeLongitude = @outTimeLongitude ,
ModifiedBy = @ModifiedBy , ModifiedDate = @ModifiedDate
WHERE EmployeeID = @EmployeeID AND AttnDate = @AttnDate
END
ELSE
BEGIN
- - Insert Script
INSERT INTO DailyAttnProcess ( EmployeeID , AttnDate , ShiftID , InTime , OutTime - - , AttenType
, Comments ,
IsManualEntry , IsFromMobile , LateHour , EarlyHour , OTHour ,
ReferenceID , WorkDayType , Reason , IsLate , OtRemarks ,
WFStatus , ApprovedOTHOUR , LMRemarks , ActualInTime , ActualOutTime ,
actualShiftID , Empremarks , EmpApplyDate , LMApproveDate , LineManagerID ,
OnbehalfEmpID , WorkHour , InTimeNearestAddress , OutTimeNearestAddress ,
InTimeLatitude , OutTimeLatitude , InTimeLongitude , outTimeLongitude ,
CREATEDBY , CREATEDDATE )
VALUES ( @EmployeeID , @AttnDate , @ShiftID , @InTime , @OutTime - - , @AttenType
, @Comments ,
@IsManualEntry , @IsFromMobile , @LateHour , @EarlyHour , @OTHour ,
@ReferenceID , @WorkDayType , @Reason , @IsLate , @OtRemarks ,
@WFStatus , @ApprovedOTHOUR , @LMRemarks , @ActualInTime , @ActualOutTime ,
@ActualShiftID , @Empremarks , @EmpApplyDate , @LMApproveDate , @LineManagerID ,
@OnbehalfEmpID , @WorkHour , @InTimeNearestAddress , @OutTimeNearestAddress ,
@InTimeLatitude , @OutTimeLatitude , @InTimeLongitude , @outTimeLongitude ,
@CREATEDBY , @CREATEDDATE )
END
END
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "create Procedure spShowRelationShips
(
@Table varchar ( 250 ) = null ,
@RelatedTable varchar ( 250 ) = null
)
as
begin
if @Table is null and @RelatedTable is null
select object_name ( k . constraint_object_id ) ForeginKeyName ,
object_name ( k . Parent_Object_id ) TableName ,
object_name ( k . referenced_object_id ) RelatedTable ,
c . Name RelatedColumnName ,
object_name ( rc . object_id ) + '.' + rc . name RelatedKeyField
from sys . foreign_key_columns k
left join sys . columns c on object_name ( c . object_id ) = object_name ( k . Parent_Object_id ) and c . column_id = k . parent_column_id
left join sys . columns rc on object_name ( rc . object_id ) = object_name ( k . referenced_object_id ) and rc . column_id = k . referenced_column_id
order by 2 , 3
if @Table is not null and @RelatedTable is null
select object_name ( k . constraint_object_id ) ForeginKeyName ,
object_name ( k . Parent_Object_id ) TableName ,
object_name ( k . referenced_object_id ) RelatedTable ,
c . Name RelatedColumnName ,
object_name ( rc . object_id ) + '.' + rc . name RelatedKeyField
from sys . foreign_key_columns k
left join sys . columns c on object_name ( c . object_id ) = object_name ( k . Parent_Object_id ) and c . column_id = k . parent_column_id
left join sys . columns rc on object_name ( rc . object_id ) = object_name ( k . referenced_object_id ) and rc . column_id = k . referenced_column_id
where object_name ( k . Parent_Object_id ) = @Table
order by 2 , 3
if @Table is null and @RelatedTable is not null
select object_name ( k . constraint_object_id ) ForeginKeyName ,
object_name ( k . Parent_Object_id ) TableName ,
object_name ( k . referenced_object_id ) RelatedTable ,
c . Name RelatedColumnName ,
object_name ( rc . object_id ) + '.' + rc . name RelatedKeyField
from sys . foreign_key_columns k
left join sys . columns c on object_name ( c . object_id ) = object_name ( k . Parent_Object_id ) and c . column_id = k . parent_column_id
left join sys . columns rc on object_name ( rc . object_id ) = object_name ( k . referenced_object_id ) and rc . column_id = k . referenced_column_id
where object_name ( k . referenced_object_id ) = @RelatedTable
order by 2 , 3
end
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "create function fun_datediff_in_months
(
@StartDate date ,
@EndDate date
)
returns int
as
begin
declare @months int = 0 ;
set @months = ( select CAST ( DATEDIFF ( MONTH , @StartDate , @EndDate ) AS int ) -
( DATEPART ( dd , @StartDate ) - 1 ) / DATEDIFF ( DAY , @StartDate , DATEADD ( MONTH , 1 , @StartDate ) ) +
( DATEPART ( dd , @EndDate ) * 1 ) / DATEDIFF ( DAY , @EndDate , DATEADD ( MONTH , 1 , @EndDate ) ) )
return @months
end
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE FUNCTION GetDeptHeadID(@employeeId as INT)
RETURNS varchar ( 15 )
AS
BEGIN
DECLARE @EmployeeNo VARCHAR ( 15 ) ;
BEGIN
WITH
cteReports ( Organogramid , PositionName , PARENTID , TIER )
AS
(
SELECT Organogramid , PositionName , PARENTID , organogram . TIER
FROM organogram , organEmployee
WHERE organogram . ORGANOGRAMID = organEmployee . NODEID and organEmployee . EMPLOYEEID = @employeeId
UNION ALL
SELECT e . Organogramid , e . PositionName , e . PARENTID , e . TIER
FROM organogram e
INNER JOIN cteReports r
ON e . Organogramid = r . PARENTID
)
SELECT @EmployeeNo =
em . EMPLOYEENO
FROM cteReports
left join ORGANPOSITION on cteReports . Organogramid = ORGANPOSITION . nodeid
left join OGPositionType on OGPositionType . OGPOSITIONTYPEID = ORGANPOSITION . POSITIONTYPEID
left JOIN organEmployee oe on oe . NODEID = cteReports . Organogramid
left JOIN employee em on em . EMPLOYEEID = oe . EMPLOYEEID
WHERE OGPOSITIONTYPE = 3 AND tier = 2
order by cteReports . tier DESC
END
RETURN @EmployeeNo
END
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "CREATE FUNCTION [dbo].[GetFormattedDate](@SelectedDate DATETIME, @IsTimeNeeded BIT)
RETURNS VARCHAR ( 20 )
AS
BEGIN
DECLARE @formattedDateTime VARCHAR ( 20 ) ;
IF @IsTimeNeeded = 1
Begin
SET @formattedDateTime = CONVERT ( VARCHAR , @SelectedDate , 106 ) + ' ' + STUFF ( RIGHT ( CONVERT ( VARCHAR , @SelectedDate , 100 ) , 7 ) , 6 , 0 , ' ' )
END
ELSE
BEGIN
SET @formattedDateTime = CONVERT ( VARCHAR , @SelectedDate , 106 )
END
RETURN @formattedDateTime
END
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "DROP VIEW Salary
CREATE VIEW SALARY
AS
SELECT EMPLOYEEID ,
SALARYMONTH ,
ITEMGROUP ,
ITEMCODE ,
ITEMID ,
DESCRIPTION ,
CHANGEDAMOUNT ,
CCID ,
PAYROLLTYPEID
FROM ( SELECT emp . EMPLOYEEID ,
FORMAT ( b . SalaryMonth , ' DD Mon YYYY ' ) SalaryMonth ,
b . ITEMGROUP ,
b . ITEMCODE ,
b . ITEMID ,
b . DESCRIPTION ,
b . CHANGEDAMOUNT ,
( SELECT c . COSTCENTERID
FROM SALARYEMPCOSTCENTER c
WHERE c . EMPLOYEEID = emp . EMPLOYEEID
AND c . SALARYMONTHLYID = b . SALARYMONTHLYID )
ccid ,
b . PAYROLLTYPEID
FROM EMPLOYEE emp
LEFT OUTER JOIN
( SELECT sm . EMPLOYEEID ,
sm . SALARYMONTH ,
sm . PAYROLLTYPEID ,
smd . *
FROM SALARYMONTHLYDETAIL smd , SALARYMONTHLY sm
WHERE smd . SALARYMONTHLYID = sm . SALARYMONTHLYID ) b
ON ( b . EMPLOYEEID = emp . EMPLOYEEID ) ) tab1
WHERE salarymonth IS NOT NULL ;
GO ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "IF COL_LENGTH('dbo.userrole', 'eventdate') IS NOT NULL
BEGIN
update userrole set EVENTDATE = ' 1 Jan 2023 '
END ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "IF COL_LENGTH('dbo.users', 'usertype') IS NOT NULL
BEGIN
update users set usertype = 0 WHERE userid in ( - 9 , - 8 )
END ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "IF COL_LENGTH('dbo.PasswordHistory', 'passwordhistoryid') IS NOT NULL
BEGIN
IF OBJECT_ID ( ' dbo . [ PK_PasswordHistory ] ' ) IS NOT NULL
begin
ALTER TABLE dbo . PasswordHistory DROP CONSTRAINT PK_PasswordHistory ;
end
ALTER TABLE PasswordHistory ALTER COLUMN PassHisID int NULL ;
- - update PasswordHistory set passwordhistoryid = PassHisID ;
END ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "IF COL_LENGTH('dbo.HOLIDAYCALENDAR', 'EntryDate') IS NOT NULL
BEGIN
ALTER TABLE HOLIDAYCALENDAR ALTER COLUMN EntryDate DateTime NULL
END ");
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( @ "IF COL_LENGTH('dbo.HOLIDAYCALENDAR', 'userid') IS NOT NULL
BEGIN
ALTER TABLE HOLIDAYCALENDAR ALTER COLUMN userid DateTime NULL
END ");
#endregion
//foreign key
sql . AppendFormat ( "\r\n\r\n" ) ;
sql . AppendFormat ( "-------------- Make columns name upper case ------------------------------------\r\n\r\n" ) ;
DataTable dtCols = GetColumnList ( EnumTargetType . Destination ) ;
if ( dtCols ! = null )
{
foreach ( DataRow dr in dtCols . Rows )
{
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( dr [ 0 ] . ToString ( ) ) ;
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( "GO" ) ;
}
}
WriteScript ( sql . ToString ( ) ) ;
}
catch ( Exception ex )
{
MessageBox . Show ( "exception occured while creating table:" + ex . Message + "\t" + ex . GetType ( ) , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private string GetColumnSqlCREATE ( TableList row )
{
StringBuilder sql = new StringBuilder ( ) ;
var identityColumnExist = _dtIdentityColumns . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = row . TableName . ToLower ( ) . ToLower ( ) & & x [ 1 ] . ToString ( ) . ToLower ( ) = = row . ColumnName . ToLower ( ) . ToLower ( ) ) . Any ( ) ;
if ( identityColumnExist )
{
sql . AppendFormat ( "\t[{0}] [{1}] {2} IDENTITY(1,1) " ,
row . ColumnName ,
row . DataType ,
( HasLength ( row . DataType . ToString ( ) ) ) ? "(" + row . Length . ToString ( ) + ")" : ( HasPrecisionAndScale ( row . DataType ) ) ? "(" + row . Precision . ToString ( ) + "," + row . Scale . ToString ( ) + ")" : ""
) ;
}
else
{
sql . AppendFormat ( "\t[{0}] [{1}] {2} " ,
row . ColumnName ,
row . DataType ,
( HasLength ( row . DataType . ToString ( ) ) ) ? "(" + row . Length . ToString ( ) + ")" : ( HasPrecisionAndScale ( row . DataType ) ) ? "(" + row . Precision . ToString ( ) + "," + row . Scale . ToString ( ) + ")" : ""
) ;
}
if ( row . IsDefaultValueRequired | | ! String . IsNullOrEmpty ( row . DefaultValue ) )
{
row . DefaultValue = DefaultValueSet ( row . DefaultValue , row . ColumnName ) ;
if ( row . DataType . ToLower ( ) = = "int" | | row . DataType . ToLower ( ) = = "smallint" | |
row . DataType . ToLower ( ) = = "bit" | |
row . DataType . ToLower ( ) = = "money" | |
row . DataType . ToLower ( ) = = "numeric" | |
row . DataType . ToLower ( ) = = "decimal" | |
row . DataType . ToLower ( ) = = "float" | |
row . DataType . ToLower ( ) = = "tinyint" | |
( ( row . DataType . ToLower ( ) = = "date" | | row . DataType . ToLower ( ) = = "datetime" | | row . DataType . ToLower ( ) = = "datetime2" ) & & row . DefaultValue = = "GETDATE()" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
if ( row . DefaultValue . Contains ( "'" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
sql . AppendFormat ( "{0}" ,
"DEFAULT ('" + row . DefaultValue + "')" ) ;
}
}
}
if ( row . AllowNull . ToLower ( ) = = "yes" )
{
sql . AppendFormat ( "{0}" ,
"NULL" ) ;
}
else
{
sql . AppendFormat ( "{0}" ,
"NOT NULL" ) ;
}
sql . AppendFormat ( "," ) ;
sql . AppendFormat ( "\r\n" ) ;
return sql . ToString ( ) ;
}
private string GetColumnSqlALTER ( TableList row )
{
StringBuilder sql = new StringBuilder ( ) ;
sql . AppendFormat ( "\t[{0}] [{1}] {2} {3} " ,
row . ColumnName ,
row . DataType ,
( HasLength ( row . DataType . ToString ( ) ) ) ? "(" + row . Length . ToString ( ) + ")" : ( HasPrecisionAndScale ( row . DataType ) ) ? "(" + row . Precision . ToString ( ) + "," + row . Scale . ToString ( ) + ")" : "" ,
( row . AllowNull . ToLower ( ) = = "yes" ) ? "NULL" : "NOT NULL" //,
// row.IsDefaultValueRequired ? ((row.DataType.ToLower() == "int" || row.DataType.ToLower() == "smallint" || ((row.DataType.ToLower() == "date" || row.DataType.ToLower() == "datetime" || row.DataType.ToLower() == "datetime2") && row.DefaultValue == "GETDATE()")) ? "DEFAULT (" + row.DefaultValue + ")" : "DEFAULT ('" + row.DefaultValue + "')") : string.Empty
// row.IsDefaultValueRequired ? ((row.DataType.ToLower() == "int" || row.DataType.ToLower() == "smallint") ? "DEFAULT (" + row.DefaultValue + ")" : "DEFAULT ('" + row.DefaultValue + "')") : string.Empty
) ;
if ( row . IsDefaultValueRequired | | ! String . IsNullOrEmpty ( row . DefaultValue ) )
{
row . DefaultValue = DefaultValueSet ( row . DefaultValue , row . ColumnName ) ;
if ( row . DataType . ToLower ( ) = = "int" | | row . DataType . ToLower ( ) = = "smallint" | |
row . DataType . ToLower ( ) = = "bit" | |
row . DataType . ToLower ( ) = = "money" | |
row . DataType . ToLower ( ) = = "numeric" | |
row . DataType . ToLower ( ) = = "decimal" | |
row . DataType . ToLower ( ) = = "float" | |
row . DataType . ToLower ( ) = = "tinyint" | |
( ( row . DataType . ToLower ( ) = = "date" | | row . DataType . ToLower ( ) = = "datetime" | | row . DataType . ToLower ( ) = = "datetime2" ) & & row . DefaultValue = = "GETDATE()" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
if ( row . DefaultValue . Contains ( "'" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
sql . AppendFormat ( "{0}" ,
"DEFAULT ('" + row . DefaultValue + "')" ) ;
}
}
}
sql . AppendFormat ( "," ) ;
sql . AppendFormat ( "\r\n" ) ;
return sql . ToString ( ) ;
}
private string DefaultValueSet ( string value , string colName )
{
value = DefValueBracesCheck ( value ) ;
if ( colName . ToLower ( ) = = "userid" | | colName . ToLower ( ) = = "createdby" )
{
value = ! string . IsNullOrEmpty ( textBox1 . Text ) ? textBox1 . Text : value ;
}
else if ( colName . ToLower ( ) = = "payrolltypeid" )
{
value = ! string . IsNullOrEmpty ( textBox2 . Text ) ? textBox2 . Text : value ;
}
else if ( colName . ToLower ( ) = = "createddate" )
{
value = ! string . IsNullOrEmpty ( textBox3 . Text ) ? textBox3 . Text : value ;
}
return value ;
}
private string DefValueBracesCheck ( string value )
{
string first = "(" ;
string last = ")" ;
char [ ] bracketChars = { '(' , ')' } ;
foreach ( char bracket in bracketChars )
{
value = value . Replace ( bracket . ToString ( ) , string . Empty ) ;
if ( value . ToLower ( ) = = "getdate" )
{
value = value + first + last ;
}
}
return value ;
}
private StringBuilder DefaultValueAppendAlterColumn ( TableList row , StringBuilder sql )
{
if ( row . IsDefaultValueRequired | | ! String . IsNullOrEmpty ( row . DefaultValue ) )
{
row . DefaultValue = DefaultValueSet ( row . DefaultValue , row . ColumnName ) ;
sql . AppendFormat ( "ALTER TABLE [{0}] ADD CONSTRAINT [{1}] " ,
row . TableName ,
"DF_" + row . TableName + "_" + row . ColumnName ) ;
if ( row . DataType . ToLower ( ) = = "int" | | row . DataType . ToLower ( ) = = "smallint" | |
row . DataType . ToLower ( ) = = "bit" | |
row . DataType . ToLower ( ) = = "money" | |
row . DataType . ToLower ( ) = = "numeric" | |
row . DataType . ToLower ( ) = = "decimal" | |
row . DataType . ToLower ( ) = = "float" | |
row . DataType . ToLower ( ) = = "tinyint" | |
( ( row . DataType . ToLower ( ) = = "date" | | row . DataType . ToLower ( ) = = "datetime" | | row . DataType . ToLower ( ) = = "datetime2" ) & & row . DefaultValue . ToLower ( ) = = "getdate()" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
if ( row . DefaultValue . Contains ( "'" ) )
{
sql . AppendFormat ( "{0}" ,
"DEFAULT (" + row . DefaultValue + ")" ) ;
}
else
{
sql . AppendFormat ( "{0}" ,
"DEFAULT ('" + row . DefaultValue + "')" ) ;
}
}
sql . AppendFormat ( " FOR {0}" ,
row . ColumnName ) ;
sql . AppendFormat ( ";\r\n" ) ;
}
return sql ;
}
private StringBuilder ForeignKeyCreate ( DataTable dtFKSource , StringBuilder sql , DataTable dtFKDestination )
{
List < string > _oTableNames = _oTableLists . Select ( y = > y . TableName ) . Distinct ( ) . ToList ( ) ;
foreach ( var item in _oTableNames )
{
string fkCol = null ;
string fkRefCol = null ;
string fkRefTable = null ;
string fkConstraint = null ;
foreach ( DataRow dr in dtFKSource . Rows )
{
if ( item = = dr [ 1 ] . ToString ( ) )
{
fkConstraint = dr [ 0 ] . ToString ( ) ;
fkCol = dr [ 2 ] . ToString ( ) ;
fkRefTable = dr [ 3 ] . ToString ( ) ;
fkRefCol = dr [ 4 ] . ToString ( ) ;
}
}
if ( fkCol ! = null )
{
var fkRefTablePKExist = dtFKDestination . AsEnumerable ( ) . Where ( x = > x [ 3 ] . ToString ( ) . ToLower ( ) = = fkRefTable . ToLower ( ) & & x [ 4 ] . ToString ( ) . ToLower ( ) = = fkRefCol . ToLower ( ) & & x [ 1 ] . ToString ( ) . ToLower ( ) = = item . ToLower ( ) & & x [ 2 ] . ToString ( ) . ToLower ( ) = = fkCol . ToLower ( ) ) . Any ( ) ;
if ( fkRefTablePKExist = = false )
{
sql . AppendFormat ( "\r\n" ) ;
sql . AppendFormat ( "ALTER TABLE [{0}] ADD CONSTRAINT [{1}] FOREIGN KEY ({2}) REFERENCES {3} ({4});" ,
item , fkConstraint , fkCol , fkRefTable , fkRefCol ) ;
}
}
}
return sql ;
}
private StringBuilder ExistingDefaultConstraintCheck ( DataTable dtDefaultKeyDestination , StringBuilder sql , TableList row )
{
//if (row.IsDefaultValueRequired || !String.IsNullOrEmpty(row.DefaultValue))
//{
var PrevDFConExist = dtDefaultKeyDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = row . TableName . ToLower ( ) & & x [ 1 ] . ToString ( ) . ToLower ( ) = = row . ColumnName . ToLower ( ) ) . Any ( ) ;
if ( PrevDFConExist )
{
var defRow = dtDefaultKeyDestination . AsEnumerable ( ) . Where ( x = > x [ 0 ] . ToString ( ) . ToLower ( ) = = row . TableName . ToLower ( ) & & x [ 1 ] . ToString ( ) . ToLower ( ) = = row . ColumnName . ToLower ( ) ) . FirstOrDefault ( ) ;
sql . AppendFormat ( "ALTER TABLE [{0}] DROP CONSTRAINT {1}" ,
row . TableName , defRow [ 2 ] . ToString ( )
) ;
sql . AppendFormat ( ";\r\n" ) ;
}
//}
return sql ;
}
private static bool HasLength ( string dataType )
{
Dictionary < string , bool > dataTypes = new Dictionary < string , bool > ( ) ;
dataTypes . Add ( "bigint" , false ) ;
dataTypes . Add ( "binary" , true ) ;
dataTypes . Add ( "bit" , false ) ;
dataTypes . Add ( "char" , true ) ;
dataTypes . Add ( "date" , false ) ;
dataTypes . Add ( "datetime" , false ) ;
dataTypes . Add ( "datetime2" , false ) ;
dataTypes . Add ( "datetimeoffset" , false ) ;
dataTypes . Add ( "decimal" , false ) ;
dataTypes . Add ( "float" , true ) ;
dataTypes . Add ( "geography" , false ) ;
dataTypes . Add ( "geometry" , false ) ;
dataTypes . Add ( "hierarchyid" , false ) ;
dataTypes . Add ( "image" , false ) ;
dataTypes . Add ( "int" , false ) ;
dataTypes . Add ( "money" , false ) ;
dataTypes . Add ( "nchar" , true ) ;
dataTypes . Add ( "ntext" , false ) ;
dataTypes . Add ( "numeric" , false ) ;
dataTypes . Add ( "nvarchar" , true ) ;
dataTypes . Add ( "real" , false ) ;
dataTypes . Add ( "smalldatetime" , false ) ;
dataTypes . Add ( "smallint" , false ) ;
dataTypes . Add ( "smallmoney" , false ) ;
dataTypes . Add ( "sql_variant" , false ) ;
dataTypes . Add ( "sysname" , false ) ;
dataTypes . Add ( "text" , false ) ;
dataTypes . Add ( "time" , false ) ;
dataTypes . Add ( "timestamp" , false ) ;
dataTypes . Add ( "tinyint" , false ) ;
dataTypes . Add ( "uniqueidentifier" , false ) ;
dataTypes . Add ( "varbinary" , true ) ;
dataTypes . Add ( "varchar" , true ) ;
dataTypes . Add ( "xml" , false ) ;
if ( dataTypes . ContainsKey ( dataType . ToLower ( ) ) )
return dataTypes [ dataType . ToLower ( ) ] ;
return false ;
}
private static bool HasPrecisionAndScale ( string dataType )
{
if ( _dataTypes . ContainsKey ( dataType . ToLower ( ) ) )
return _dataTypes [ dataType . ToLower ( ) ] ;
return false ;
}
private void WriteScript ( string script )
{
try
{
SaveFileDialog sDialog = new SaveFileDialog ( ) ;
sDialog . Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
sDialog . FileName = "Comparison Script For " + cmbDestinationDatabase . Text ;
if ( sDialog . ShowDialog ( ) = = DialogResult . OK )
{
File . WriteAllText ( sDialog . FileName , script ) ;
MessageBox . Show ( "File created at " + sDialog . FileName , "Saved" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
}
//var finalPath = string.Empty;
//var basePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
////var path = $@"{basePath}Documents\";
//var path = basePath;
//Directory.CreateDirectory(path);
//finalPath = Path.Combine(path, "Script.txt");
//if (File.Exists(finalPath))
//{
// File.Delete(finalPath);
//}
//using (var w = new StreamWriter(finalPath))
//{
// w.WriteLine("---------------Script File Created-----------------");
//}
//using (var w = File.AppendText(finalPath))
//{
// if (!string.IsNullOrEmpty(script))
// w.WriteLine("\n" + script);
//}
//MessageBox.Show("Scriot has created for selected tables");
}
catch ( Exception )
{
//ignored
}
}
public class TableList
{
public string TableName { get ; set ; }
public string ColumnName { get ; set ; }
public string DataType { get ; set ; }
public string Length { get ; set ; }
public string AllowNull { get ; set ; }
public string DefaultValue { get ; set ; }
public EnumScriptType ScriptType { get ; set ; }
public bool IsDefaultValueRequired { get ; set ; }
public string Precision { get ; set ; }
public string Scale { get ; set ; }
}
private void grdList_CellValueChanged ( object sender , DataGridViewCellEventArgs e )
{
//_oTableLists = new List<TableList>();
//foreach (DataGridViewRow grd in grdList.Rows)
//{
// TableList item = (TableList)grd.Tag;
// item.DefaultValue = grd.Cells[e.RowIndex].Value.ToString();
// _oTableLists.Add(item);
//}
}
private void label13_Click ( object sender , EventArgs e )
{
}
private void Form1_Load ( object sender , EventArgs e )
{
CreateDataTypePrecision ( ) ;
this . Text = "Compare Database --> Version : " + Assembly . LoadFile ( Application . StartupPath + "\\DatabaseComparison.exe" ) . GetName ( ) . Version . ToString ( ) ;
}
private void CreateDataTypePrecision ( )
{
_dataTypes . Add ( "bigint" , false ) ;
_dataTypes . Add ( "binary" , false ) ;
_dataTypes . Add ( "bit" , false ) ;
_dataTypes . Add ( "char" , false ) ;
_dataTypes . Add ( "date" , false ) ;
_dataTypes . Add ( "datetime" , false ) ;
_dataTypes . Add ( "datetime2" , false ) ;
_dataTypes . Add ( "datetimeoffset" , false ) ;
_dataTypes . Add ( "decimal" , true ) ;
_dataTypes . Add ( "float" , false ) ;
_dataTypes . Add ( "geography" , false ) ;
_dataTypes . Add ( "geometry" , false ) ;
_dataTypes . Add ( "hierarchyid" , false ) ;
_dataTypes . Add ( "image" , false ) ;
_dataTypes . Add ( "int" , false ) ;
_dataTypes . Add ( "money" , false ) ;
_dataTypes . Add ( "nchar" , false ) ;
_dataTypes . Add ( "ntext" , false ) ;
_dataTypes . Add ( "numeric" , true ) ;
_dataTypes . Add ( "nvarchar" , false ) ;
_dataTypes . Add ( "real" , true ) ;
_dataTypes . Add ( "smalldatetime" , false ) ;
_dataTypes . Add ( "smallint" , false ) ;
_dataTypes . Add ( "smallmoney" , false ) ;
_dataTypes . Add ( "sql_variant" , false ) ;
_dataTypes . Add ( "sysname" , false ) ;
_dataTypes . Add ( "text" , false ) ;
_dataTypes . Add ( "time" , false ) ;
_dataTypes . Add ( "timestamp" , false ) ;
_dataTypes . Add ( "tinyint" , false ) ;
_dataTypes . Add ( "uniqueidentifier" , false ) ;
_dataTypes . Add ( "varbinary" , false ) ;
_dataTypes . Add ( "varchar" , false ) ;
_dataTypes . Add ( "xml" , false ) ;
}
}
}