EchoTex_Payroll/HRM.BO/Common/DataUploadValidation.cs

180 lines
6.0 KiB
C#
Raw Permalink Normal View History

2024-10-14 10:01:49 +06:00
using Ease.Core.Model;
using System;
using System.Collections.Generic;
using System.Data;
namespace HRM.BO
{
public class DataUploadValidation
{
#region Properties
public DataUploadValidation()
{
_errorOrSuccList = new List<UploadErrorOrSuccess>();
}
#region Error List For New Regular Data Upload
private List<UploadErrorOrSuccess> _errorOrSuccList;
public List<UploadErrorOrSuccess> ErrorOrSuccessList
{
get { return _errorOrSuccList; }
set { _errorOrSuccList = value; }
}
#endregion
#endregion
#region Functions
#region Validate Input
public void ValidateInput(DataUploadColumnDefinition columnDefinitions, DataTable dTable)
{
//this.uploadStatus = uploadStatus;
int index = -1;
// ExcelColumnNameValidation(columnDefinitions, dTable);
if (columnDefinitions.ColumnName.Count != dTable.Columns.Count)
throw new Exception("No of excel column is not like the excel column definition");
else
{
foreach (DataRow row in dTable.Rows)
{
index++;
//uploadStatus.Text = string.Format("Validating Fields... {0}/{1}", index, dTable.Rows.Count);
//uploadStatus.Refresh();
object[] obj = row.ItemArray;
for (int i = 0; i < obj.Length; i++)
{
if (columnDefinitions.IsAllowNull(dTable.Columns[i].ColumnName) == false)
{
if (!ExcelNullValueValidation(obj[i]))
{
this.GenerateErrorList(dTable.Columns[i].ColumnName, index,
" Value can't be empty/blank.");
continue;
}
}
if (ExcelNullValueValidation(obj[i]) == true)
{
if (!ExcelDataTypeValidation(dTable.Columns[i].ColumnName, obj[i].ToString(),
columnDefinitions))
this.GenerateErrorList(dTable.Columns[i].ColumnName, index,
"'" + obj[i].ToString() + "' is not valid " +
columnDefinitions.GetColumnDataType(dTable.Columns[i].ColumnName));
}
}
}
}
}
#endregion
#region Generate Error List
private void GenerateErrorList(string columnName, int counter, string errMsg)
{
UploadErrorOrSuccess oItem = new UploadErrorOrSuccess();
oItem.RowNo = counter + 1;
oItem.ColumName = columnName;
oItem.Message = "Row:" + oItem.RowNo.ToString() + " Column:" + columnName + " " + errMsg;
_errorOrSuccList.Add(oItem);
}
#endregion
#region Excel Column Name Validation
public void ColumnNameValidation(DataUploadColumnDefinition columnDefinitions, DataTable uploadData)
{
bool isExist = false;
foreach (string item in columnDefinitions.ColumnName)
{
isExist = false;
foreach (DataColumn col in uploadData.Columns)
{
if (col.ColumnName.ToUpper().Trim() == item.ToUpper().Trim())
{
col.ColumnName = item;
isExist = true;
break;
}
}
if (isExist == false)
GenerateErrorList(item, 1, " column not found in the excel data");
}
}
#endregion
#region Excel Null Value Validation
private bool ExcelNullValueValidation(object columnValue)
{
if (columnValue == null || columnValue.ToString() == string.Empty) return false;
else return true;
}
#endregion
#region Excel Column Data Type Validation
private bool ExcelDataTypeValidation(string columnName, string columnValue,
DataUploadColumnDefinition columnDefinitions)
{
int index = columnDefinitions.getColumnIndex(columnName);
bool IsValid = true;
switch ((EnumColumnDataType)Enum.Parse(typeof(EnumColumnDataType), columnDefinitions.DataType[index]))
{
case EnumColumnDataType.Int:
{
int number = 0;
if (!int.TryParse(columnValue, out number))
IsValid = false;
break;
}
case EnumColumnDataType.String:
{
//need to Discuss With Boss
//if (columnValue == null || Convert.ToString(columnValue) == string.Empty)
// IsValid = false;
break;
}
case EnumColumnDataType.Double:
{
double number = 0.0;
if (!double.TryParse(columnValue, out number))
IsValid = false;
break;
}
case EnumColumnDataType.Date:
{
DateTime dt = new DateTime();
if (!DateTime.TryParse(columnValue, out dt))
IsValid = false;
break;
}
case EnumColumnDataType.Boolean:
{
bool value = false;
if (!bool.TryParse(columnValue, out value))
IsValid = false;
break;
}
}
return IsValid;
}
#endregion
#endregion
}
}