protected void Upload(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileInfo fileInfo = new FileInfo(FileUpload1.PostedFile.FileName);
if (fileInfo.Name.Contains(".csv"))
{
string fileName = fileInfo.Name.Replace(".csv", "").ToString();
string csvFilePath = Server.MapPath("UploadedCSVFiles") + "\\" + fileInfo.Name;
//Save the CSV file in the Server inside 'UploadedCSVFiles'
FileUpload1.SaveAs(csvFilePath);
//Fetch the location of CSV file
string filePath = Server.MapPath("UploadedCSVFiles") + "\\";
string strSql = "SELECT * FROM [" + fileInfo.Name + "]";
string strCsvConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";" + "Extended Properties='text;HDR=YES;'";
// load the data from CSV to DataTable
DataTable dtCsv = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, strCsvConnString))
{
adapter.FillSchema(dtCsv, SchemaType.Mapped);
adapter.Fill(dtCsv);
}
//master foramt csv
string filePathMaster = Server.MapPath("UploadedCSVFiles") + "\\";
string csvFilePathMaster = Server.MapPath("UploadedCSVFiles") + "\\Master-getdysonca-orderimport-format.csv";
string strSqlMaster = "SELECT * FROM [Master-getdysonca-orderimport-format.csv]";
string strCsvConnStringMaster = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePathMaster + ";" + "Extended Properties='text;HDR=YES;'";
// load the data from CSV to DataTable
DataTable dtCsvMaster = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(strSqlMaster, strCsvConnStringMaster))
{
adapter.FillSchema(dtCsvMaster, SchemaType.Mapped);
adapter.Fill(dtCsvMaster);
}
string uploadedFileHeaderString = ConvertHeaderToString(csvFilePath);
string formatOfUploadedFileHeaderString = ConvertHeaderToString(csvFilePathMaster);
//check template
if (uploadedFileHeaderString != formatOfUploadedFileHeaderString)
{
lblmsg.Text = "Template of csv file is different.";
}
else
{
foreach (DataRow row in dtCsv.Rows)
{
object eMail = row["EMAIL"];
//check those field which cannot be blank
if (eMail == DBNull.Value || row["PRODUCT01"] == DBNull.Value || row["BILL_ADDRESS1"] == DBNull.Value || row["BILL_CITY"] == DBNull.Value || row["BILL_STATE"] == DBNull.Value || row["BILL_ZIPCODE"] == DBNull.Value
|| row["SHIP_TO_ADDRESS1"] == DBNull.Value || row["SHIP_TO_CITY"] == DBNull.Value || row["SHIP_TO_STATE"] == DBNull.Value || row["ORDER_NUMBER"] == DBNull.Value || row["ORDER_DATE"] == DBNull.Value)
{
lblmsg.Text = "Email, Product, Billing address, Shipping Address, Order Number, Order Date field(s) cannot be blank.";
}
else
{
var dt = dtCsv;
var rowNo=dtCsv.Rows.Count;
if (rowNo > 0)
{
string errMsg = "";
int purchaseID = 0;
List<int> list = new List<int>();
string consString = ConfigurationManager.ConnectionStrings["ecommerceConnectionString"].ToString();
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.ImportedRawData";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
int campaignID = Convert.ToInt32(ConfigurationManager.AppSettings["CampaignID"]);
using (var cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "[dbo].[ImportDataFromCSV]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("CampaignID", campaignID));
cmd.Parameters.Add(new SqlParameter("FileName", fileInfo.Name));
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
//var result = reader[0];
while (reader.Read())
{
if (Convert.ToString(reader["ErrMsg"]) == "BLANK")
{
//purchaseID = Convert.ToInt32(reader["ImportedPurchaseID"]);
// errMsg = Convert.ToString(reader["ErrMsg"]);
list.Add(Convert.ToInt32(reader["ID"]));
}
else
list.Add(Convert.ToInt32(reader["ErrMsg"]));
}
//purchaseID = Convert.ToInt32(list[0]);
//errMsg = list[1].ToString();
}
}
con.Close();
}
for (int j = 0; j < list.Count() ; j++)
{
purchaseID = Convert.ToInt32(list[j]);
ImportedPurchase importedPurchase = InsertDataIntoImportedPurchase(purchaseID);
//send mail
new PaymentModule().MailRichConfirmationForImport(importedPurchase);
}
}
if (errMsg == "")
{
lblmsg.Text = string.Format("({0}) records has been loaded to the table.", rowNo, fileName);
}
else
lblmsg.Text = errMsg;
}
else
{
lblmsg.Text = "File is empty.";
}
}
}
}
}
else
{
lblmsg.Text = "Upload csv file only.";
}
}
}
public string ConvertHeaderToString(string fileNameWithPath)
{
//bool firstLineOfChunk = true;
string columnData = null;
bool firstLineOfFile = true;
using (var sr = new StreamReader(fileNameWithPath))
{
string line = null;
while ((line = sr.ReadLine()) != null)
{
if (firstLineOfFile)
{
columnData = line;
firstLineOfFile = false;
continue;
}
}
}
return columnData;
}
public bool CompareDataTable(DataTable t1, DataTable t2)
{
if (t1.Rows.Count != t2.Rows.Count)
return false;
foreach (DataColumn dc in t1.Columns)
{
for (int i = 0; i < t1.Rows.Count; i++)
{
if (t1.Rows[i][dc.ColumnName] != t2.Rows[i][dc.ColumnName])
{
return false;
}
}
}
return true;
}
{
if (FileUpload1.HasFile)
{
FileInfo fileInfo = new FileInfo(FileUpload1.PostedFile.FileName);
if (fileInfo.Name.Contains(".csv"))
{
string fileName = fileInfo.Name.Replace(".csv", "").ToString();
string csvFilePath = Server.MapPath("UploadedCSVFiles") + "\\" + fileInfo.Name;
//Save the CSV file in the Server inside 'UploadedCSVFiles'
FileUpload1.SaveAs(csvFilePath);
//Fetch the location of CSV file
string filePath = Server.MapPath("UploadedCSVFiles") + "\\";
string strSql = "SELECT * FROM [" + fileInfo.Name + "]";
string strCsvConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";" + "Extended Properties='text;HDR=YES;'";
// load the data from CSV to DataTable
DataTable dtCsv = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, strCsvConnString))
{
adapter.FillSchema(dtCsv, SchemaType.Mapped);
adapter.Fill(dtCsv);
}
//master foramt csv
string filePathMaster = Server.MapPath("UploadedCSVFiles") + "\\";
string csvFilePathMaster = Server.MapPath("UploadedCSVFiles") + "\\Master-getdysonca-orderimport-format.csv";
string strSqlMaster = "SELECT * FROM [Master-getdysonca-orderimport-format.csv]";
string strCsvConnStringMaster = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePathMaster + ";" + "Extended Properties='text;HDR=YES;'";
// load the data from CSV to DataTable
DataTable dtCsvMaster = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(strSqlMaster, strCsvConnStringMaster))
{
adapter.FillSchema(dtCsvMaster, SchemaType.Mapped);
adapter.Fill(dtCsvMaster);
}
string uploadedFileHeaderString = ConvertHeaderToString(csvFilePath);
string formatOfUploadedFileHeaderString = ConvertHeaderToString(csvFilePathMaster);
//check template
if (uploadedFileHeaderString != formatOfUploadedFileHeaderString)
{
lblmsg.Text = "Template of csv file is different.";
}
else
{
foreach (DataRow row in dtCsv.Rows)
{
object eMail = row["EMAIL"];
//check those field which cannot be blank
if (eMail == DBNull.Value || row["PRODUCT01"] == DBNull.Value || row["BILL_ADDRESS1"] == DBNull.Value || row["BILL_CITY"] == DBNull.Value || row["BILL_STATE"] == DBNull.Value || row["BILL_ZIPCODE"] == DBNull.Value
|| row["SHIP_TO_ADDRESS1"] == DBNull.Value || row["SHIP_TO_CITY"] == DBNull.Value || row["SHIP_TO_STATE"] == DBNull.Value || row["ORDER_NUMBER"] == DBNull.Value || row["ORDER_DATE"] == DBNull.Value)
{
lblmsg.Text = "Email, Product, Billing address, Shipping Address, Order Number, Order Date field(s) cannot be blank.";
}
else
{
var dt = dtCsv;
var rowNo=dtCsv.Rows.Count;
if (rowNo > 0)
{
string errMsg = "";
int purchaseID = 0;
List<int> list = new List<int>();
string consString = ConfigurationManager.ConnectionStrings["ecommerceConnectionString"].ToString();
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.ImportedRawData";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
int campaignID = Convert.ToInt32(ConfigurationManager.AppSettings["CampaignID"]);
using (var cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "[dbo].[ImportDataFromCSV]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("CampaignID", campaignID));
cmd.Parameters.Add(new SqlParameter("FileName", fileInfo.Name));
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
//var result = reader[0];
while (reader.Read())
{
if (Convert.ToString(reader["ErrMsg"]) == "BLANK")
{
//purchaseID = Convert.ToInt32(reader["ImportedPurchaseID"]);
// errMsg = Convert.ToString(reader["ErrMsg"]);
list.Add(Convert.ToInt32(reader["ID"]));
}
else
list.Add(Convert.ToInt32(reader["ErrMsg"]));
}
//purchaseID = Convert.ToInt32(list[0]);
//errMsg = list[1].ToString();
}
}
con.Close();
}
for (int j = 0; j < list.Count() ; j++)
{
purchaseID = Convert.ToInt32(list[j]);
ImportedPurchase importedPurchase = InsertDataIntoImportedPurchase(purchaseID);
//send mail
new PaymentModule().MailRichConfirmationForImport(importedPurchase);
}
}
if (errMsg == "")
{
lblmsg.Text = string.Format("({0}) records has been loaded to the table.", rowNo, fileName);
}
else
lblmsg.Text = errMsg;
}
else
{
lblmsg.Text = "File is empty.";
}
}
}
}
}
else
{
lblmsg.Text = "Upload csv file only.";
}
}
}
public string ConvertHeaderToString(string fileNameWithPath)
{
//bool firstLineOfChunk = true;
string columnData = null;
bool firstLineOfFile = true;
using (var sr = new StreamReader(fileNameWithPath))
{
string line = null;
while ((line = sr.ReadLine()) != null)
{
if (firstLineOfFile)
{
columnData = line;
firstLineOfFile = false;
continue;
}
}
}
return columnData;
}
public bool CompareDataTable(DataTable t1, DataTable t2)
{
if (t1.Rows.Count != t2.Rows.Count)
return false;
foreach (DataColumn dc in t1.Columns)
{
for (int i = 0; i < t1.Rows.Count; i++)
{
if (t1.Rows[i][dc.ColumnName] != t2.Rows[i][dc.ColumnName])
{
return false;
}
}
}
return true;
}
No comments:
Post a Comment