EnVisageOnline/Main/Source/ImportClientData/ImportPrevuXLSClientData/Form1.cs

2000 lines
65 KiB
C#

using System;
using System.Collections;
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;
namespace ImportPrevuXLSClientData
{
public partial class Form1 : Form
{
private Hashtable MissingValueList = new Hashtable();
private List<SheetToTableMapping> SheetToTablMapList = new List<SheetToTableMapping>();
private string m_connectionString;
public Form1()
{
InitializeComponent();
buildSheetToTableMapList();
importDocTbx.Text = @"c:\temp\Client Setup DK 120115.xlsx";
}
delegate void setGridDataSourceCallback(object src);
public void setGridDataSource(object src)
{
if (this.dataGridView1.InvokeRequired)
{
setGridDataSourceCallback d = new setGridDataSourceCallback(setGridDataSource);
object[] parms = { src };
this.dataGridView1.Invoke(d, parms);
}
else
{
this.dataGridView1.DataSource = src;
}
}
//
delegate void DisplayMessageCallback(Exception ex);
public void DisplayMessage(Exception ex)
{
if (this.InvokeRequired)
{
DisplayMessageCallback d = new DisplayMessageCallback(DisplayMessage);
object[] parms = { ex };
this.Invoke(d, parms);
}
else
{
MessageBox.Show(this, ex.ToString(), "Exception in add sql data");
}
}
delegate void DisplayMessageStringCallback(string ex);
public void DisplayMessageString(string ex)
{
if (this.InvokeRequired)
{
DisplayMessageStringCallback d = new DisplayMessageStringCallback(DisplayMessageString);
object[] parms = { ex };
this.Invoke(d, parms);
}
else
{
MessageBox.Show(this, ex, "Error in sql test");
}
}
delegate void setEnableFormCallback(bool enabled);
public void setEnableForm(bool enabled)
{
if (this.InvokeRequired)
{
setEnableFormCallback d = new setEnableFormCallback(setEnableForm);
object[] parms = { enabled };
this.Invoke(d, parms);
}
else
{
this.Enabled = enabled;
}
}
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ProcessData));
t.Start();
}
private void ProcessData()
{
setEnableForm( false);
buildCntxStr();
if (!checkCntxStr())
{
setEnableForm(true);
return;
}
if (sqlPrepScriptTbx.Text != null && sqlPrepScriptTbx.Text != "")
{
string sql = System.IO.File.ReadAllText(sqlPrepScriptTbx.Text);
if (! this.execSql(sql))
{
setEnableForm(true);
return;
}
}
Hashtable scripts = new Hashtable();
DataTable t = new DataTable();
foreach (SheetToTableMapping map in SheetToTablMapList)
{
ImportPrevuXLSClientData.importXlSData d = new importXlSData();
try
{
t= d.GetData(importDocTbx.Text, map.XLSSheetName);
}
catch (Exception dds) {
DisplayMessage(dds);
return;
}
//dataGridView1.DataSource = t;
int onRow = 1;
if (map.TableName == "StrategicGoal2Project")
{
}
foreach (DataRow row in t.Rows)
{
onRow++;
map.OnlineNumber = onRow;
if (onRow < map.StartOnRow)
continue;
bool valueset = false;
SheetToTableMapping tmpMap = map.clone();
if (tmpMap.TableName == "Scenario")
{
}
foreach (ColumnMapping cmap in tmpMap.ColumnMap)
{
string val = null;
if (cmap.XLSColumnName != null)
{
if (cmap.XLSColumnNumber.HasValue)
{
val = row[cmap.XLSColumnNumber.Value].ToString();
}
else
{
val = row[cmap.XLSColumnName].ToString();
}
if (cmap.required.HasValue)
if (cmap.required.Value && (val == "" || val == null))
val = cmap.DefaultValue;
}
else if (cmap.DefaultValue != null && cmap.SqlTOGetValue == null)
val = cmap.DefaultValue;
else if (cmap.SqlTOGetValue != null)
{
string sql = cmap.SqlTOGetValue;
int startidx = sql.IndexOf('%');
if (startidx > 0)
{
int lastidx = sql.LastIndexOf('%');
if (lastidx > startidx)
{
string xlscolname = sql.Substring(startidx + 1, lastidx - (startidx + 1));
string colval = row[xlscolname].ToString();
if (colval == "")
colval = cmap.DefaultValue;
if (cmap.DataType == "string[]" && cmap.DataDelim.HasValue && colval!=null)
{
string[] xlsvals = colval.Split(cmap.DataDelim.Value);
string sep = "";
foreach (string xlsval in xlsvals)
{
string sql2 = sql.Replace("%" + xlscolname + "%", xlsval.Trim().TrimStart(' '));
val += sep+ getSqlValue(sql2);
sep = cmap.DataDelim.Value.ToString();
}
}
else
{
if (colval == null)
colval = "";
sql = sql.Replace("%" + xlscolname + "%", colval.Trim().TrimStart(' '));
val = getSqlValue(sql);
;
}
}
}
}
if (val == "")
val = null;
if ((val != null && cmap.DefaultValue == null) || tmpMap.AlldefaultValues)
valueset = true;
cmap.value = val;
}
if (valueset)
{
string compareSql = tmpMap.getSql(false);
if (compareSql != null && compareSql !="")
{
if (!scripts.ContainsKey(compareSql))
{
scripts.Add(compareSql, tmpMap);
string sqlinsert = tmpMap.getSql(true);
if (!execSql(sqlinsert))
{
buildReport();
setEnableForm(true);
return;
}
}
}
else
{
MissingValueList.Add(tmpMap, t);
}
}
else
break;
if (tmpMap.AlldefaultValues)
break;
}
}
//prevuew db on qa server:PrevuICMCVI
buildReport();
setEnableForm(true);
}
private bool checkCntxStr()
{
bool ok = true;
string testcmd= "select * from AspNetUsers";
string val=this.getSqlValue(testcmd);
if (val == null)
{
DisplayMessageString("Error connecting to sql. Please check your settings!");
ok = false;
}
return ok;
}
private void buildReport()
{
List<string> lines = new List<string>();
string columns = "xslname |totable |line number|XLSColumnName|SqlTOGetValue|TableColumnName";
lines.Add(columns);
foreach (SheetToTableMapping m in MissingValueList.Keys)
{
string xslname = m.XLSSheetName;
string totable = m.TableName;
int online = m.OnlineNumber;
foreach(ColumnMapping c in m.ColumnMap)
{
if (c.required.HasValue)
if (c.required.Value)
if (c.value == null)
{
lines.Add(xslname + "|" + totable + "|" + online.ToString() + "|" + c.XLSColumnName + "|" + c.SqlTOGetValue + "|" + c.TableColumnName);
}
}
}
System.IO.File.WriteAllLines(errorLogTbx.Text, lines.ToArray());
DataTable t = new DataTable();
foreach (string c in columns.Split('|'))
t.Columns.Add(c);
foreach(string line in lines)
{
if (line != columns)
t.Rows.Add(line.Split('|'));
}
setGridDataSource(t);
}
public bool execSql(string sqlcmd)
{
bool ok = true;
using (SqlConnection connection = new SqlConnection(this.m_connectionString))
{
using (SqlCommand command = new SqlCommand(sqlcmd, connection))
{
try
{
//Mark the Command as a text
connection.Open();
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException sqlexception)
{
DisplayMessage(sqlexception);
ok = false;
}
catch (System.Exception exception)
{
DisplayMessage(exception);
ok = false;
}
finally
{
//close the connection
if (connection.State == ConnectionState.Open)
connection.Close();
}
}
}
return ok;
}
public string getSqlValue(string sqlcmd)
{
using (SqlConnection connection = new SqlConnection(this.m_connectionString))
{
using (SqlCommand command = new SqlCommand(sqlcmd, connection))
{
//Create a DataTable
DataTable dataTable = new DataTable();
try
{
//Mark the Command as a text
connection.Open();
command.CommandType = CommandType.Text;
//Create a SQL Adapter
SqlDataAdapter adapter = new SqlDataAdapter(command);
//Fill the DataSet
adapter.Fill(dataTable);
}
catch (System.Data.SqlClient.SqlException sqlexception)
{
}
catch (System.Exception exception)
{
}
finally
{
//close the connection
if (connection.State == ConnectionState.Open)
connection.Close();
}
if (dataTable != null)
{
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0][0].ToString();
}
}
return null;
}
}
}
private void buildSheetToTableMapList()
{
#region Company 0
Guid CompanyID = Guid.NewGuid();
List<ColumnMapping> cols = new List<ColumnMapping>();
ColumnMapping c = new ColumnMapping()
{
TableColumnName = "Id",
DefaultValue=CompanyID.ToString(),
DataType="string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Company Name",
DataType = "string"
};
cols.Add(c);
SheetToTableMapping t = new SheetToTableMapping()
{
TableName = "Company",
XLSSheetName = "Company Info",
Order = 0,
ID=CompanyID,
ColumnMap=cols
};
SheetToTablMapList.Add(t);
#endregion
#region Client 1
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
XLSColumnName= "Client Number*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Client Name",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Client",
XLSSheetName = "Clients",
Order = 1,
TableMappingObj = new TableMapping()
{
ParentID = CompanyID,
ParentName = "Company",
ChildName = "Client",
tableName = "Company2Client"
},
ColumnMap=cols
};
SheetToTablMapList.Add(t);
#endregion
#region CompanyToClient 1a
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ClientId",
SqlTOGetValue = "select top 1 Id from Client where Name='%Client Name%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CompanyId",
DefaultValue = CompanyID.ToString(),
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Company2Client",
XLSSheetName = "Clients",
Order = 1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Contacts (internal) 2
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue="0",
DataType="int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "LastName",
XLSColumnName= "Last Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FirstName",
XLSColumnName = "First Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Email",
XLSColumnName = "Email",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Phone",
XLSColumnName = "Phone #",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ParentId",
DefaultValue= CompanyID.ToString(),
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ContactClassification",
DefaultValue ="0",
DataType = "int"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Contact",
XLSSheetName = "Internal Contacts",
Order =2,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Contacts (external) 3
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue = "1",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "LastName",
XLSColumnName = "Last Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FirstName",
XLSColumnName = "First Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Email",
XLSColumnName = "Email",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Phone",
XLSColumnName = "Phone #",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ContactClassification",
DefaultValue = "0",
DataType = "int"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Contact",
XLSSheetName = "External Contacts",
Order = 3,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Expenditure 4
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Expenditure Category Name",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Expenditure",
XLSSheetName = "Roles",
Order = 4,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region GLAccount 5
cols = new List<ColumnMapping>();
Guid GLAccountID = Guid.NewGuid();
c = new ColumnMapping()
{
TableColumnName = "Id",
DefaultValue= GLAccountID.ToString(),
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "GLNumber",
DefaultValue="1",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
DefaultValue = "N/A",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "GLAccount",
XLSSheetName = "Roles",
Order = 5,
ColumnMap = cols,
AlldefaultValues=true
};
SheetToTablMapList.Add(t);
#endregion
#region UOM 6
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
DefaultValue = "Hours",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "UOMValue",
XLSColumnName = "Standard Hours Per Week",
DataType = "int"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "UOM",
XLSSheetName = "Roles",
Order = 6,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region CreditDepartment 7
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Cost Center Name*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CreditNumber",
XLSColumnName= "Cost Center*",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "CreditDepartment",
XLSSheetName = "Roles",
Order = 7,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region ExpenditureCategory 8
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ExpenditureId",
SqlTOGetValue = "Select TOP 1 Id from Expenditure where Name='%Expenditure Category Name%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "GLId",
SqlTOGetValue = "Select TOP 1 Id from GLAccount where Name='%GL Account*%'",
DefaultValue="N/A",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "UOMId",
SqlTOGetValue = "Select TOP 1 Id from UOM where UOMValue='%Standard Hours Per Week%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CreditId",
SqlTOGetValue = "Select TOP 1 Id from CreditDepartment where CreditNumber='%Cost Center*%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue="1",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "UseType",
DefaultValue = "1",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CGEFX",
DefaultValue = "CG",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName= "Expenditure Category Name",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "ExpenditureCategory",
XLSSheetName = "Roles",
Order = 8,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region FiscalCalendar 9
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName= "Name",
XLSColumnNumber=0,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
XLSColumnName= "Type",
XLSColumnNumber = 1,
DataType = "cal_type"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "YearInt",
XLSColumnName= "YearInt",
XLSColumnNumber = 2,
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "QuarterInt",
XLSColumnName = "QuarterInt",
XLSColumnNumber = 3,
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PeriodInt",
XLSColumnName = "PeriodInt",
XLSColumnNumber = 4,
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StartDate",
XLSColumnName = "StartDate",
XLSColumnNumber = 5,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EndDate",
XLSColumnName = "EndDate",
XLSColumnNumber = 6,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "SystemName",
XLSColumnName = "SystemName",
XLSColumnNumber = 7,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "NonWorking",
XLSColumnName = "NonWorking",
XLSColumnNumber = 8,
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "AdjustingPeriod",
XLSColumnName = "AdjustingPeriod",
XLSColumnNumber = 9,
DataType = "bool"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "FiscalCalendar",
XLSSheetName = "Fiscal Calendar",
Order = 9,
ColumnMap = cols,
StartOnRow=5
};
SheetToTablMapList.Add(t);
#endregion
#region Team 10
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Team",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CompanyId",
DefaultValue = CompanyID.ToString(),
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Team",
XLSSheetName = "Teams",
Order = 10,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region PeopleResource 11
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FirstName",
XLSColumnName = "First Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "LastName",
XLSColumnName = "Last Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "IsActiveEmployee",
DefaultValue=true.ToString(),
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "TeamId",
SqlTOGetValue= "select top 1 Id from Team where Name='%Team Name%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ExpenditureCategoryId",
SqlTOGetValue = "select top 1 Id from ExpenditureCategory where Name='%Role (Expenditure Category)%'",
DataType = "string",
required=true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StartDate",
XLSColumnName = "Start Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EndDate",
DefaultValue=DateTime.Now.AddYears(20).ToString(),
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EmployeeID",
XLSColumnName = "Email",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "PeopleResource",
XLSSheetName = "Resources",
Order = 11,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Status 12
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Status Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Color",
DefaultValue="red",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Probability100",
XLSColumnName = "100% Probability (y/n)",
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "IsSystem",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Status",
XLSSheetName = "Workflow",
Order = 12,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Type 13
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Project Type",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "IsSystem",
DefaultValue=false.ToString(),
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PerformanceRedThreshold",
DefaultValue="0.50",
DataType = "decimal"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PerformanceYellowThreshold",
DefaultValue = "0.35",
DataType = "decimal"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Type",
XLSSheetName = "Classifications",
Order = 13,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Project 14
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "CompanyId",
DefaultValue=CompanyID.ToString(),
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ClientId",
SqlTOGetValue = "Select TOP 1 Id from Client where Name='%Client%'",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "TypeId",
SqlTOGetValue = "Select TOP 1 Id from Type where Name='%Classification%'",
DataType = "string",
required=true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StatusId",
SqlTOGetValue = "Select TOP 1 Id from Status where Name='%Status (workflow)%'",
DataType = "string",
required = true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Project Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ProjectNumber",
XLSColumnName = "Project number",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Color",
DataType = "color"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Details",
XLSColumnName = "Details",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Priority",
DefaultValue="1",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Probability",
XLSColumnName = "Probability (if not 100%)",
DataType = "decimal",
DecimalScale = 4,
DecimalPrecision = 5,
required = true,
DefaultValue = "0.0"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "IsRevenueGenerating",
XLSColumnName = "Revenue Generating? (Y/N)",
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Deadline",
XLSColumnName = "End Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "HasChildren",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
//c = new ColumnMapping()
//{
// TableColumnName = "DateEdited",
// DefaultValue = DateTime.Now.ToString("HH:mm:ss"),
// DataType = "string"
//};
//cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Project",
XLSSheetName = "Projects",
Order = 14,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Team2Project 15
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "TeamId",
SqlTOGetValue = "Select Id from Team where Name in('%Team(s)%')",
DataType = "string",
required = true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ProjectId",
XLSColumnName = "Select Id from Projects where ProjectNumber in('%Project number%')",
DataType = "string",
required = true
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Team2Project",
XLSSheetName = "Projects",
Order = 15,
ColumnMap = cols
};
//SheetToTablMapList.Add(t);
#endregion
#region scenario 16
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ParentId",
SqlTOGetValue = "Select top 1 Id from Project where ProjectNumber='%Project number%'",
DataType = "string",
required=true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue = "2",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
DefaultValue = "Init",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StartDate",
XLSColumnName = "Start Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EndDate",
XLSColumnName = "End Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Status",
DefaultValue = "1",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FreezeRevenue",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "GrowthScenario",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Scenario",
XLSSheetName = "Projects",
Order = 16,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region scenario(active) 16a
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ParentId",
SqlTOGetValue = "Select top 1 Id from Project where ProjectNumber='%Project number%'",
DataType = "string",
required = true
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue = "9",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
DefaultValue = "ACTUALS",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StartDate",
XLSColumnName = "Start Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EndDate",
XLSColumnName = "End Date",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Status",
DefaultValue = "1",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FreezeRevenue",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "GrowthScenario",
DefaultValue = false.ToString(),
DataType = "bool"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Scenario",
XLSSheetName = "Projects",
Order = 16,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region StrategicGoal 17
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Name",
XLSColumnName = "Goal Name*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Description",
XLSColumnName = "Goal Name*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "StartDate",
XLSColumnName = "Goal Start Date*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "EndDate",
XLSColumnName = "Goal End Date*",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Color",
DefaultValue = "Blue",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "StrategicGoal",
XLSSheetName = "Strategic Goals",
Order = 16,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region aspusers 18
string pwdhash = "ABLkZNsOHI0e5D0NLTnryOirw2X+f1PymfNHNZL64+PTNX2fgV89EjRcgVw97LwpSw==";
string securitystamp = "0bf19d6c-968c-4a2a-966a-786f0f8092fe";
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "FirstName",
XLSColumnName = "First Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "LastName",
XLSColumnName = "Last Name",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "UserName",
XLSColumnName = "Email",
DataType = "userid"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PasswordHash",
DefaultValue = pwdhash,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "SecurityStamp",
DefaultValue = securitystamp,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Discriminator",
DefaultValue = "ApplicationUser",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Email",
XLSColumnName = "Email",
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "Type",
DefaultValue = "1",
DataType = "int"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PreferredResourceAllocation",
DefaultValue = "true",
DataType = "bool"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "PreferredTotalsDisplaying",
DefaultValue = "false",
DataType = "bool"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "AspNetUsers",
XLSSheetName = "Resources",
Order = 17,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Team2Project 19
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
ColumnMapping c1 = new ColumnMapping()
{
TableColumnName = "TeamId",
// XLSColumnName = "Team(s)",
SqlTOGetValue = "select Id from Team Where Name='%Team(s)%'",
DataType = "string[]",
DataDelim=','
};
cols.Add(c1);
c = new ColumnMapping()
{
TableColumnName = "ProjectId",
SqlTOGetValue= "Select top 1 Id from Project where ProjectNumber='%Project number%'",
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Team2Project",
XLSSheetName = "Projects",
Order = 19,
OccursCol= c1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region StrategicGoal2Project 20
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c1 = new ColumnMapping()
{
TableColumnName = "StrategicGoalId",
SqlTOGetValue = "select Id from StrategicGoal Where Name='%Strategic Goals%'",
DataType = "string[]",
required = true,
DataDelim = ','
};
cols.Add(c1);
c = new ColumnMapping()
{
TableColumnName = "ProjectId",
SqlTOGetValue = "Select top 1 Id from Project where ProjectNumber='%Project number%'",
required = true,
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "StrategicGoal2Project",
XLSSheetName = "Projects",
Order = 20,
OccursCol = c1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region Contact2Project 21
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c1 = new ColumnMapping()
{
TableColumnName = "ContactId",
SqlTOGetValue = "select Id from Contact Where FirstName+' '+LastName='%Internal Contacts%'",
DataType = "string[]",
required = true,
DataDelim = ','
};
cols.Add(c1);
c = new ColumnMapping()
{
TableColumnName = "ShowId",
SqlTOGetValue = "Select top 1 Id from Project where ProjectNumber='%Project number%'",
required = true,
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Contact2Project",
XLSSheetName = "Projects",
Order = 21,
OccursCol = c1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c1 = new ColumnMapping()
{
TableColumnName = "ContactId",
SqlTOGetValue = "select Id from Contact Where FirstName+' '+LastName='%External Contacts%'",
DataType = "string[]",
required = true,
DataDelim = ','
};
cols.Add(c1);
c = new ColumnMapping()
{
TableColumnName = "ShowId",
SqlTOGetValue = "Select top 1 Id from Project where ProjectNumber='%Project number%'",
required = true,
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "Contact2Project",
XLSSheetName = "Projects",
Order = 21,
OccursCol = c1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
#region PeopleResourceAllocation 22
cols = new List<ColumnMapping>();
c = new ColumnMapping()
{
TableColumnName = "Id",
DataType = "guid"
};
cols.Add(c);
c1 = new ColumnMapping()
{
TableColumnName = "PeopleResourceId",
SqlTOGetValue = "select Id from PeopleResource Where FirstName+' '+LastName='%Assigned Resources (Separate with Semicolon)%'",
DataType = "string[]",
required = true,
DataDelim = ';'
};
cols.Add(c1);
c = new ColumnMapping()
{
TableColumnName = "ScenarioId",
SqlTOGetValue = "Select top 1 s.Id from Scenario s join Project p on p.Id=s.ParentId where p.ProjectNumber='%Project number%'",
required = true,
DataType = "string"
};
cols.Add(c);
c = new ColumnMapping()
{
TableColumnName = "ExpenditureCategoryId",
SqlTOGetValue = "select ExpenditureCategoryId from PeopleResource Where FirstName+' '+LastName='%Assigned Resources (Separate with Semicolon)%'",
required = true,
DataType = "string"
};
cols.Add(c);
t = new SheetToTableMapping()
{
TableName = "PeopleResourceAllocation",
XLSSheetName = "Projects",
Order = 21,
OccursCol = c1,
ColumnMap = cols
};
SheetToTablMapList.Add(t);
#endregion
}
public void AddTableToTableMappingRecord(string parent,Guid parentID,string child, Guid childID)
{
}
public void EnableProcessButton()
{
string file = errorLogTbx.Text;
string file2 = importDocTbx.Text;
button1.Enabled = false;
try
{
System.IO.File.Create(file);
if (System.IO.File.Exists(file2) && System.IO.File.Exists(file))
button1.Enabled = true;
}
catch (Exception dd) { }
}
private void button2_Click(object sender, EventArgs e)
{
FileDialog d = new SaveFileDialog();
DialogResult r=d.ShowDialog();
if (r == DialogResult.OK)
errorLogTbx.Text = d.FileName;
}
private void button3_Click(object sender, EventArgs e)
{
FileDialog d = new OpenFileDialog();
DialogResult r = d.ShowDialog();
if (r == DialogResult.OK)
importDocTbx.Text = d.FileName;
}
private void button4_Click(object sender, EventArgs e)
{
FileDialog d = new OpenFileDialog();
DialogResult r = d.ShowDialog();
if (r == DialogResult.OK)
sqlPrepScriptTbx.Text = d.FileName;
}
private void label6_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
public void buildCntxStr()
{
this.m_connectionString = "";
string serverpart = "Server = ";
string dbpart = "Database =";
string user_nonWindows="user id = %userid%; password=%password%";
if (checkBox1.Checked)
{
string cntx = serverpart + databaseServerNametbx.Text + ";" + dbpart + databaseNameTbx.Text + ";Integrated Security=SSPI;";
this.m_connectionString = cntx;
}
else
{
string cntx = serverpart + databaseServerNametbx.Text + ";" + dbpart + databaseNameTbx.Text + ";" +user_nonWindows.Replace("%userid%", dbUserIDTbx.Text).Replace("%password%", dbPwdtbx.Text);
this.m_connectionString = cntx;
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
dbUserIDTbx.Text = "";
dbUserIDTbx.Enabled = false;
dbPwdtbx.Text = "";
dbPwdtbx.Enabled = false;
}
else
{
dbUserIDTbx.Text = "";
dbUserIDTbx.Enabled = true;
dbPwdtbx.Text = "";
dbPwdtbx.Enabled = true;
}
}
}
public class TableMapping
{
public string ParentName { get; set; }
public string ChildName { get; set; }
public Guid ParentID { get; set; }
public string tableName { get; set; }
}
public class ColumnMapping
{
public string TableColumnName { get; set; }
public string XLSColumnName { get; set; }
public string DefaultValue { get; set; }
public string DataType { get; set; }
public string SqlTOGetValue { get; set; }
public string value { get; set; }
public int? XLSColumnNumber { get; set; }
public bool? required { get; set; }
public int? DecimalScale { get; set; }
public int? DecimalPrecision { get; set; }
public char? DataDelim { get; set; }
public ColumnMapping clone()
{
return new ColumnMapping()
{
TableColumnName = this.TableColumnName,
XLSColumnName = this.XLSColumnName,
XLSColumnNumber = this.XLSColumnNumber,
value = this.value,
DataDelim = this.DataDelim,
DataType = this.DataType,
DecimalPrecision = this.DecimalPrecision,
DecimalScale = this.DecimalScale,
DefaultValue = this.DefaultValue,
required = this.required,
SqlTOGetValue = this.SqlTOGetValue
};
}
}
public class SheetToTableMapping
{
public string TableName { get; set; }
public string XLSSheetName { get; set; }
public int Order { get; set; }
public Guid? ID { get; set; }
public bool AlldefaultValues { get; set; }
public TableMapping TableMappingObj { get; set; }
public int StartOnRow { get; set; }
public List<ColumnMapping> ColumnMap { get; set; }
public int OnlineNumber { get; set; }
public ColumnMapping OccursCol { get; set; }
public string getSql(bool generateGUID)
{
string sqlr = "";
if (OccursCol != null && OccursCol.value != null)
{
ColumnMapping c = ColumnMap.Where(x => x.TableColumnName == OccursCol.TableColumnName).FirstOrDefault();
string[] varray = c.value.Split(c.DataDelim.Value);
foreach (string val in varray)
{
ColumnMapping temp = c.clone();
temp.value = val;
sqlr += genSql(generateGUID, temp);
}
}
else
{
sqlr = genSql(generateGUID, null);
}
return sqlr;
}
private string genSql(bool generateGUID, ColumnMapping insertMap)
{
string sql = "Insert into " + TableName + " (";
string vals = " values (";
string sep = "";
foreach (ColumnMapping d in ColumnMap)
{
ColumnMapping c = d.clone();
if (insertMap != null)
{
if (d.TableColumnName == insertMap.TableColumnName)
c = insertMap.clone();
}
sql += sep + c.TableColumnName + " ";
string q = "";
if (c.DataType == "string" || c.DataType == "guid" || c.DataType == "string[]")
q = "'";
if (c.DataType == "guid" && (c.value == null || c.value == "") && generateGUID)
c.value = Guid.NewGuid().ToString();
else if (c.DataType == "guid" && (c.value == null || c.value == "") && !generateGUID)
c.value = "";
if (c.DataType == "bool")
{
if (c.value.ToLower() == "true" || c.value.ToLower() == "y")
c.value = "1";
else
c.value = "0";
}
if (c.DataType == "cal_type")
{
if (c.value.ToLower() == "week")
c.value = "0";
if (c.value.ToLower() == "month")
c.value = "1";
if (c.value.ToLower() == "quarter")
c.value = "2";
}
if (c.required.HasValue)
{
if (c.required.Value && c.value == null || c.value == "")
{
return null;
}
}
if (c.DataType == "color" && c.value == null)
{
var random = new Random();
var color = String.Format("{0:X6}", random.Next(0x1000000));
c.value = color.ToString();
q = "'";
}
if (c.DataType == "color")
q = "'";
string val = null;
if (c.value != null)
{
val = c.value.Replace("'", "''");
}
else
{
val = "NULL";
q = "";
}
if (c.DataType == "decimal" && val != "NULL")
{
if (val.IndexOf('.') < 0)
{
int iv = Int32.Parse(val);
double dv = (double)iv / (double)100;
val = dv.ToString();
}
}
if (c.DataType == "userid")
{
int idxs = val.IndexOf('@');
if (idxs > 0)
val = val.Substring(0, idxs);
q = "'";
}
vals += sep + q + val + q + " ";
sep = ",";
}
return sql + ") " + vals + ")";
}
public SheetToTableMapping clone()
{
return new SheetToTableMapping()
{
TableMappingObj = this.TableMappingObj,
ColumnMap = this.ColumnMap,
ID = this.ID,
Order = this.Order,
TableName = this.TableName,
XLSSheetName = this.XLSSheetName,
AlldefaultValues=this.AlldefaultValues,
OnlineNumber=this.OnlineNumber,
OccursCol=this.OccursCol
};
}
}
}