CEL_Payroll/Payroll.Service/Common/Service/SystemDataUploadService.cs
2024-09-17 14:30:13 +06:00

290 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ease.CoreV35.Model;
using Payroll.BO;
using System.Data;
using System.Data.OleDb;
using System.IO;
using Ease.Excel;
using Ease.Excel.Reader;
using Ease.CoreV35.DataAccess;
using Payroll.BO;
using Payroll.Service.Attendence;
using System.Data.SqlClient;
using System.Configuration;
namespace Payroll.Service
{
[Serializable]
public class SystemDataUploadService : ServiceTemplate, ISystemDataUploadService
{
public SystemDataUploadService()
{ }
#region Service Implementation
public DataTable LoadData(string fileName)
{
return this.LoadExcelData(fileName);
#region Old Code
//DataTable dt = new DataTable("ImportedData");
//try
//{
// using (FileStream fs = new FileStream(fileName, FileMode.Open))
// {
// XlsReader reader = new XlsReader(fs, true);
// dt = reader.Data.Tables[0].Copy();
// fs.Close();
// fs.Dispose();
// reader = null;
// }
//}
//catch (Exception e)
//{
// throw new ServiceException(e.Message, e);
//}
//return dt;
#endregion
}
public DataTable LoadData(string fileName, string sheetName)
{
return this.LoadExcelData(fileName, sheetName);
#region Old Code
//DataTable dt = new DataTable(sheetName);
//try
//{
// using (FileStream fs = new FileStream(fileName, FileMode.Open))
// {
// XlsReader reader = new XlsReader(fs, true);
// dt = reader.Data.Tables[0].Copy();
// fs.Close();
// fs.Dispose();
// reader = null;
// }
//}
//catch (Exception e)
//{
// throw new ServiceException(e.Message, e);
//}
//return dt;
#endregion
}
public DataTable LoadExcelData(string fileName, string sheetName)
{
string connectionString = string.Empty;
if (fileName.EndsWith("xls"))
//Connection string for office 2003
connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fileName);
else
//Connection string for office 2007
connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0 Xml;", fileName);
DataTable dt = new DataTable(sheetName);
try
{
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
DataTable excelTable = connection.GetSchema("Tables");
string tableName;
if (excelTable.Rows.Count > 0)
{
tableName = Convert.ToString(excelTable.Rows[0]["TABLE_NAME"]);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", sheetName + "$"), connection);
//dt.TableName = sheetName;
dataAdapter.Fill(dt);
dataAdapter = null;
}
connection.Close();
connection = null;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return dt;
}
public DataTable LoadExcelData(string fileName)
{
string connectionString = string.Empty;
if(fileName.EndsWith("xls"))
//Connection string for office 2003
connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fileName);
else
//Connection string for office 2007
connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0 Xml;", fileName);
DataTable dt = new DataTable();
try
{
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
DataTable excelTable = connection.GetSchema("Tables");
string tableName;
if (excelTable.Rows.Count > 0)
{
tableName = Convert.ToString(excelTable.Rows[0]["TABLE_NAME"]);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(string.Format("SELECT DISTINCT * FROM [{0}]", tableName), connection);
dt.TableName = tableName.Substring(0, tableName.Length - 1);
dataAdapter.Fill(dt);
dataAdapter = null;
}
connection.Close();
connection = null;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return dt;
}
public void Save(ObjectsTemplate<Category> categorys, ObjectsTemplate<Grade> grades, ObjectsTemplate<Department> departments, ObjectsTemplate<Location> locations,
ObjectsTemplate<Religion> religions, ObjectsTemplate<Designation> designations, ObjectsTemplate<Bank> banks,
ObjectsTemplate<Branch> branches, ObjectsTemplate<Employee> employees, ObjectsTemplate<AccessCard> oaccessCards )
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
CategoryService.SaveForUpload(tc, categorys);
GradeService.SaveForUpload(tc, grades);
DepartmentService.SaveForUpload(tc, departments);
LocationService.SaveForUpload(tc, locations);
ReligionService.SaveForUpload(tc, religions);
DesignationService.SaveForUpload(tc, designations);
BankService.SaveForUpload(tc, banks);
BranchService.SaveForUpload(tc, branches);
EmployeeService.SaveForUpload(tc, employees);
AccessCardService.SaveForExcelUpload(tc, oaccessCards);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public void UpdateLocation( ObjectsTemplate<Employee> employees)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
ObjectsTemplate<Location> olocations = new ObjectsTemplate<Location>();
int locID =50;
Location op = Location.Get(ID.FromInteger(5));
olocations.Add(op);
foreach (Employee emp in employees)
{
//oemployee = oemployees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
Location onewloc= olocations.Find(delegate (Location item) {return item.Name == emp.Location.Name ;});
if (onewloc == null)
{
locID = locID + 1;
emp.Location.SetObjectID(locID);
olocations.Add(emp.Location);
}
else
{
emp.Location.SetObjectID(onewloc.ID.Integer);
}
}
LocationService.SaveForUpload(tc, olocations);
//foreach (Employee emp in employees)
//{
// MiscellaneousDA.updateLocation(tc, emp.ID, emp.Location.ID);
//}
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public DataSet LoadViewData()
{
SqlConnection MyConn = null;
SqlCommand com = null;
string mySQL = "";
SqlDataAdapter da = null;
DataTable dt = null;
string sConnectionString = ConfigurationSettings.AppSettings["ViewConnection"];
//string sViews = @"vw_General,vw_SpouseWorkingBrac,vw_Academic,vw_Experience,vw_Training,vw_PublicationAward,vw_PromotionTransferHistory,vw_Punishment,vw_Organogram,vw_OrganogramPosting,vw_ChangeNodePosition";
string sViews = ConfigurationSettings.AppSettings["Views"];
DataSet ds = new DataSet();
if (sViews != "")
{
string[] values = sViews.Split(',');
foreach (string ss in values)
{
if (ss == "vw_Organogram")
mySQL = "SELECT * from " + ss + " Order by Parent_Position_No,Position_No";
else
mySQL = "SELECT * from " + ss;
MyConn = new SqlConnection(sConnectionString);
com = new SqlCommand(mySQL, MyConn);
da = new SqlDataAdapter(com);
dt = new DataTable(ss);
try
{
da.Fill(dt);
ds.Tables.Add(dt);
}
catch (Exception exp) { throw new Exception("Could not read views. " + exp.Message); }
}
}
return ds;
}
#endregion
protected override T CreateObject<T>(Ease.CoreV35.DataAccess.DataReader dr)
{
throw new NotImplementedException();
}
}
}