EchoTex_Payroll/HRM.DA/Service/DataIntegrationRequestService/DataIntergrationRequestService.cs
2024-10-14 10:01:49 +06:00

2677 lines
143 KiB
C#

using HRM.BO;
using HRM.DA;
using Ease.Core.DataAccess;
using Ease.Core.Model;
using Ease.Core.Utility;
using System;
using System.Collections.Generic;
using System.Data;
using NPOI.SS.Formula.Functions;
using System.Text;
using Microsoft.Data.SqlClient;
using System.Linq;
using Azure;
using System.Runtime.ConstrainedExecution;
using static iTextSharp.text.pdf.AcroFields;
using System.Net;
using System.Security.Policy;
using static Org.BouncyCastle.Math.EC.ECCurve;
using System.Transactions;
namespace HRM.DA
{
public class DataIntergrationRequestService : ServiceTemplate, IDataIntergrationRequestService
{
public DataIntergrationRequestService()
{
}
List<DataIntegration> _oHRDataUploads = null;
List<SuccessorErrorList> _oSuccessOrErrorList = new List<SuccessorErrorList>();
List<Employee> _oEmployeeCollection = null;
List<Department> _oDepartments = null;
List<Designation> _oDesignations = null;
List<Location> _oLocations = new List<Location>();
List<Employee> _oEmployees = new List<Employee>();
List<Bank> _oBanks = new List<Bank>();
List<Branch> _oBranchs = new List<Branch>();
List<Religion> _oReligions = new List<Religion>();
List<Category> _oCategories = new List<Category>();
List<Grade> _oGrades = new List<Grade>();
private List<Employee> _allEmployee = new List<Employee>();
//process data variable
private int _emloyeeId = 0;
private int _departmentid = 0;
private int _locationid = 0;
private int _categoryID = 0;
private int _religionID = 0;
private int _designationid = 0;
private int _gradeid = 0;
private int _branchid = 0;
private int _costCenterId = 0;
private int _bankid = 0;
private int _accessCardID = 0;
private int _payrollTypeID = 0;
private List<Category> _categorys = new List<Category>();
private List<Grade> _grades = new List<Grade>();
private List<Department> _departments = new List<Department>();
private List<Location> _locations = new List<Location>();
private List<Religion> _religions = new List<Religion>();
private List<Designation> _designations = new List<Designation>();
private List<Bank> _banks = new List<Bank>();
private List<Branch> _branches = new List<Branch>();
private List<Costcenter> _costCenters = new List<Costcenter>();
private List<EmployeeStatus> _oEmployeeStatus = new List<EmployeeStatus>();
private List<UploadErrorOrSuccess> _errorOrSuccessList;
private List<Employee> _employees = new List<Employee>();
private List<AccessCard> _accessCards = new List<AccessCard>();
DepartmentService dserv = new DepartmentService();
MiscellaneousService miserv = new MiscellaneousService();
CategoryService cserv = new CategoryService();
GradeService gserv = new GradeService();
ReligionService rserv = new ReligionService();
LocationService locserv = new LocationService();
DesignationService degserv = new DesignationService();
BankService bankserv = new BankService();
BranchService branchserve = new BranchService();
SearchEmployeeService seserv = new SearchEmployeeService();
public int _userID;
protected override T CreateObject<T>(DataReader oReader)
{
return null;
}
#region Service implementation
public List<UploadErrorOrSuccess> getErrorList()
{
return _errorOrSuccessList;
}
public List<SuccessorErrorList> getErrorORSuccessList()
{
// return _oSuccessList;
return _oSuccessOrErrorList;
}
public bool ProcessBasicData(List<DataIntegration> oHRDataUploads)
{
_allEmployee = new EmployeeService().GetAllEmps();
_errorOrSuccessList = new List<UploadErrorOrSuccess>();
RefreshObject();
SystemConfigarationService ocManager = new SystemConfigarationService();
List<SystemConfigaration> deptConfig = ocManager.GetAllChildrenByParentNode(EnumConfigurationType.Logic, "department");
List<SystemConfigaration> locConfig = ocManager.GetAllChildrenByParentNode(EnumConfigurationType.Logic, "location");
bool isCategoryCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "category", "codeautogenerate"));
bool isGradeCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "codeautogenerate"));
bool isDeptCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "department", "codeautogenerate"));
bool islocCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "location", "codeautogenerate"));
bool isreligionCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "religion", "codeautogenerate"));
bool isdesignationCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "designation", "codeautogenerate"));
bool isbankCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "bank", "codeautogenerate"));
bool isbranchCodeAutoGen = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "branch", "codeautogenerate"));
bool iscrgCodeAutoGenerte = Convert.ToBoolean(ocManager.GetconfigBooleanValue(EnumConfigurationType.Logic, "costcenter", "codeautogenerate"));
Employee oemployee = new Employee();
int nRow = 0;
int nIndex = 0;
int count = 0;
_emloyeeId = _emloyeeId + 1;
foreach (DataIntegration row in oHRDataUploads)
{
count++;
oemployee = new Employee();
oemployee.EmployeeNo = row.EmployeeNo;
var empExist = this._allEmployee.FirstOrDefault(x => x.EmployeeNo == oemployee.EmployeeNo);
if (empExist != null)
{
oemployee.ID = empExist.ID;
}
else
{
_emloyeeId = _emloyeeId + 1;
oemployee.ID = _emloyeeId;
// oemployee.SetObjectID(_emloyeeId);
}
// object[] obj = row.ItemArray;
nRow = nRow + 1;
#region Category upload
Category oCategory = null;
if (isCategoryCodeAutoGen == false)
oCategory = _categorys.Find(delegate (Category item) { return item.Code == row.Category.ToString(); });
else
oCategory = _categorys.Find(delegate (Category item) { return item.Name == row.Category.ToString(); });
if (oCategory == null)
{
AddStatus(nRow, row.EmployeeNo, "New Category added:"+ row.Category.ToString()
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oCategory = new Category();
oCategory.Name = row.Category.ToString();
oCategory.Status = EnumStatus.Active;
if (isCategoryCodeAutoGen == false)
oCategory.Code = oCategory.Code.ToString();
_categoryID = _categoryID + 1;
oemployee.CategoryID = (_categoryID);
oCategory.SetObjectID(_categoryID);
oCategory.WagesType = EnumWagesType.Monthly;
oCategory.CreatedBy = _userID;
oCategory.PayrollTypeID = this._payrollTypeID;
_categorys.Add(oCategory);
}
else
{
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade", nRow, "Grade Code already exist in other payroll type."));
oemployee.CategoryID = oCategory.ID;
oCategory.ModifiedBy = this._userID;
}
#endregion Category upload
/// <summary>
/// Process grade whether it is already in the system or new grade
/// </summary>
///
#region Grade upload
Grade ograde = null;
if (isGradeCodeAutoGen == false)
ograde = _grades.Find(delegate (Grade item) { return item.Code == row.GradeCode.ToString(); });
else
ograde = _grades.Find(delegate (Grade item) { return item.Name == row.Grade.ToString(); });
if (ograde == null)
{
ograde = new Grade();
ograde.Status = EnumStatus.Active;
AddStatus(nRow, row.EmployeeNo, "New grade has been created:" + ograde.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
ograde.GradeSegmentID = (1);
ograde.HasPayscale = false; //new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "payscaleapplicable ");
ograde.HasGrossConcept = false; //new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "grossapplicable");
ograde.Name = row.Grade.ToString().Trim();
if (isGradeCodeAutoGen == false)
ograde.Code = row.GradeCode.ToString().Trim();
_gradeid = _gradeid + 1;
oemployee.GradeID = (_gradeid);
ograde.SetObjectID(_gradeid);
ograde.CreatedBy = this._userID;
ograde.PayrollTypeID = this._payrollTypeID;
_grades.Add(ograde);
if (gserv.Get(ograde.Code) != null)
AddStatus(nRow, row.EmployeeNo, "Grade Code already exist in other payroll type." + row.Grade.ToString(), EnumSAPProcessStatus.Error, EnumDataIntegrationType.EmployeeBasic);
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade", nRow, "Grade Code already exist in other payroll type."));
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Grade has been changed, new grade:" + ograde.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oemployee.GradeID = ograde.ID;
ograde.ModifiedBy = this._userID;
}
#endregion Grade upload
/// <summary>
/// Process Department whether it is already in the system or new location
/// </summary>
#region Department
int nparentid = 0;
nIndex = 0;
var dtires = deptConfig.FindAll(x => x.Node == "text");
foreach (SystemConfigaration oconfig in dtires)
{
nIndex = nIndex + 1;
// if (row[oconfig.Value + " Name"].ToString() == "") continue;
string devCode = "";
string devName = "";
if (nIndex == 1)
{
devCode = row.DivisionCode;
devName = row.Division;
}
else if (nIndex == 2)
{
devCode = row.DepartmentCode;
devName = row.Department;
}
else if (nIndex == 3)
{
//devCode = row.SectionCode;
//devName = row.Section;
devCode = row.SubDepartmentCode;
devName = row.SubDepartment;
}
else if (nIndex == 4)
{
devCode = row.SectionCode;
devName = row.Section;
}
Department odepartment = null;
if (isDeptCodeAutoGen == false)
{
if (nIndex > 1)
odepartment = _departments.Find(delegate (Department item) { return item.Code == devCode.Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
else
odepartment = _departments.Find(delegate (Department item) { return item.Code == devCode.Trim() && item.Tier == nIndex; });
}
else
{
if (nIndex > 1)
odepartment = _departments.Find(delegate (Department item) { return item.Name == devName.ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
else
odepartment = _departments.Find(delegate (Department item) { return item.Name == devName.ToString().Trim() && item.Tier == nIndex; });
}
if (odepartment == null)
{
odepartment = new Department();
AddStatus(nRow, row.EmployeeNo, "New "+ oconfig.Value + " has been created:" + devName
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
// odepartment.Name = row[oconfig.Value + " Name"].ToString().Trim();
odepartment.Name = devName.ToString().Trim();
odepartment.Tier = nIndex;
odepartment.Status = EnumStatus.Active;
odepartment.CreatedBy = this._userID;
odepartment.PayrollTypeID = this._payrollTypeID;
if (isDeptCodeAutoGen == false)
{
// odepartment.Code = row[oconfig.Value + " Code"].ToString().Trim();
odepartment.Code = devCode.ToString().Trim();
if (odepartment.Code == "")
AddStatus(nRow, row.EmployeeNo, "Code can't be empty." + oconfig.Value, EnumSAPProcessStatus.Error, EnumDataIntegrationType.EmployeeBasic);
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Code", nRow, oconfig.Value + " Code can't be empty"));
}
if (nIndex > 1) odepartment.ParentID = (nparentid);
_departmentid = _departmentid + 1;
nparentid = _departmentid;
oemployee.DepartmentID = (_departmentid);
odepartment.SetObjectID(_departmentid);
_departments.Add(odepartment);
}
else
{
nparentid = odepartment.ID;
oemployee.DepartmentID = odepartment.ID;
odepartment.ModifiedBy = this._userID;
}
}
#endregion
/// <summary>
/// Process location whether it is already in the system or new location
/// </summary>
#region Location
nparentid = 0;
nIndex = 0;
var ltires = locConfig.FindAll(x => x.Node == "text");
foreach (SystemConfigaration oconfig in ltires)
{
nIndex = nIndex + 1;
string locCode = "";
string locName = "";
if (nIndex == 1)
{
locCode = row.ZoneCode;
locName = row.Zone;
}
else if (nIndex == 2)
{
locCode = row.LocationCode;
locName = row.Location;
}
Location olocation = null;
if (islocCodeAutoGen == false)
{
if (nIndex > 1)
{
//olocation = _locations.Find(delegate (Location item) { return item.Code == row[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
olocation = _locations.Find(delegate (Location item) { return item.Code == locCode.Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
}
else
{
olocation = _locations.Find(delegate (Location item) { return item.Code == locCode.Trim() && item.Tier == nIndex; });
}
}
else
{
if (nIndex > 1)
{
olocation = _locations.Find(delegate (Location item) { return item.Name == locName.ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
}
else
{
olocation = _locations.Find(delegate (Location item) { return item.Name == locName.ToString().Trim() && item.Tier == nIndex; });
}
}
if (olocation == null)
{
olocation = new Location();
//olocation.Name = row[oconfig.Value + " Name"].ToString().Trim();
olocation.Name = locName.Trim();
olocation.Tier = nIndex;
olocation.Status = EnumStatus.Active;
if (olocation.Name == "")
AddStatus(nRow, row.EmployeeNo, "Name can't be empty." + oconfig.Value, EnumSAPProcessStatus.Error, EnumDataIntegrationType.EmployeeBasic);
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Name", nRow, oconfig.Value + " Name can't be empty"));
AddStatus(nRow, row.EmployeeNo, "New " + oconfig.Value + " has been created:" + olocation.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
if (islocCodeAutoGen == false)
{
// olocation.Code = row[oconfig.Value + " Code"].ToString().Trim();
olocation.Code = locCode.Trim();
if (olocation.Code == "")
AddStatus(nRow, row.EmployeeNo, " Code can't be empty." + oconfig.Value, EnumSAPProcessStatus.Error, EnumDataIntegrationType.EmployeeBasic);
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Code", nRow, oconfig.Value + " Code can't be empty"));
}
if (nIndex > 1) olocation.ParentID = (nparentid);
_locationid = _locationid + 1;
nparentid = _locationid;
oemployee.LocationID = (_locationid);
olocation.SetObjectID(_locationid);
olocation.PayrollTypeID = this._payrollTypeID;
olocation.CreatedBy = this._userID;
_locations.Add(olocation);
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Location has been changed, new Location:" + olocation.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
nparentid = olocation.ID;
oemployee.LocationID = olocation.ID;
olocation.ModifiedBy = this._userID;
}
}
#endregion
/// <summary>
/// Process religion whether it is already in the system or new religion
/// </summary>
#region Religion upload
Religion oreligion = null;
if (isreligionCodeAutoGen == false)
oreligion = _religions.Find(delegate (Religion item) { return item.Code == row.ReligionCode.ToString().Trim(); });
else
oreligion = _religions.Find(delegate (Religion item) { return item.Name == row.Religion.ToString().Trim(); });
if (oreligion == null)
{
oreligion = new Religion();
oreligion.Name = row.Religion.ToString().Trim();
if (isreligionCodeAutoGen == false)
{
oreligion.Code = oreligion.Code.ToString().Trim();
}
_religionID = _religionID + 1;
oemployee.ReligionID = (_religionID);
oreligion.CreatedBy = this._userID;
oreligion.SetObjectID(_religionID);
AddStatus(nRow, row.EmployeeNo, "Religion has been created, new religion:" + oreligion.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
_religions.Add(oreligion);
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Religion has been changed, religion:" + oreligion.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oemployee.ReligionID = oreligion.ID;
oreligion.ModifiedBy = this._userID;
}
#endregion Religion upload
/// <summary>
/// Process designation whether it is already in the system or new designation
/// </summary>
#region Designation upload
Designation odesignation = null;
if (isdesignationCodeAutoGen == false)
odesignation = _designations.Find(delegate (Designation item) { return item.Code == row.DesignationCode.ToString().Trim(); });
else
odesignation = _designations.Find(delegate (Designation item) { return item.Name == row.Designation.ToString().Trim(); });
if (odesignation == null)
{
odesignation = new Designation();
odesignation.Name = row.Designation.ToString().Trim();
if (isdesignationCodeAutoGen == false)
odesignation.Code = odesignation.Code.ToString().Trim();
_designationid = _designationid + 1;
oemployee.DesignationID = (_designationid);
odesignation.SetObjectID(_designationid);
odesignation.Status = EnumStatus.Active;
odesignation.CreatedBy = this._userID;
odesignation.PayrollTypeID = this._payrollTypeID;
AddStatus(nRow, row.EmployeeNo, "Designation has been created, designation: " + odesignation.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
_designations.Add(odesignation);
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Designation has been changed, designation: " + odesignation.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oemployee.DesignationID = odesignation.ID;
odesignation.ModifiedBy = this._userID;
}
#endregion Designation upload
Costcenter crg = null;
if (iscrgCodeAutoGenerte == false)
crg = _costCenters.Find(delegate (Costcenter item)
{ return item.Code == row.CostCenterCode.ToString().Trim(); });
else
crg = _costCenters.Find(delegate (Costcenter item) {
return item.Name == row.CostCenterName.ToString().Trim(); });
if (crg == null)
{
crg = new Costcenter();
crg.Name = row.CostCenterName.ToString().Trim();
crg.Code = row.CostCenterCode.ToString().Trim();
//if (iscrgCodeAutoGenerte == false)
// crg.Code = crg.Code.ToString().Trim();
_costCenterId = _costCenterId + 1;
oemployee.CrgId = (_costCenterId);
crg.PayrollTypeID = this._payrollTypeID;
crg.SetObjectID(_costCenterId);
crg.Tier = 1;
//crg.ParentID
crg.Status = EnumStatus.Active;
crg.CreatedBy = this._userID;
crg.PayrollTypeID = this._payrollTypeID;
AddStatus(nRow, row.EmployeeNo, "Cost-center has been created, : " + crg.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
_costCenters.Add(crg);
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Designation has been changed, designation: " + odesignation.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oemployee.CrgId = crg.ID;
crg.ModifiedBy = this._userID;
}
#region Bank & Branch upload
if (row.SalaryBank.ToString().Trim() != "")
{
Bank obank = null;
if (isbankCodeAutoGen == false)
{
obank = _banks.Where(x =>
x.Code.ToUpper().Trim() == row.SalaryBankCode.ToString().ToUpper().Trim())
.FirstOrDefault();
}
else
{
obank = _banks.Where(x =>
x.Name.ToUpper().Trim() == row.SalaryBank.ToString().ToUpper().Trim())
.FirstOrDefault();
}
if (obank == null)
{
obank = new Bank();
obank.Name = row.SalaryBank.ToString().Trim();
if (isbankCodeAutoGen == false)
obank.Code = row.SalaryBankCode.ToString().Trim();
_bankid = _bankid + 1;
obank.SetObjectID(_bankid);
obank.CreatedBy = this._userID;
obank.PayrollTypeID = this._payrollTypeID;
AddStatus(nRow, row.EmployeeNo, "new Salary bank Account has been created, Bank account: " + obank.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
_banks.Add(obank);
}
if (row.SalaryBranch.ToString() != "")
{
Branch oBranch = null;
if (isbranchCodeAutoGen == false)
{
oBranch = _branches.Where(item =>
item.Code.ToUpper().Trim() == row.SalaryBranchCode.ToString().ToUpper().Trim()
&& item.BankID == obank.ID)
.FirstOrDefault();
}
else
{
oBranch = _branches.Where(item =>
item.Name.ToUpper().Trim() == row.SalaryBranch.ToString().ToUpper().Trim()
&& item.BankID == obank.ID)
.FirstOrDefault();
}
if (oBranch == null)
{
oBranch = new Branch();
oBranch.Name = row.SalaryBranch.ToString().Trim();
if (isbranchCodeAutoGen == false)
oBranch.Code = row.SalaryBranchCode.ToString().Trim();
_branchid = _branchid + 1;
oBranch.BankID = obank.ID;
oBranch.SetObjectID(_branchid);
oemployee.BranchID = (_branchid);
oBranch.CreatedBy = this._userID;
oBranch.PayrollTypeID = this._payrollTypeID;
AddStatus(nRow, row.EmployeeNo, "new branch has been created, Branch: " + obank.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
_branches.Add(oBranch);
}
else
{
//AddStatus(nRow, row.EmployeeNo, "Branch has been changed, Branch: " + oBranch.Name
// , EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
oemployee.BranchID = oBranch.ID;
oBranch.ModifiedBy = this._userID;
}
}
}
bool isOPISeparateAcountApplicable = true; // ConfigurationManager.GetBoolValue("opi", "separateaccount", EnumConfigurationType.Logic);
if (isOPISeparateAcountApplicable)
{
if (!String.IsNullOrEmpty(row.OPIBankName))
{
Bank obank = null;
//if (isbankCodeAutoGen == false)
//{
// obank = _banks.Where(x =>
// x.Code.ToUpper().Trim() == row.opi.ToString().ToUpper().Trim())
// .FirstOrDefault();
//}
//else
//{
obank = _banks.Where(x =>
x.Name.ToUpper().Trim() == row.OPIBankName.ToString().ToUpper().Trim())
.FirstOrDefault();
// }
if (obank == null)
{
obank = new Bank();
obank.Name = row.OPIBankName.ToString().Trim();
if (isbankCodeAutoGen == false)
obank.Code = obank.Code.ToString().Trim();
_bankid = _bankid + 1;
obank.SetObjectID(_bankid);
obank.CreatedBy = this._userID;
_banks.Add(obank);
AddStatus(nRow, row.EmployeeNo, "new OPI Bank has been created, Bank: " + obank.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
if (!string.IsNullOrEmpty(row.OPIBranchName))
{
Branch oBranch = null;
//if (isbranchCodeAutoGen == false)
//{
// oBranch = _branches.Where(item =>
// item.Code.ToUpper().Trim() == row["OPI Branch Code"].ToString().ToUpper().Trim()
// && item.BankID == obank.ID)
// .FirstOrDefault();
//}
//else
//{
oBranch = _branches.Where(item =>
item.Name.ToUpper().Trim() == row.OPIBranchName.ToString().ToUpper().Trim()
&& item.BankID == obank.ID)
.FirstOrDefault();
//}
if (oBranch == null)
{
oBranch = new Branch();
oBranch.Name = row.OPIBranchName.ToString().Trim();
if (isbranchCodeAutoGen == false)
oBranch.Code = oBranch.Code.ToString().Trim();
_branchid = _branchid + 1;
oBranch.BankID = obank.ID;
oBranch.CreatedBy = this._userID;
oBranch.SetObjectID(_branchid);
oemployee.OutPayBranchID = (_branchid);
_branches.Add(oBranch);
AddStatus(nRow, row.EmployeeNo, "new OPI Branch has been created, Branch: " + oBranch.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else
{
oemployee.OutPayBranchID = oBranch.ID;
obank.ModifiedBy = this._userID;
}
}
}
}
#endregion Life Cycle Event
if (row.LIFE_CYCLE_EVENT != null)
{
EmployeeStatus empStatus = _oEmployeeStatus.Where(x => x.Description.ToLower().Trim() == row.LIFE_CYCLE_EVENT.ToLower().Trim()).FirstOrDefault();
if (empStatus == null)
{
AddStatus(nRow, row.EmployeeNo, "Life Cycle Event not found : " + row.LIFE_CYCLE_EVENT
, EnumSAPProcessStatus.Error, EnumDataIntegrationType.EmployeeBasic);
}
else
{
if (oemployee.EmpLifeCycle == null) oemployee.EmpLifeCycle = new EmpLifeCycle();
oemployee.EmpLifeCycle.EmpStatusObject = empStatus;
oemployee.EmpLifeCycle.StatusDetailID = empStatus.ID;
oemployee.EmpLifeCycle.Description = row.LIFE_CYCLE_EVENT.ToString().Trim();
oemployee.EmpLifeCycle.EffectDate = Convert.ToDateTime(row.AssignmentChangeDate);
}
}
_employees.Add(oemployee);
}
return true;
}
public void Save(int nPayrollTypeID, int userid, EnumRegularDataUpload uploaid)
{
try
{
foreach (Employee item in _employees)
{
item.PayrollTypeID = nPayrollTypeID;
item.CreatedBy = userid;
}
RegularDataUploadService rdsrv = new RegularDataUploadService();
//rdsrv.Save(_categorys, _grades, _departments, _locations, _religions,
// _designations, _banks, _branches, _employees, _accessCards, nPayrollTypeID, uploaid);
Save(_categorys, _grades, _departments, _locations, _religions,
_designations, _banks, _branches, _employees, _accessCards,
_costCenters, nPayrollTypeID, uploaid);
}
catch (Exception ex)
{
throw new ServiceException(ex.Message);
}
}
public void Save(List<Category> categorys, List<Grade> grades, List<Department> departments,
List<Location> locations,
List<Religion> religions, List<Designation> designations, List<Bank> banks,
List<Branch> branches, List<Employee> employees,
List<AccessCard> oaccessCards, List<Costcenter> crgs,
int payrollTypeID, EnumRegularDataUpload uploaid)
{
List<GradeSegment> segments = new GradeSegmentService().Get(EnumStatus.Regardless);
TransactionContext tc = null;
_payrollTypeID = payrollTypeID;
try
{
if (segments.Count == 0)
{
GradeSegment osg = new GradeSegment();
osg.Code = "001";
osg.Name = "Default";
osg.CreatedBy = this._userID;
osg.CreatedDate = DateTime.Today;
GradeSegmentService ogSrv = new GradeSegmentService();
ogSrv.Save(osg);
grades.ForEach(x => { x.GradeSegmentID = osg.ID; });
}
else
{
grades.ForEach(x => { x.GradeSegmentID = segments[0].ID; });
}
List<Category> scategories = new CategoryService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Grade> sGrades = new GradeService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Location> sLocations = new LocationService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Department> sdepartments = new DepartmentService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Designation> sdesignation = new DesignationService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Religion> sReligions = new ReligionService().Get(EnumStatus.Regardless);
List<Bank> sBanks = new BankService().Get();
List<Branch> sBrances = new BranchService().Get(EnumStatus.Regardless, this._payrollTypeID);
List<Costcenter> scostcenters = new CostcenterService().Get(EnumStatus.Regardless,
this._payrollTypeID);
tc = TransactionContext.Begin(true);
CategoryService.SaveForUpload(tc, categorys, scategories);
GradeService.SaveForUpload(tc, grades, sGrades);
LocationService.SaveForUpload(tc, locations, sLocations);
ReligionService.SaveForUpload(tc, religions, sReligions);
DesignationService.SaveForUpload(tc, designations, payrollTypeID, sdesignation);
DepartmentService.SaveForUpload(tc, departments, sdepartments);
BankService.SaveForUpload(tc, banks, sBanks);
BranchService.SaveForUpload(tc, branches, sBrances);
CostcenterService.SaveForUpload(tc, crgs, scostcenters);
EmployeeService.SaveForIntegration(tc, employees, uploaid);
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 ImportEmpBasicInfo(List<DataIntegration> odataTable, int payrollTypeID, int userid)
{
Employee oemployee = null;
this._payrollTypeID = payrollTypeID;
this._userID = userid;
PayrollType ptype = new PayrollTypeService().Get(payrollTypeID);
#region Refresh Objects
if (ProcessBasicData(odataTable) == false) return;
int nRow = 0;
bool isGrossApplicable = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "grossapplicable");
try
{
foreach (DataIntegration dr in odataTable)
{
nRow = nRow + 1;
oemployee = _employees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr.EmployeeNo.ToString(); });
if (oemployee == null) throw new ServiceException("Employee not found in the collection; employeeNo:" + dr.EmployeeNo.ToString());
oemployee.Name = dr.EmployeeName.ToString().Trim();
var empExist = this._allEmployee.FirstOrDefault(x => x.EmployeeNo == oemployee.EmployeeNo);
if (empExist == null)
{
AddStatus(nRow, oemployee.EmployeeNo, "New Employee added in the System", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
oemployee.FatherName = String.IsNullOrEmpty(dr.FathersName) ? "" : dr.FathersName.ToString().Trim();
//
oemployee.BirthDate = Convert.ToDateTime(dr.DateOfBirth);
if (empExist != null && oemployee.BirthDate != empExist.BirthDate)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee Birth date has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
//
oemployee.JoiningDate = Convert.ToDateTime(dr.DateOfJoining);
if (empExist != null && oemployee.JoiningDate != empExist.JoiningDate)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee joining date has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
//
oemployee.LineManagerNo = dr.LineManagerID != string.Empty ? dr.LineManagerID : null;
if (empExist != null && oemployee.LineManagerNo != empExist.LineManagerNo)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee Line Maneger has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
if (oemployee.EmployeeNo == oemployee.LineManagerNo)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Line Manager",
nRow, "Employee and line-Manager can't be Same-ID:" +
oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
}
// throw new ServiceException("Invalid line manager ID, Employee can not be his ownLine-manger; employeeNo:" + dr.EmployeeNo.ToString());
//For Novartis Discontinue Employee Upload and Fund Management Data Issue
//oemployee.Status = EnumEmployeeStatus.Discontinued;
oemployee.Gender = (dr.Gender.Trim() == "Male" || dr.Gender.Trim() == "M" || dr.Gender.Trim() == "MALE") ? EnumGender.Male : EnumGender.Female;
if (empExist != null && oemployee.Gender != empExist.Gender)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee Gender has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
oemployee.MaritalStatus = (dr.MaritalStatus.Trim().ToUpper() == "MARRIED") ? EnumMaritalStatus.Married : EnumMaritalStatus.UnMarried;
if (empExist != null && oemployee.MaritalStatus != empExist.MaritalStatus)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee Marital Status has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
//oemployee.TaxCircle = dr["Tax Circle"].ToString() != string.Empty ? (EnumTaxCircle)Enum.Parse(typeof(EnumTaxCircle), dr["Tax Circle"].ToString(), true) : EnumTaxCircle.Employee;
// oemployee.TaxCircle = String.IsNullOrEmpty(dr.TaxCircle) ? "" : dr.TaxCircle.ToString().Trim();
//if (empExist != null && oemployee.TaxCircle.Trim() != empExist.TaxCircle.Trim())
//{
// AddStatus(nRow, oemployee.EmployeeNo, "Employee Tax Circle has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
//}
oemployee.TinNo = dr.TIN.Trim();
if (empExist != null && oemployee.TinNo.Trim() != empExist.TinNo.Trim())
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee Tin No has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
//if (dr.ConfirmationDate.ToString() != "") oemployee.ConfirDate = Convert.ToDateTime(dr.ConfirmationDate);
//if (empExist != null && oemployee.ConfirDate != empExist.ConfirDate)
//{
// AddStatus(nRow, oemployee.EmployeeNo, "Employee Confirmation Date has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
//}
//if (oemployee.ConfirDate != null && oemployee.ConfirDate != DateTime.MinValue)
// oemployee.IsConfirmed = true;
if (dr.PFMembership.ToUpper().Trim() == "Y")
oemployee.PFMemberType = EnumPFMembershipType.Live;
if (empExist != null && oemployee.PFMemberType != empExist.PFMemberType)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee PF Membership has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
oemployee.EmailAddress = !string.IsNullOrEmpty(dr.EmailAddress) ? dr.EmailAddress : null;
if (empExist != null && !string.IsNullOrEmpty(empExist.EmailAddress) && !string.IsNullOrEmpty(oemployee.EmailAddress))
{
if (oemployee.EmailAddress != empExist.EmailAddress)
AddStatus(nRow, oemployee.EmployeeNo, "Employee Email Address has changed", EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else
{
if (!string.IsNullOrEmpty(oemployee.EmailAddress))
AddStatus(nRow, oemployee.EmployeeNo, "New Email Address has added. new Email: " + oemployee.EmailAddress, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
//oemployee.ForeignExPat = dr["Is Foreign Expatriate"].ToString() != string.Empty ? (dr["Is Foreign Expatriate"].ToString() == "YES" ? true : false) : false;
//Refresh Employee Grade Salary
if (oemployee.GradeID != null)
{
Grade ograde = _grades.FirstOrDefault(x => x.ID == (int)oemployee.GradeID);
// oemployee.EmployeeGradeSalary.ID = oemployee.ID;
// oemployee.EmployeeGradeSalary.SetObjectID(oemployee.ID
oemployee.EmployeeGradeSalary = new EmployeeGradeSalary();
oemployee.EmployeeGradeSalary.EmployeeID = oemployee.ID;
oemployee.EmployeeGradeSalary.GradeID = (int)oemployee.GradeID;
oemployee.EmployeeGradeSalary.GradeSalaryTypeID = (1);
if (isGrossApplicable == true) oemployee.EmployeeGradeSalary.GrossSalary = dr.GrossSalary != string.Empty ? Convert.ToDouble(dr.GrossSalary) : 0.0;
oemployee.EmployeeGradeSalary.BasicSalary = dr.BasicSalary.ToString() != string.Empty ? Convert.ToDouble(dr.BasicSalary) : 0.0;
oemployee.BasicSalary = oemployee.EmployeeGradeSalary.BasicSalary;
oemployee.GrossSalary = oemployee.EmployeeGradeSalary.GrossSalary;
oemployee.EmployeeGradeSalary.EffectDate = Convert.ToDateTime( dr.BasicSalaryEffectDate);
if (empExist != null)
{
if (oemployee.GradeID != empExist.GradeID
|| oemployee.BasicSalary != empExist.BasicSalary)
{
AddStatus(nRow, oemployee.EmployeeNo, "Grade & Basic Salary has changed, new grade:" + ograde.Name
+ " , basic: " + oemployee.BasicSalary.ToString() + " & effect date:" + oemployee.EmployeeGradeSalary.EffectDate
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else
{
oemployee.EmployeeGradeSalary = null;
oemployee.GradeID = null;
oemployee.BasicSalary = 0;
oemployee.GrossSalary = 0;
}
}
}
//Location
if (empExist != null )
{
if (oemployee.LocationID != empExist.LocationID)
{
var newLocation = _locations?.Find(x => x.ID == oemployee.LocationID);
AddStatus(nRow, oemployee.EmployeeNo, "Location has been changed, new Location:" + newLocation.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else oemployee.LocationID = null;
}
//Department
if (empExist != null)
{
if (oemployee.DepartmentID != empExist.DepartmentID)
{
var neDep = _departments?.Find(x => x.ID == oemployee.DepartmentID);
AddStatus(nRow, oemployee.EmployeeNo, "Location has been changed, new Location:" + neDep.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else oemployee.DepartmentID = null;
}
//Religion
if (empExist != null)
{
if (oemployee.ReligionID != empExist.ReligionID)
{
var newReligion = _religions?.Find(x => x.ID == oemployee.ReligionID);
AddStatus(nRow, oemployee.EmployeeNo, "Religion has been changed, religion:" + newReligion.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
}
//Designation
if (empExist != null)
{
if (oemployee.DesignationID != empExist.DesignationID)
{
var newdesig = _designations?.Find(x => x.ID == oemployee.DesignationID);
AddStatus(nRow, oemployee.EmployeeNo, "Designation has been changed, designation:" + newdesig.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else oemployee.DesignationID = null;
}
if (empExist != null)
{
if (oemployee.CrgId != empExist.CrgId)
{
var newdesig = _costCenters?.Find(x => x.ID == oemployee.CrgId);
AddStatus(nRow, oemployee.EmployeeNo, "Cost-Center has been changed, Cost-Center:" + newdesig.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else oemployee.CrgId = null;
}
if (oemployee.EmpLifeCycle == null) oemployee.EmpLifeCycle = new EmpLifeCycle();
bool confirmChange = false;
if (dr.ConfirmationDate != null && dr.ConfirmationDate !="")
{
confirmChange = true;
oemployee.ConfirDate = Convert.ToDateTime(dr.ConfirmationDate);
oemployee.IsConfirmed = true;
}
if (empExist != null && confirmChange == true)
{
if ( empExist.IsConfirmed ==false)
{
AddStatus(nRow, oemployee.EmployeeNo, "provision to confirmed "
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
else confirmChange = false;
}
if (oemployee.GradeID != null || oemployee.BasicSalary != 0
|| oemployee.DepartmentID != null
|| oemployee.LocationID != null || oemployee.DesignationID != null
|| oemployee.CrgId !=null || confirmChange == true)
{
oemployee.EmpLifeCycle.Employee = oemployee;
oemployee.EmpLifeCycle.CategoryID = oemployee.CategoryID;
oemployee.EmpLifeCycle.EmployeeGradeSalary = oemployee.EmployeeGradeSalary;
oemployee.EmpLifeCycle.EmployeeID = oemployee.ID;
oemployee.EmpLifeCycle.BasicSalary = oemployee.BasicSalary;
oemployee.EmpLifeCycle.GrossSalary = oemployee.GrossSalary;
oemployee.EmpLifeCycle.EffectDate = Convert.ToDateTime(dr.AssignmentChangeDate);//oemployee.JoiningDate;?
oemployee.EmpLifeCycle.GradeID = oemployee.GradeID;
oemployee.EmpLifeCycle.DepartmentID = oemployee.DepartmentID;
oemployee.EmpLifeCycle.DesignationID = oemployee.DesignationID;
oemployee.EmpLifeCycle.LocationID = oemployee.LocationID;
oemployee.EmpLifeCycle.CostCenterID = oemployee.CrgId;
oemployee.EmpLifeCycle.IsConfirm = (oemployee.IsConfirmed == true) ? true : false;
if (confirmChange == false)
oemployee.EmpLifeCycle.IsConfirm = null;
oemployee.EmpLifeCycle.HREmployee = new HREmployee();
oemployee.EmpLifeCycle.HREmployee.CategoryID = oemployee.CategoryID;
oemployee.EmpLifeCycle.HREmployee.ID = oemployee.ID;
oemployee.EmpLifeCycle.HREmployee.BasicSalary = (oemployee.BasicSalary == 0) ? empExist.BasicSalary : oemployee.BasicSalary;
oemployee.EmpLifeCycle.HREmployee.GrossSalary = (oemployee.GrossSalary == 0) ? empExist.GrossSalary : oemployee.GrossSalary;
oemployee.EmpLifeCycle.HREmployee.GradeID = (oemployee.GradeID == 0 || oemployee.GradeID == null) ? empExist.GradeID : oemployee.GradeID;
oemployee.EmpLifeCycle.HREmployee.DepartmentID = (oemployee.DepartmentID == 0 || oemployee.DepartmentID == null) ? empExist.DepartmentID : oemployee.DepartmentID;
oemployee.EmpLifeCycle.HREmployee.DesignationID = (oemployee.DesignationID == 0 || oemployee.DesignationID == null) ? empExist.DesignationID : oemployee.DesignationID;
oemployee.EmpLifeCycle.HREmployee.LocationID = (oemployee.LocationID == 0 || oemployee.LocationID == null) ? empExist.LocationID : oemployee.LocationID;
oemployee.EmpLifeCycle.HREmployee.CrgId = (oemployee.CrgId == 0 || oemployee.CrgId == null) ? empExist.CrgId : oemployee.CrgId;
oemployee.EmpLifeCycle.HREmployee.CompanyID = null;
oemployee.EmpLifeCycle.HREmployee.IsConfirmed = oemployee.IsConfirmed;
oemployee.EmpLifeCycle.HREmployee.ConfirDate = oemployee.ConfirDate;
}
oemployee.BasicSalary = (oemployee.BasicSalary == 0) ? empExist.BasicSalary : oemployee.BasicSalary;
oemployee.GrossSalary = (oemployee.GrossSalary == 0) ? empExist.GrossSalary : oemployee.GrossSalary;
oemployee.GradeID = (oemployee.GradeID == 0 || oemployee.GradeID == null) ? empExist.GradeID : oemployee.GradeID;
oemployee.DepartmentID = (oemployee.DepartmentID == 0 || oemployee.DepartmentID == null) ? empExist.DepartmentID : oemployee.DepartmentID;
oemployee.DesignationID = (oemployee.DesignationID == 0 || oemployee.DesignationID == null) ? empExist.DesignationID : oemployee.DesignationID;
oemployee.LocationID = (oemployee.LocationID == 0 || oemployee.LocationID == null) ? empExist.LocationID : oemployee.LocationID;
oemployee.CrgId = (oemployee.CrgId == 0 || oemployee.CrgId == null) ? empExist.CrgId : oemployee.CrgId;
//Refresh Emloyee Bank Account
if (oemployee.BranchID != null)
{
if (dr.SalaryAccountNumber.ToString() != "")
{
oemployee.AccountNo = dr.SalaryAccountNumber.ToString();
oemployee.EmployeeBankAccount = new EmployeeBankAccount();
// oemployee.EmployeeBankAccount.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeeBankAccount.EmployeeID = oemployee.ID;
oemployee.PaymentMode = EnumPaymentMode.BankTransfer;
oemployee.EmployeeBankAccount.EffectDate = Convert.ToDateTime( dr.SALARY_ACCOUNT_EFFECT_DATE);
oemployee.EmployeeBankAccount.BranchID = oemployee.BranchID != null ? (int)oemployee.BranchID : 0;
oemployee.EmployeeBankAccount.AccountType = EnumBankAccountType.SalaryAccount;
oemployee.EmployeeBankAccount.AccountNo = dr.SalaryAccountNumber.ToString();
oemployee.AccountNo = oemployee.EmployeeBankAccount.AccountNo;
oemployee.EmployeeBankAccount.CreatedDate = DateTime.Today;
oemployee.CreatedBy = _userID;
}
else
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Salary Account Number", nRow, "'Salary Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
if (empExist != null)
{
if (oemployee.BranchID != empExist.BranchID ||
oemployee.AccountNo != empExist.AccountNo)
{
var newBranch = _branches?.Find(x => x.ID == oemployee.BranchID);
AddStatus(nRow, oemployee.EmployeeNo, "Employee Salary Branch has been changed, Branch:" + newBranch.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
if(oemployee.EmployeeBankAccount.EffectDate <= ptype.NextPayProcessDate)
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Bank Account Effect-Date",
nRow, "Bank-Account Change Effect Date can't be priror to last salary month."));
}
else oemployee.EmployeeBankAccount = null;
}
}
if (oemployee.OutPayBranchID != null)
{
if (dr.OPIAccountNumber != "")
{
oemployee.OutPayAccountNo = dr.OPIAccountNumber.ToString();
// oemployee.EmployeeOPIBankAccount.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeeOPIBankAccount = new EmployeeBankAccount();
oemployee.OutPayPaymentMode = EnumPaymentMode.BankTransfer;
oemployee.EmployeeOPIBankAccount.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeOPIBankAccount.BranchID = (int)oemployee.OutPayBranchID;
oemployee.EmployeeOPIBankAccount.AccountType = EnumBankAccountType.OutPayAccount;
oemployee.EmployeeOPIBankAccount.AccountNo = dr.OPIAccountNumber.ToString();
}
else
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("OPI Account Number", nRow, "'OPI Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
if (empExist != null && oemployee.OutPayBranchID != empExist.OutPayBranchID)
{
var newBranch = _branches?.Find(x => x.ID == oemployee.OutPayBranchID);
AddStatus(nRow, oemployee.EmployeeNo, "Employee OPI Branch has been changed, Branch:" + newBranch.Name
, EnumSAPProcessStatus.Success, EnumDataIntegrationType.EmployeeBasic);
}
}
//if (dr["PROXID"].ToString() != "")
//{
// _accessCardID = _accessCardID + 1;
// oemployee.CardID = (_accessCardID);
// AccessCard ocard = new AccessCard();
// // ocard.SetObjectID(_accessCardID);
// ocard.ID = _accessCardID;
// ocard.CardNumber = dr["PROXID"].ToString();
// ocard.TypeID = (1);
// ocard.Status = EnumCardStatus.Attached;
// ocard.CardOperation.EmployeeID = oemployee.ID;
// ocard.CardOperation.CardID = ocard.ID;
// ocard.CardOperation.AssignDate = oemployee.JoiningDate;
// _accessCards.Add(ocard);
//}
oemployee.CreatedBy = userid;
oemployee.CreatedDate = DateTime.Today;
}
foreach (Employee item in _employees)
{
if (item.LineManagerNo != null && item.LineManagerNo != string.Empty)
{
var linemanger = _employees.Find(delegate (Employee emp) { return emp.EmployeeNo == item.LineManagerNo; });
if (linemanger == null)
{
var existLineManager = _allEmployee.Find(delegate (Employee emp) { return emp.EmployeeNo == item.LineManagerNo; });
if (existLineManager == null)
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Line Manager ID", nRow, "Invalid Line Manager"));
}
}
nRow = nRow + 1;
}
}
catch (Exception ex)
{
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
}
#endregion
}
public void RefreshObject()
{
_departments = dserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_departmentid = miserv.GetNextID("Department", "DepartmentID", "");
_categorys = cserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_categoryID = miserv.GetNextID("Category", "CategoryID", "");
_grades = gserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_gradeid = miserv.GetNextID("Grades", "GradeID", "");
_locations = locserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_locationid = miserv.GetNextID("Location", "LocationID", "");
_religions = rserv.Get(EnumStatus.Regardless);
_religionID = miserv.GetNextID("Religion", "ReligionID", "");
_designations = degserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_designationid = miserv.GetNextID("Designation", "DesignationID", "");
_banks = bankserv.Get(EnumStatus.Regardless, this._payrollTypeID);
_bankid = miserv.GetNextID("Banks", "BankID", "");
_branches = branchserve.Get(EnumStatus.Regardless, this._payrollTypeID);
_branchid = miserv.GetNextID("BRANCHES", "BranchID", ""); ;
_costCenters = new CostcenterService().Get(EnumStatus.Regardless, this._payrollTypeID);
_costCenterId = miserv.GetNextID("CRG", "CRGID", ""); ;
SearchManager omanager = new SearchManager(EnumSearchFrom.Employee);
omanager.Parameter.Remove(EnumSearchParameter.PayrollTypeID);
_oEmployeeStatus = new EmployeeStatusService().Get(EnumStatus.Regardless);
// List<SearchEmployee> oemployees = omanager.Find();
List<SearchEmployee> oemployees = seserv.Find(omanager);
if (oemployees.Count > 0)
{
//_emloyeeId = oemployees.Max(x => x.EmployeeID.Integer);
_emloyeeId = oemployees.Max(x => x.EmployeeID);
}
}
// public void ProcessData(DataIntegrationHeader dataList)
// {
// try
// {
// int nCount = 1;
// // find user from Data
// // find payrolltpye from data
// try
// {
//// SaveBulkRequest(dataList);
//// _oHRDataUploads = dataList;
// _oEmployeeCollection = new List<Employee>();
// _oErrorList = new List<SuccessorErrorList>();
// _oDepartments = new DepartmentService().Get(EnumStatus.Active, 1);
// _oLocations = new LocationService().Get();
// _oDesignations = new DesignationService().Get(EnumStatus.Active, 1);
// _oReligions = new ReligionService().Get();
// _oCategories = new CategoryService().GetAll();
// _oGrades = new GradeService().GetAllGrade(1, EnumStatus.Active, "", "");
// CheckFieldValidation();
// }
// catch (Exception exp)
// {
// throw new Exception(exp.Message);
// }
// }
// catch (Exception e)
// {
// #region Handle Exception
// //if (tc != null)
// // tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// }
//public void SaveDataIntergration(DataIntegrationHeader dataList)
//{
// try
// {
// int nCount = 1;
// try
// {
// //SaveBulkRequest(dataList);
// //_oHRDataUploads = dataList;
// _oEmployeeCollection = new List<Employee>();
// _oErrorList = new List<SuccessorErrorList>();
// _oDepartments = new DepartmentService().Get(EnumStatus.Active, 1);
// _oLocations = new LocationService().Get();
// _oDesignations = new DesignationService().Get(EnumStatus.Active, 1);
// _oEmployees = new EmployeeService().GetAllEmps();
// _oReligions = new ReligionService().Get();
// _oBanks = new BankService().Get();
// _oBranchs = new BranchService().Get(EnumStatus.Regardless, 1);
// _oCategories = new CategoryService().GetAll();
// _oGrades = new GradeService().GetAllGrade(1, EnumStatus.Active, "", "");
// CheckFieldValidation();
// if (_oErrorList.Count > 0)
// {
// BulkSave(_oErrorList);
// var response = new
// {
// Message = "Validation Failed",
// Errors = _oErrorList
// };
// //return new Exception(response);
// new Exception(response.ToString());
// }
// foreach (DataIntegration item in _oHRDataUploads)
// {
// Employee oEmp = null;
// EmpLifeCycle lifeCycle = new EmpLifeCycle();
// Employee emp = _oEmployees.Find(x => x.EmployeeNo == item.EmployeeNo);
// if (emp == null)
// {
// oEmp = new Employee();
// oEmp.EmployeeNo = item.EmployeeNo;
// AddStatus(nCount, oEmp.EmployeeNo, "New Employee is created in the system with Employee No: " + item.EmployeeNo, EnumSAPProcessStatus.Success);
// }
// else
// oEmp = emp;
// oEmp.EmpLifeCycle = new EmpLifeCycle();
// oEmp.Name = item.EmployeeName;
// oEmp.FatherName = item.FathersName;
// oEmp.GlobalID = item.GlobalID;
// oEmp.BirthDate = Convert.ToDateTime(item.DateOfBirth);
// if (oEmp.DescriptionText != item.Designation)
// {
// oEmp.DescriptionText = item.Designation;
// // oEmp.EmpLifeCycle.DesignationText = item.Designation;
// }
// Category cat = _oCategories.Find(x => x.Name == item.Category);
// if (cat != null)
// {
// if (oEmp.CategoryID != cat.ID)
// {
// oEmp.CategoryID = cat.ID;
// oEmp.EmpLifeCycle.CategoryID = cat.ID;
// }
// }
// else
// AddStatus(nCount, oEmp.EmployeeNo, "Invalid Category : " + item.Category, EnumSAPProcessStatus.Error);
// Designation deg = _oDesignations.Find(x => x.Name == item.Designation);
// if (deg != null)
// {
// if (oEmp.DesignationID != deg.ID)
// {
// oEmp.DesignationID = deg.ID;
// oEmp.EmpLifeCycle.DesignationID = deg.ID;
// }
// }
// else
// AddStatus(nCount, oEmp.EmployeeNo, "Invalid Dsignation : " + item.Designation, EnumSAPProcessStatus.Error);
// //if (item.Category == "Apprentice")
// // oEmp.PayrollTypeID = ID.FromInteger(2);
// //else
// // oEmp.PayrollTypeID = ID.FromInteger(1);
// Grade grd = _oGrades.Find(x => x.Name == item.Grade);
// if (oEmp.GlobalID != item.GlobalID)
// {
// oEmp.GlobalID = item.GlobalID;
// }
// if (oEmp.JoiningDate != null)
// {
// if (oEmp.JoiningDate != Convert.ToDateTime(item.DateOfJoining))
// {
// oEmp.JoiningDate = Convert.ToDateTime(item.DateOfJoining);
// oEmp.Status = EnumEmployeeStatus.Live;
// oEmp.EmpLifeCycle.IsContinue = true;
// }
// }
// Religion rel = _oReligions.Find(x => x.Name == item.Religion);
// if (rel != null)
// oEmp.ReligionID = rel.ID;
// if (item.Gender == "M")
// oEmp.Gender = EnumGender.Male;
// else if (item.Gender == "F")
// oEmp.Gender = EnumGender.Female;
// if (item.TIN != "" && oEmp.TinNo == "")
// oEmp.TinNo = item.TIN;
// if (item.IsForeignExpatriate.ToUpper() == "FALSE")
// oEmp.ForeignExPat = false;
// else
// oEmp.ForeignExPat = true;
// //Set Department
// Department oDept = null;
// if (!string.IsNullOrEmpty(item.SubUnit))
// {
// oDept = _oDepartments.Find(x => x.Name == item.SubUnit);
// }
// else if (!string.IsNullOrEmpty(item.Unit))
// {
// oDept = _oDepartments.Find(x => x.Name == item.Unit);
// }
// else if (!string.IsNullOrEmpty(item.SubSection))
// {
// oDept = _oDepartments.Find(x => x.Name == item.SubSection);
// }
// else if (!string.IsNullOrEmpty(item.Section))
// {
// oDept = _oDepartments.Find(x => x.Name == item.Section);
// }
// else if (!string.IsNullOrEmpty(item.Department))
// {
// oDept = _oDepartments.Find(x => x.Name == item.Department);
// }
// if (oDept != null && oEmp.DepartmentID != oDept.ID)
// {
// oEmp.DepartmentID = oDept.ID;
// oEmp.EmpLifeCycle.DepartmentID = oDept.ID;
// oEmp.EmpLifeCycle.EffectDate = Convert.ToDateTime(item.AssignmentChangeDate);
// }
// //Set Location
// Location oLoc = null;
// if (!string.IsNullOrEmpty(item.Location))
// {
// oLoc = _oLocations.Find(x => x.Name == item.Location);
// if (oLoc != null && oLoc.ParentID == null)
// {
// AddStatus(nCount, oEmp.EmployeeNo, "Employee Cannot be posted in Zone.", EnumSAPProcessStatus.Error);
// }
// if (oLoc != null && oEmp.LocationID != oLoc.ID)
// {
// oEmp.LocationID = oLoc.ID;
// oEmp.EmpLifeCycle.LocationID = oLoc.ID;
// oEmp.EmpLifeCycle.EffectDate = Convert.ToDateTime(item.AssignmentChangeDate);
// }
// }
// //else if (!string.IsNullOrEmpty(item.Unit))
// //{
// // oDept = _oDepartments.Find(x => x.Name == item.Unit);
// //}
// if (item.EmailAddress != "" && oEmp.EmailAddress == "")
// oEmp.EmailAddress = item.EmailAddress;
// if (item.MobileNo != "" && oEmp.MobileNo == "")
// oEmp.MobileNo = item.MobileNo;
// oEmp.EmpLifeCycle.Description = item.SALARY_CHANGE_TYPE;
// //Promotion
// EmployeeGradeSalary empgrd = new EmployeeGradeSalary();
// if (oEmp != null)
// {
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd = new EmployeeGradeSalary();
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd.GradeID = grd.ID;
// empgrd.BasicSalary = Convert.ToDouble(item.BasicSalary);
// oEmp.GradeID = grd.ID;
// oEmp.BasicSalary = Convert.ToDouble(item.BasicSalary);
// empgrd.EffectDate = Convert.ToDateTime(item.BasicSalaryEffectDate);
// empgrd.GradeSalaryTypeID = GetGradeChangeType2(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.Description = item.SALARY_CHANGE_TYPE;
// oEmp.EmpLifeCycle.StatusDetailID = GetGradeChangeType(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.GradeID = grd.ID;
// oEmp.EmpLifeCycle.EffectDate = empgrd.EffectDate;
// oEmp.EmpLifeCycle.BasicSalary = empgrd.BasicSalary;
// oEmp.EmpLifeCycle.EmployeeGradeSalary = empgrd;
// }
// if (oEmp.GradeID != grd.ID || oEmp.BasicSalary != Convert.ToDouble(item.BasicSalary))
// {
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd = new EmployeeGradeSalary();
// if (empgrd.GradeID != grd.ID && empgrd.BasicSalary != Convert.ToDouble(item.BasicSalary))
// {
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd.GradeID = grd.ID;
// empgrd.BasicSalary = Convert.ToDouble(item.BasicSalary);
// empgrd.EffectDate = Convert.ToDateTime(item.BasicSalaryEffectDate);
// empgrd.GradeSalaryTypeID = GetGradeChangeType2(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.Description = item.SALARY_CHANGE_TYPE;
// oEmp.EmpLifeCycle.StatusDetailID = GetGradeChangeType(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.GradeID = grd.ID;
// oEmp.EmpLifeCycle.EffectDate = empgrd.EffectDate;
// oEmp.EmpLifeCycle.BasicSalary = empgrd.BasicSalary;
// oEmp.EmpLifeCycle.EmployeeGradeSalary = empgrd;
// oEmp.GradeID = grd.ID;
// oEmp.BasicSalary = Convert.ToDouble(item.BasicSalary);
// }
// else if (emp.GradeID != grd.ID && emp.BasicSalary == Convert.ToDouble(item.BasicSalary))
// {
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd.GradeID = grd.ID;
// empgrd.EffectDate = Convert.ToDateTime(item.AssignmentChangeDate);
// empgrd.GradeSalaryTypeID = GetGradeChangeType2(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.Description = item.SALARY_CHANGE_TYPE;
// oEmp.EmpLifeCycle.StatusDetailID = GetGradeChangeType(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.GradeID = grd.ID;
// oEmp.EmpLifeCycle.EffectDate = empgrd.EffectDate;
// oEmp.EmpLifeCycle.EmployeeGradeSalary = empgrd;
// oEmp.GradeID = grd.ID;
// }
// else if (emp.GradeID == grd.ID && empgrd.BasicSalary != emp.BasicSalary)
// {
// oEmp.EmpLifeCycle.EmployeeGradeSalary = new EmployeeGradeSalary();
// empgrd.BasicSalary = Convert.ToDouble(item.BasicSalary);
// empgrd.EffectDate = Convert.ToDateTime(item.BasicSalaryEffectDate);
// empgrd.GradeSalaryTypeID = GetGradeChangeType2(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.Description = item.SALARY_CHANGE_TYPE;
// oEmp.EmpLifeCycle.StatusDetailID = GetGradeChangeType(item.SALARY_CHANGE_TYPE);
// oEmp.EmpLifeCycle.EffectDate = empgrd.EffectDate;
// oEmp.EmpLifeCycle.BasicSalary = empgrd.BasicSalary;
// oEmp.EmpLifeCycle.EmployeeGradeSalary = empgrd;
// oEmp.BasicSalary = Convert.ToDouble(item.BasicSalary);
// }
// }
// //Bank Account History
// //if (item.SalaryBankCode != ""||item.SalaryBranchCode != "" || item.SalaryAccountNumber != "")
// if (item.SalaryAccountNumber != "")
// {
// oEmp.EmployeeBankAccount = new EmployeeBankAccount();
// if (oEmp.AccountNo != item.SalaryAccountNumber)
// {
// if (item.SalaryBranch != "")
// {
// Branch oBranch = _oBranchs.Find(x => x.Name == item.SalaryBranch);
// if (oBranch == null)
// {
// AddStatus(nCount, oEmp.EmployeeNo, "Salary branch not found", EnumSAPProcessStatus.Error);
// }
// else
// {
// oEmp.EmployeeBankAccount.BranchID = oBranch.ID;
// if (oEmp.BranchID != oEmp.EmployeeBankAccount.BranchID)
// oEmp.BranchID = oEmp.EmployeeBankAccount.BranchID;
// }
// }
// if (item.SalaryAccountNumber == "")
// AddStatus(nCount, oEmp.EmployeeNo, "Salary account not found", EnumSAPProcessStatus.Error);
// else
// {
// oEmp.EmployeeBankAccount.AccountNo = item.SalaryAccountNumber;
// oEmp.AccountNo = item.SalaryAccountNumber;
// }
// if (item.SALARY_ACCOUNT_EFFECT_DATE != null)
// {
// oEmp.EmployeeBankAccount.EffectDate = Convert.ToDateTime(item.SALARY_ACCOUNT_EFFECT_DATE);
// }
// else
// AddStatus(nCount, oEmp.EmployeeNo, "Salary account effect date not found", EnumSAPProcessStatus.Error);
// oEmp.EmployeeBankAccount.AccountType = EnumBankAccountType.SalaryAccount;
// }
// }
// if (oEmp.EmpLifeCycle.EffectDate == DateTime.MinValue)
// oEmp.EmpLifeCycle.EffectDate = DateTime.Today;
// _oEmployeeCollection.Add(oEmp);
// nCount++;
// }
// }
// catch (Exception exp)
// {
// throw new Exception(exp.Message);
// }
// if (_oErrorList.Count > 0)
// {
// List<SuccessorErrorList> list = _oErrorList.FindAll(x => x.Status == EnumSAPProcessStatus.Error);
// if (list != null && list.Count > 0)
// {
// BulkSave(list);
// var response = new
// {
// Message = "Please see error list.Failed to validate",
// Errors = _oErrorList
// };
// new Exception(response.ToString());
// }
// else
// {
// Save();
// }
// }
// else
// {
// Save();
// }
// }
// catch (Exception e)
// {
// #region Handle Exception
// //if (tc != null)
// // tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
//}
//private void CheckFieldValidation()
//{
// _oErrorList = new List<SuccessorErrorList>();
// SuccessorErrorList oItem = new SuccessorErrorList();
// int nCount = 1;
// List<Branch> branches = new BranchService().Get(EnumStatus.Regardless, 1);
// List<Bank> banks = new BankService().Get();
// foreach (DataIntegration item in _oHRDataUploads)
// {
// if (string.IsNullOrEmpty(item.EmployeeNo))
// AddStatus(nCount, item.EmployeeNo, "EmployeeNo is not found", EnumSAPProcessStatus.Error);
// else
// {
// if (item.EmployeeNo.Length > 6)
// AddStatus(nCount, item.EmployeeNo, "EmployeeNo exceeds 6-digits", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.EmployeeName))
// AddStatus(nCount, item.EmployeeNo, "EmployeeName is not found", EnumSAPProcessStatus.Error);
// else
// {
// if (item.EmployeeName.Length > 150)
// AddStatus(nCount, item.EmployeeNo, "EmployeeName exceeds 150-digits", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.FathersName))
// {
// if (item.FathersName.Length > 150)
// AddStatus(nCount, item.EmployeeNo, "FathersName exceeds 150-digits", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Designation))
// AddStatus(nCount, item.EmployeeNo, "Designation is not found", EnumSAPProcessStatus.Error);
// else
// {
// if (item.Designation.Length > 200)
// AddStatus(nCount, item.EmployeeNo, "Designation exceeds 200-digits", EnumSAPProcessStatus.Error);
// }
// if (item.GlobalID.Length > 20)
// AddStatus(nCount, item.EmployeeNo, "Global ID's length is greater then 20 characters.", EnumSAPProcessStatus.Error);
// if (!string.IsNullOrEmpty(item.PreviousEmployeeNo))
// {
// if (item.PreviousEmployeeNo.Length > 6)
// AddStatus(nCount, item.EmployeeNo, "PreviousEmployeeNo is not in 6-digits", EnumSAPProcessStatus.Error);
// }
// if (item.ContractChangeEndDate != null && Convert.ToDateTime(item.ContractChangeEndDate) == DateTime.MinValue)
// AddStatus(nCount, item.EmployeeNo, "ContractChangeEndDate is not valid date.", EnumSAPProcessStatus.Error);
// if (item.DateOfBirth == null)
// AddStatus(nCount, item.EmployeeNo, "DateOfBirth is not found", EnumSAPProcessStatus.Error);
// if (Convert.ToDateTime(item.DateOfBirth) == DateTime.MinValue)
// AddStatus(nCount, item.EmployeeNo, "DateOfBirth is not valid date.", EnumSAPProcessStatus.Error);
// if (item.DateOfJoining != null)
// { //AddStatus(nCount, item.EmployeeNo, "DateOfJoining is not found", EnumSAPProcessStatus.Error);
// if (Convert.ToDateTime(item.DateOfJoining) == DateTime.MinValue)
// AddStatus(nCount, item.EmployeeNo, "DateOfJoining is not valid date.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.EmailAddress))
// {
// AddStatus(nCount, item.EmployeeNo, "Email Address is Missing.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Category))
// {
// AddStatus(nCount, item.EmployeeNo, "Category is not found.", EnumSAPProcessStatus.Error);
// }
// else
// {
// Category oObj = _oCategories.Find(x => x.Name == item.Category);
// if (oObj == null)
// AddStatus(nCount, item.EmployeeNo, "Category is not valid.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Religion))
// {
// AddStatus(nCount, item.EmployeeNo, "Religion is not found.", EnumSAPProcessStatus.Error);
// }
// else
// {
// Religion oObj = _oReligions.Find(x => x.Name == item.Religion);
// if (oObj == null)
// AddStatus(nCount, item.EmployeeNo, "Religion is not valid.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Gender))
// AddStatus(nCount, item.EmployeeNo, "Gender is not found.", EnumSAPProcessStatus.Error);
// else
// {
// if (item.Gender == "M" || item.Gender == "F") { }
// else
// AddStatus(nCount, item.EmployeeNo, "Gender is not valid. It should be M or F", EnumSAPProcessStatus.Error);
// }
// if (item.TIN.Length > 50)
// AddStatus(nCount, item.EmployeeNo, "TIN exceeds 50 character.", EnumSAPProcessStatus.Error);
// if (string.IsNullOrEmpty(item.IsForeignExpatriate))
// item.IsForeignExpatriate = "FALSE";
// else
// {
// if (item.IsForeignExpatriate.ToUpper() == "TRUE" || item.IsForeignExpatriate.ToUpper() == "FALSE") { }
// else
// AddStatus(nCount, item.EmployeeNo, "IsForeignExpatriate is not valid.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Grade))
// {
// AddStatus(nCount, item.EmployeeNo, "Grade is not found.", EnumSAPProcessStatus.Error);
// }
// else
// {
// Grade oObj = _oGrades.Find(x => x.Name == item.Grade);
// if (oObj == null)
// AddStatus(nCount, item.EmployeeNo, "Grade is not valid.", EnumSAPProcessStatus.Error);
// }
// if (Convert.ToDouble(item.BasicSalary) <= 0)
// AddStatus(nCount, item.EmployeeNo, "Basic salary should greater than 0.", EnumSAPProcessStatus.Error);
// if (item.BasicSalaryEffectDate == null)
// AddStatus(nCount, item.EmployeeNo, "BasicSalaryEffectDate is not found", EnumSAPProcessStatus.Error);
// if (Convert.ToDateTime(item.BasicSalaryEffectDate) == DateTime.MinValue)
// AddStatus(nCount, item.EmployeeNo, "BasicSalaryEffectDate is not valid date.", EnumSAPProcessStatus.Error);
// if (string.IsNullOrEmpty(item.SALARY_CHANGE_TYPE))
// {
// AddStatus(nCount, item.EmployeeNo, "Salary Change Type is not found.", EnumSAPProcessStatus.Error);
// }
// else
// {
// if (item.SALARY_CHANGE_TYPE != "Joining" && item.SALARY_CHANGE_TYPE != "Promotion"
// && item.SALARY_CHANGE_TYPE != "Confirmation" && item.SALARY_CHANGE_TYPE != "Annual Increment"
// && item.SALARY_CHANGE_TYPE != "Salary Revised" && item.SALARY_CHANGE_TYPE != "Other")
// AddStatus(nCount, item.EmployeeNo, "Salary Change Type is not recognized.It must be like (Joining,Promotion,Confirmation,Annual Increment,Salary Revised,Other)", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.SubUnit))
// {
// if (!string.IsNullOrEmpty(item.Unit))
// {
// if (!string.IsNullOrEmpty(item.SubSection))
// {
// if (!string.IsNullOrEmpty(item.Section))
// {
// if (!string.IsNullOrEmpty(item.Department))
// {
// if (!string.IsNullOrEmpty(item.Division))
// {
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Division is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Department is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Section is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Sub Section is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Unit is not found.", EnumSAPProcessStatus.Error);
// }
// else if (!string.IsNullOrEmpty(item.Unit))
// {
// if (!string.IsNullOrEmpty(item.SubSection))
// {
// if (!string.IsNullOrEmpty(item.Section))
// {
// if (!string.IsNullOrEmpty(item.Department))
// {
// if (!string.IsNullOrEmpty(item.Division))
// {
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Division is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Department is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Section is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Sub Section is not found.", EnumSAPProcessStatus.Error);
// }
// else if (!string.IsNullOrEmpty(item.SubSection))
// {
// if (!string.IsNullOrEmpty(item.Section))
// {
// if (!string.IsNullOrEmpty(item.Department))
// {
// if (!string.IsNullOrEmpty(item.Division))
// {
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Division is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Department is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Section is not found.", EnumSAPProcessStatus.Error);
// }
// else if (!string.IsNullOrEmpty(item.Section))
// {
// if (!string.IsNullOrEmpty(item.Department))
// {
// if (!string.IsNullOrEmpty(item.Division))
// {
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Division is not found.", EnumSAPProcessStatus.Error);
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Department is not found.", EnumSAPProcessStatus.Error);
// }
// else if (!string.IsNullOrEmpty(item.Department))
// {
// if (!string.IsNullOrEmpty(item.Division))
// {
// }
// else
// AddStatus(nCount, item.EmployeeNo, "Division is not found.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Division))
// AddStatus(nCount, item.EmployeeNo, "Division Name is not found.", EnumSAPProcessStatus.Error);
// else
// {
// if (item.Division.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Division Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Division.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Division is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.Department))
// {
// // AddStatus(nCount, item.EmployeeNo, "Department Name is not found.", EnumSAPProcessStatus.Error);
// //else
// //{
// if (item.Department.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Department Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Department.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Department is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.Section))
// // AddStatus(nCount, item.EmployeeNo, "Section Name is not found.", EnumSAPProcessStatus.Error);
// //else
// {
// if (item.Section.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Section Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Section.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Section is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.SubSection))
// // AddStatus(nCount, item.EmployeeNo, "SubSection Name is not found.", EnumSAPProcessStatus.Error);
// //else
// {
// if (item.SubSection.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "SubSection Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.SubSection.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty SubSection is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.Unit))
// // AddStatus(nCount, item.EmployeeNo, "Unit Name is not found.", EnumSAPProcessStatus.Error);
// //else
// {
// if (item.Unit.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Unit Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Unit.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Unit is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (!string.IsNullOrEmpty(item.SubUnit))
// // AddStatus(nCount, item.EmployeeNo, "SubUnit Name is not found.", EnumSAPProcessStatus.Error);
// //else
// {
// if (item.SubUnit.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "SubUnit Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.SubUnit.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty SubUnit is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Zone))
// AddStatus(nCount, item.EmployeeNo, "Zone Name is not found.", EnumSAPProcessStatus.Error);
// else
// {
// if (item.Zone.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Zone Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Zone.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Zone is not allowed.", EnumSAPProcessStatus.Error);
// }
// if (string.IsNullOrEmpty(item.Location))
// AddStatus(nCount, item.EmployeeNo, "Location Name is not found.", EnumSAPProcessStatus.Error);
// else
// {
// if (item.Location.Length > 100)
// AddStatus(nCount, item.EmployeeNo, "Location Name is greater then 100 characters.", EnumSAPProcessStatus.Error);
// if (item.Location.Length == 0)
// AddStatus(nCount, item.EmployeeNo, "Empty Location is not allowed.", EnumSAPProcessStatus.Error);
// }
// try
// {
// Convert.ToDateTime(item.AssignmentChangeDate);
// }
// catch
// {
// AddStatus(nCount, item.EmployeeNo, "Assignment Change Date is not found.", EnumSAPProcessStatus.Error);
// }
// if (item.SalaryAccountNumber != "")
// {
// if (item.SalaryBank == "" || item.SalaryBranch == "")
// {
// AddStatus(nCount, item.EmployeeNo, "Bank or branch cannot empty", EnumSAPProcessStatus.Error);
// }
// else
// {
// Branch oBranch = branches.Where(x => x.Name.Trim() == item.SalaryBranch.Trim()).FirstOrDefault();
// if (oBranch != null)
// {
// if (oBranch.Code.Trim() == item.SalaryBranchCode.Trim())
// {
// Bank oBank = banks.Where(x => x.ID == oBranch.BankID).FirstOrDefault();
// if (oBank != null)
// {
// if (item.SalaryBank.Trim() != oBank.Name.Trim())
// {
// AddStatus(nCount, item.EmployeeNo, "Bank name doesn't match for the branch \'" + item.SalaryBranch + "\'", EnumSAPProcessStatus.Error);
// }
// }
// else
// {
// AddStatus(nCount, item.EmployeeNo, "Bank is not found for the branch \'" + item.SalaryBranch + "\'", EnumSAPProcessStatus.Error);
// }
// }
// else
// {
// AddStatus(nCount, item.EmployeeNo, "Salary Branch Code doesn't match with the Salary Branch.", EnumSAPProcessStatus.Error);
// }
// }
// else
// {
// AddStatus(nCount, item.EmployeeNo, "Salary Branch Name doesn't match with the system branch name.", EnumSAPProcessStatus.Error);
// }
// }
// }
// nCount++;
// }
//}
private void AddStatus(int nCount, string sEmployeeNo, string sMessege, EnumSAPProcessStatus eStstus, EnumDataIntegrationType type)
{
SuccessorErrorList item = new SuccessorErrorList();
item.RowNo = nCount;
item.EmployeeNo = sEmployeeNo;
item.Message = sMessege;
item.Status = eStstus;
item.UploadDate = DateTime.Now;
item.Type = type;
_oSuccessOrErrorList.Add(item);
}
#endregion
public string SaveBulkRequest(List<DataIntegration> datas)
{
TransactionContext tc = null;
var builder = new StringBuilder();
string getYear = DateTime.Now.Year.ToString("00");
string getMonth = DateTime.Now.Month.ToString("00");
string getDate = DateTime.Now.Day.ToString("00");
string getHour = DateTime.Now.Hour.ToString("00");
string getMin = DateTime.Now.Minute.ToString("00"); //last two digit
string getSec = DateTime.Now.Second.ToString("00");
string batchId = builder.Append(getYear).Append(getMonth).Append(getDate).Append("-").Append(getHour).Append(getMin).Append(getSec).ToString();
try
{
DataTable processTable = new DataTable("DataIntegrationRequest");
processTable.Columns.Add(new DataColumn("BatchID", typeof(string)));
processTable.Columns.Add(new DataColumn("UploadDate", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeNo", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeName", typeof(string)));
processTable.Columns.Add(new DataColumn("DiscontinueDateRegion", typeof(string)));
processTable.Columns.Add(new DataColumn("DesignationCode", typeof(string)));
processTable.Columns.Add(new DataColumn("DesignationName", typeof(string)));
processTable.Columns.Add(new DataColumn("DateOfBirth", typeof(string)));
processTable.Columns.Add(new DataColumn("DateOfJoining", typeof(string)));
processTable.Columns.Add(new DataColumn("ConfirmationDate", typeof(string)));
processTable.Columns.Add(new DataColumn("CategoryCode", typeof(string)));
processTable.Columns.Add(new DataColumn("CategoryName", typeof(string)));
processTable.Columns.Add(new DataColumn("ReligionCode", typeof(string)));
processTable.Columns.Add(new DataColumn("ReligionName", typeof(string)));
processTable.Columns.Add(new DataColumn("MaritalStatus", typeof(string)));
processTable.Columns.Add(new DataColumn("Gender", typeof(string)));
processTable.Columns.Add(new DataColumn("TIN", typeof(string)));
processTable.Columns.Add(new DataColumn("GradeCode", typeof(string)));
processTable.Columns.Add(new DataColumn("GradeName", typeof(string)));
processTable.Columns.Add(new DataColumn("PayScaleLevelCode", typeof(string)));
processTable.Columns.Add(new DataColumn("PayScaleLevel", typeof(string)));
processTable.Columns.Add(new DataColumn("IsForeignExpatriate", typeof(string)));
processTable.Columns.Add(new DataColumn("IsPFMember", typeof(string)));
processTable.Columns.Add(new DataColumn("BusinessUnitCode", typeof(string)));
processTable.Columns.Add(new DataColumn("BusinessUnitName", typeof(string)));
processTable.Columns.Add(new DataColumn("DivisionCode", typeof(string)));
processTable.Columns.Add(new DataColumn("DivisionName", typeof(string)));
processTable.Columns.Add(new DataColumn("DepartmentCode", typeof(string)));
processTable.Columns.Add(new DataColumn("DepartmentName", typeof(string)));
processTable.Columns.Add(new DataColumn("SubDepartmentCode", typeof(string)));
processTable.Columns.Add(new DataColumn("SubDepartmentName", typeof(string)));
processTable.Columns.Add(new DataColumn("ZoneCode", typeof(string)));
processTable.Columns.Add(new DataColumn("ZoneName", typeof(string)));
processTable.Columns.Add(new DataColumn("RegionCode", typeof(string)));
processTable.Columns.Add(new DataColumn("RegionName", typeof(string)));
processTable.Columns.Add(new DataColumn("CostCenterCode", typeof(string)));
processTable.Columns.Add(new DataColumn("CostCenterName", typeof(string)));
processTable.Columns.Add(new DataColumn("LifeCycleEffectDate", typeof(string)));
processTable.Columns.Add(new DataColumn("LifeCycleEvent", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeBankCode", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeBankName", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeBranchCode", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeBranchName", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeAccountNumber", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeAccountEffectDate", typeof(string)));
processTable.Columns.Add(new DataColumn("BasicSalary", typeof(string)));
processTable.Columns.Add(new DataColumn("GrossSalary", typeof(string)));
processTable.Columns.Add(new DataColumn("payrolltypeid", typeof(int)));
tc = TransactionContext.Begin();
int id = tc.GenerateID("DataIntegrationRequest", "DataIntegrationRequestID");
foreach (DataIntegration oItem in datas)
{
oItem.BatchID = batchId;
processTable.Rows.Add(oItem.BatchID, oItem.UploadDate, oItem.EmployeeNo, oItem.EmployeeName, oItem.DiscontinueDateRegion, oItem.DesignationCode,
oItem.Designation, oItem.DateOfBirth, oItem.DateOfJoining, oItem.ConfirmationDate, oItem.CategoryCode, oItem.Category, oItem.ReligionCode, oItem.Religion, oItem.MaritalStatus, oItem.Gender, oItem.TIN, oItem.GradeCode, oItem.Grade, oItem.PayScaleLevelCode, oItem.PayScaleLevel, oItem.IsForeignExpatriate, oItem.PFMembership, oItem.BusinessUnitCode, oItem.BusinessUnitName, oItem.DivisionCode,
oItem.Division, oItem.DepartmentCode, oItem.Department, oItem.SubDepartmentCode, oItem.SubDepartment, oItem.ZoneCode, oItem.Zone, oItem.RegionCode, oItem.RegionName, oItem.CostCenterCode, oItem.CostCenterName, oItem.AssignmentChangeDate, oItem.LIFE_CYCLE_EVENT, oItem.SalaryBankCode, oItem.SalaryBank, oItem.SalaryBranchCode, oItem.SalaryBranch, oItem.SalaryAccountNumber, oItem.SALARY_ACCOUNT_EFFECT_DATE, oItem.BasicSalary,
oItem.GrossSalary,oItem.payrolltypeid);
}
using (SqlBulkCopy sqlBulk = new SqlBulkCopy((SqlConnection)tc.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)tc.Transaction))
{
sqlBulk.BulkCopyTimeout = 6000; // in seconds
var mapping = new SqlBulkCopyColumnMapping("BatchID", "BatchID");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("UploadDate", "UploadDate");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeNo", "EmployeeNo");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeName", "EmployeeName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DiscontinueDateRegion", "DiscontinueDateRegion");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DesignationCode", "DesignationCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DesignationName", "DesignationName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DateOfBirth", "DateOfBirth");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DateOfJoining", "DateOfJoining");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ConfirmationDate", "ConfirmationDate");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("CategoryCode", "CategoryCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("CategoryName", "CategoryName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ReligionCode", "ReligionCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ReligionName", "ReligionName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("MaritalStatus", "MaritalStatus");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("Gender", "Gender");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("TIN", "TIN");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("GradeCode", "GradeCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("GradeName", "GradeName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("PayScaleLevelCode", "PayScaleLevelCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("PayScaleLevel", "PayScaleLevel");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("IsForeignExpatriate", "IsForeignExpatriate");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("IsPFMember", "IsPFMember");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("BusinessUnitCode", "BusinessUnitCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("BusinessUnitName", "BusinessUnitName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DivisionCode", "DivisionCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DivisionName", "DivisionName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DepartmentCode", "DepartmentCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("DepartmentName", "DepartmentName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("SubDepartmentCode", "SubDepartmentCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("SubDepartmentName", "SubDepartmentName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ZoneCode", "ZoneCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ZoneName", "ZoneName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("RegionCode", "RegionCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("RegionName", "RegionName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("CostCenterCode", "CostCenterCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("CostCenterName", "CostCenterName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("LifeCycleEffectDate", "LifeCycleEffectDate");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("LifeCycleEvent", "LifeCycleEvent");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeBankCode", "EmployeeBankCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeBankName", "EmployeeBankName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeBranchCode", "EmployeeBranchCode");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeBranchName", "EmployeeBranchName");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeAccountNumber", "EmployeeAccountNumber");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("EmployeeAccountEffectDate", "EmployeeAccountEffectDate");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("BasicSalary", "BasicSalary");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("GrossSalary", "GrossSalary");
sqlBulk.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("payrolltypeid", "payrolltypeid");
sqlBulk.ColumnMappings.Add(mapping);
sqlBulk.DestinationTableName = "DataIntegrationRequest";
sqlBulk.WriteToServer(processTable);
}
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return batchId;
}
public void BulkSave(List<SuccessorErrorList> items)
{
try
{
TransactionContext tc = null;
tc = TransactionContext.Begin();
DataTable processTable = new DataTable("SuccessorErrorList");
processTable.Columns.Add(new DataColumn("RowNo", typeof(Int32)));
processTable.Columns.Add(new DataColumn("EmployeeNo", typeof(string)));
processTable.Columns.Add(new DataColumn("Message", typeof(string)));
processTable.Columns.Add(new DataColumn("Status", typeof(string)));
processTable.Columns.Add(new DataColumn("UploadDate", typeof(DateTime)));
processTable.Columns.Add(new DataColumn("Type", typeof(Int32)));
processTable.Columns.Add(new DataColumn("BatchId", typeof(string)));
foreach (SuccessorErrorList item in items)
{
processTable.Rows.Add(item.RowNo, item.EmployeeNo, item.Message, item.Status.ToString(), DateTime.Now, item.Type, item.BatchId);
}
using (SqlBulkCopy bulkCopy = new SqlBulkCopy((SqlConnection)tc.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)tc.Transaction))
{
bulkCopy.BulkCopyTimeout = 6000; // in seconds
bulkCopy.DestinationTableName = "SuccessorErrorList";
bulkCopy.WriteToServer(processTable);
}
tc.End();
}
catch (Exception e)
{
throw new ServiceException(e.Message, e);
}
}
public string BulkSaveIndividualAllowance(List<DataIntergrationIndividualAllowance> items)
{
string batchId = "";
try
{
var builder = new StringBuilder();
string getYear = DateTime.Now.Year.ToString("00");
string getMonth = DateTime.Now.Month.ToString("00");
string getDate = DateTime.Now.Day.ToString("00");
string getHour = DateTime.Now.Hour.ToString("00");
string getMin = DateTime.Now.Minute.ToString("00"); //last two digit
string getSec = DateTime.Now.Second.ToString("00");
batchId = builder.Append(getYear).Append(getMonth).Append(getDate).Append("-").Append(getHour).
Append(getMin).Append(getSec).ToString();
TransactionContext tc = null;
tc = TransactionContext.Begin();
DataTable processTable = new DataTable("DIBenefitAndDeduction");
processTable.Columns.Add(new DataColumn("BatchID", typeof(string)));
processTable.Columns.Add(new DataColumn("EmployeeNo", typeof(string)));
processTable.Columns.Add(new DataColumn("BenifitCode", typeof(string)));
processTable.Columns.Add(new DataColumn("ItemName", typeof(string)));
processTable.Columns.Add(new DataColumn("FromDate", typeof(string)));
processTable.Columns.Add(new DataColumn("ToDate", typeof(string)));
processTable.Columns.Add(new DataColumn("Amount", typeof(string)));
processTable.Columns.Add(new DataColumn("payrolltypeid", typeof(int)));
foreach (DataIntergrationIndividualAllowance item in items)
{
if (item.Items != null)
{
foreach (ComnpData row in item.Items)
{
processTable.Rows.Add(batchId, item.EmployeeNo, row.BenifitCode,
row.ItemName, row.FromDate, row.ToDate, row.Amount, item.payrolltypeid);
}
}
else
{
processTable.Rows.Add(batchId, item.EmployeeNo, null, null, null, null, null,item.payrolltypeid);
}
}
using (SqlBulkCopy bulkCopy = new SqlBulkCopy((SqlConnection)tc.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)tc.Transaction))
{
bulkCopy.BulkCopyTimeout = 6000; // in seconds
bulkCopy.DestinationTableName = "DIBenefitAndDeduction";
var mapping = new SqlBulkCopyColumnMapping("EmployeeNo", "EmployeeNo");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("BenifitCode", "BenifitCode");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ItemName", "ItemName");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("FromDate", "FromDate");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("ToDate", "ToDate");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("Amount", "Amount");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("BatchID", "BatchID");
bulkCopy.ColumnMappings.Add(mapping);
mapping = new SqlBulkCopyColumnMapping("payrolltypeid", "payrolltypeid");
bulkCopy.ColumnMappings.Add(mapping);
bulkCopy.WriteToServer(processTable);
}
tc.End();
}
catch (Exception e)
{
throw new ServiceException(e.Message, e);
}
return batchId;
}
public DataSet GetBudgetDataAllowance(int payrolltypeid)
{
DataSet ds = new DataSet();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
ds = DataIntegrationRequestDA.GetBudgetDataAllowance(tc, payrolltypeid);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return ds;
}
public DataSet GetBudgetData(int payrolltypeid)
{
DataSet ds = new DataSet();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
ds = DataIntegrationRequestDA.GetBudgetData(tc, payrolltypeid);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return ds;
}
public DataSet GetSuccessorErrorData(string batchId)
{
DataSet ds = new DataSet();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
ds = DataIntegrationRequestDA.GetSuccessListbyBatchID(tc, batchId);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return ds;
}
#region ImportEmpIndividualAllowanceDeduction
public void ImportEmpIndividualAllowanceDeduction(int payrollTypeID, EnumAllowOrDeduct type,
List<DataIntergrationIndividualAllowance> odataTable, string selectedEmployees)
{
_payrollTypeID = payrollTypeID;
List<ADParameterEmployee> oadparamemployees = new List<ADParameterEmployee>();
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
List<Employee> oemployees = new EmployeeService().GetAllEmps(this._payrollTypeID);
List<ADParameter> oadparameters = new ADParameterService().GetWithDetail(EnumStatus.Active, _payrollTypeID);
Employee oemployee = null;
ADParameterEmployee oadparamemp = null;
List<AllowanceDeduction> allows = new AllowanceDeductionService().Get(EnumStatus.Regardless,
this._payrollTypeID);
_errorOrSuccessList = new List<UploadErrorOrSuccess>();
List<ADParameterEmployee> adempsall = new ADParameterEmployeeService().Get(EnumADEmpType.AppliedToIndividual,
EnumAllowOrDeduct.Allowance);
adempsall = adempsall.FindAll(x => x.Arreartype == EnumArrearType.NotPresent );
if (selectedEmployees.Length > 0)
{
string[] emps = selectedEmployees.Split(',');
List<ADParameterEmployee> newitems = new List<ADParameterEmployee>();
foreach (var ep in emps)
{
var emp = oemployees.FirstOrDefault(x => x.EmployeeNo == ep);
if (emp != null)
{
if(adempsall.Any(y => y.EmployeeID == emp.ID))
newitems.AddRange(adempsall.FindAll(y => y.EmployeeID == emp.ID));
}
}
adempsall = newitems;
}
List<ADParameterEmployee> deletedItems = new List<ADParameterEmployee>();
//List<AllowanceDeduction> types = new List<AllowanceDeduction>();
//types = types = new AllowanceDeductionService().Get(payrollTypeID, EnumStatus.Active,
// EnumAllowOrDeduct.Allowance, EnumPeriodicity.OneOff);
//Dictionary<int, string> ItemOneComboData = new Dictionary<int, string>();
//foreach (AllowanceDeduction ADitem in types)
//{
// ItemOneComboData.Add(ADitem.ID, ADitem.Name);
//}
int nRow = 0;
try
{
DateTime updatedTime = DateTime.Now;
DateTime createdDate = DateTime.Today;
foreach (DataIntergrationIndividualAllowance dr in odataTable)
{
nRow = nRow + 1;
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr.EmployeeNo; });
if (oemployee != null)
{
if (dr.Items != null && dr.Items.Count > 0)
{
foreach (ComnpData comdata in dr.Items)
{
if (comdata.ItemName.ToLower() == "basic salary") continue;
if (comdata.ItemName == "Monthly Gross") continue;
oadparamemp = new ADParameterEmployee();
oadparamemp.EmployeeID = oemployee.ID;
var allow = allows.FirstOrDefault(x => x.Code == comdata.BenifitCode);
if (allow == null)
{
AddStatus(nRow, oemployee.EmployeeNo, "Allowance/Deduction head not found. Item Code :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
if (comdata.Amount == string.Empty)
{
AddStatus(nRow, oemployee.EmployeeNo, "Amount can not be Empty. Item Code :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
double mAmount = Convert.ToDouble(comdata.Amount);
oadparamemp.AllowDeductID = allow.ID;
oadparamemp = adempsall.FirstOrDefault(x => x.EmployeeID == oemployee.ID &&
x.AllowDeductID == allow.ID);
DateTime fromDate = Convert.ToDateTime(comdata.FromDate);
if (oadparamemp == null)
{
oadparamemp = new ADParameterEmployee();
oadparamemp.EmployeeID = oemployee.ID;
oadparamemp.AllowDeductID = allow.ID;
oadparamemp.MonthlyAmount = mAmount;
oadparamemp.FormDate = fromDate;
oadparamemp.CreatedDate = createdDate;
oadparamemp.CreatedBy = _userID;
AddStatus(nRow, oemployee.EmployeeNo, "New Benifit/Deduction added. Item Code :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Success,
EnumDataIntegrationType.IndividualAllowance);
}
else
{
DateTime? tdate = comdata.ToDate.ToString() == "" ? null :
Convert.ToDateTime(comdata.ToDate);
if (oadparamemp.MonthlyAmount == mAmount )
{
oadparamemp.ModifiedDate = updatedTime;
oadparamemployees.Add(oadparamemp);
continue;
}
// for Arrear
if (oadparamemp.FormDate != fromDate && fromDate <= ptype.LastPayProcessDate)
{
var dItem = oadparamemp.GetClone();
dItem.ID = oadparamemp.ID;
deletedItems.Add(dItem);
oadparamemp.ID = 0;
AddStatus(nRow, oemployee.EmployeeNo, "Arrear Modified Benifits/Deduction. Item Code :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Success,
EnumDataIntegrationType.IndividualAllowance);
}
else
{
AddStatus(nRow, oemployee.EmployeeNo, "Modified Benifits/Deduction. Item Code :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Success,
EnumDataIntegrationType.IndividualAllowance);
}
oadparamemp.MonthlyAmount = mAmount;
oadparamemp.FormDate = fromDate;
oadparamemp.ModifiedBy = this._userID;
oadparamemp.ModifiedDate = updatedTime;
oadparamemp.TillDate = comdata.ToDate.ToString() == "" ? null :
Convert.ToDateTime(comdata.ToDate);
oadparamemployees.Add(oadparamemp);
continue;
}
if (oemployee.GradeID == null)
{
AddStatus(nRow, oemployee.EmployeeNo, "Grade Id not found :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
List<ADParameter> oparamters = oadparameters.FindAll(x => x.AllowDeductID ==
oadparamemp.AllowDeductID);
ADParameter oparamter = new ADParameterService().GetApplicableParameter(oemployee,
(int)oemployee.GradeID, oadparameters, oadparamemp.AllowDeductID);
if (oparamter == null)
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee benifit/deduction parameter not found :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
oadparamemp.ADParameterID = oparamter.ID;
oadparamemp.Periodicity = oparamter.Periodicity;
if (oadparamemp.Periodicity == EnumPeriodicity.OneOff)
{
oadparamemp.FormDate = GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
oadparamemp.TillDate = ptype.NextPayProcessDate;
}
else if (oadparamemp.Periodicity == EnumPeriodicity.Monthly
&& oparamter.EntitleType == EnumEntitleType.Individual)
{
if (comdata.ToDate.ToString() != "" && Convert.ToDateTime(comdata.ToDate) <
Convert.ToDateTime(comdata.FromDate))
{
AddStatus(nRow, oemployee.EmployeeNo, "Till date can not be less than From date :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
oadparamemp.FormDate = comdata.FromDate.ToString() != "" ? Convert.ToDateTime(comdata.FromDate) :
GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
if (comdata.ToDate != "")
oadparamemp.TillDate = Convert.ToDateTime(comdata.ToDate);
}
else
{
AddStatus(nRow, oemployee.EmployeeNo, "Employee applicable parameter is defined greade wise :"
+ comdata.BenifitCode + " :" + comdata.ItemName, EnumSAPProcessStatus.Error,
EnumDataIntegrationType.IndividualAllowance);
continue;
}
if (oparamter.MaxAmount != 0 && oparamter.MaxAmount < oadparamemp.MonthlyAmount)
oadparamemp.MonthlyAmount = oparamter.MaxAmount;
if (oparamter.MinAmount != 0 && oparamter.MinAmount > oadparamemp.MonthlyAmount)
oadparamemp.MonthlyAmount = oparamter.MinAmount;
oadparamemp.ADEmpType = EnumADEmpType.AppliedToIndividual;
oadparamemp.Arreartype = EnumArrearType.NotPresent;
oadparamemp.ValueType = EnumValueType.Amount;
oadparamemployees.Add(oadparamemp);
}
}
}
else
{
AddStatus(nRow, oemployee.EmployeeNo, "(" + dr.EmployeeNo + ")" + "Employee not found for in the existing data"
, EnumSAPProcessStatus.Error, EnumDataIntegrationType.IndividualAllowance);
}
}
if (_oSuccessOrErrorList.Any(x=>x.Status == EnumSAPProcessStatus.Error)==false)
{
foreach (AllowanceDeduction al in allows)
{
//bool alexist = oadparamemployees.Any(x => x.AllowDeductID == al.ID);
//if (alexist == true)
//{
var existempal = adempsall.FindAll(x => x.AllowDeductID == al.ID);
foreach (ADParameterEmployee item in existempal)
{
if (item.ModifiedDate != updatedTime)
{
var emp = oemployees.FirstOrDefault(x => x.ID == item.EmployeeID);
deletedItems.Add(item);
AddStatus(nRow, emp.EmployeeNo, "deleted benifit/deduction :"
+ al.Code + " :" + al.Name, EnumSAPProcessStatus.Success,
EnumDataIntegrationType.IndividualAllowance);
}
}
// }
}
if(_oSuccessOrErrorList.Any(x => x.Status == EnumSAPProcessStatus.Success) == false)
{
AddStatus(0, "", "System didn't find any difference, so nothing to update/integrate:",
EnumSAPProcessStatus.Success, EnumDataIntegrationType.IndividualAllowance);
}
new ADParameterEmployeeService().IntegrationSave(oadparamemployees,
ptype.LastPayProcessDate, deletedItems);
}
}
catch (Exception ex)
{
//if (_errorOrSuccessList.Count > 0)
//{
// var errorMessages = _errorOrSuccessList.Select(item =>
// $"sl: {item.SL}, row: {item.RowNo}, employeeNo: {item.EmployeeNo}, message: {item.Message}").ToList();
// string errorString = string.Join("; ", errorMessages);
// throw new ServiceException("ErrorList: " + errorString);
//}
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
}
}
#endregion
}
}