public void LoadExcelDataToJsonFile()
        {
            if (!File.Exists(spreadSheetDocumentPath))
            {
                throw new FileNotFoundException("spread sheet file cannot be found.");
            }
            EmployeeJsonSerializer.ClearJsonFilesContent();

            var oledbParser = new OleDbParser(spreadSheetDocumentPath);
            var emps        = oledbParser.GetSheetData("Emps_Info");
            var slips       = oledbParser.GetSheetData("Slips");
            var advances    = oledbParser.GetSheetData("CashAdvances");
            var transfers   = oledbParser.GetSheetData("Transfers");
            var misc        = oledbParser.GetSheetData("Miscellaneous");

            LoadObjectToJson <EmployeeInfo>(emps);
            OnLoadPercentageChanged?.Invoke(30);
            LoadObjectToJson <Slip>(slips);
            OnLoadPercentageChanged?.Invoke(40);
            LoadObjectToJson <EmpCashAdvances>(advances);
            OnLoadPercentageChanged?.Invoke(50);
            LoadObjectToJson <EmpTransfers>(transfers);
            OnLoadPercentageChanged?.Invoke(70);
            LoadObjectToJson <EmpMiscellaneous>(misc);
            OnLoadPercentageChanged?.Invoke(100);
            OnLoadComplete?.Invoke();
        }
        private void LoadObjectToJson <T>(DataTable dataTable)
        {
            if (dataTable == null)
            {
                throw new ArgumentNullException("dataTable", "dataTable should not be null");
            }

            if (typeof(T) == typeof(EmployeeInfo))
            {
                List <EmployeeInfo> objList = dataTable.AsEnumerable().Select(dr => MapRowData.MapRowToEmployee(dr)).ToList();
                EmployeeJsonSerializer.SerializeListObjectsToFile(objList);
            }
            if (typeof(T) == typeof(Slip))
            {
                List <Slip> objList = dataTable.AsEnumerable().Select(dr => MapRowData.MapRowToSlipObject(dr)).ToList();
                EmployeeJsonSerializer.SerializeListObjectsToFile(objList);
            }
            if (typeof(T) == typeof(EmpCashAdvances))
            {
                List <EmpCashAdvances> objList = dataTable.AsEnumerable().Select(dr => MapRowData.MapRowToCashAdvance(dr)).ToList();
                EmployeeJsonSerializer.SerializeListObjectsToFile(objList);
            }
            if (typeof(T) == typeof(EmpMiscellaneous))
            {
                List <EmpMiscellaneous> objList = dataTable.AsEnumerable().Select(dr => MapRowData.MapRowToMisc(dr)).ToList();
                EmployeeJsonSerializer.SerializeListObjectsToFile(objList);
            }
            if (typeof(T) == typeof(EmpTransfers))
            {
                List <EmpTransfers> objList = dataTable.AsEnumerable().Select(dr => MapRowData.MapRowToTransfers(dr)).ToList();
                EmployeeJsonSerializer.SerializeListObjectsToFile(objList);
            }

            //foreach (var row in dataTable.Rows)
            //{
            //    ModelObjectBase model;
            //    if (typeof(T) == typeof(EmployeeInfo))
            //    {
            //        model = MapRowData.MapRowToEmployee((DataRow)row);
            //        EmployeeJsonSerializer.SerializeObjectToFile(model);
            //    }
            //    if (typeof(T) == typeof(Slip))
            //    {
            //        model = MapRowData.MapRowToSlipObject((DataRow)row);
            //        EmployeeJsonSerializer.SerializeObjectToFile(model);
            //    }
            //    if (typeof(T) == typeof(EmpCashAdvances))
            //    {
            //        model = MapRowData.MapRowToCashAdvance((DataRow)row);
            //        EmployeeJsonSerializer.SerializeObjectToFile(model);
            //    }
            //    if (typeof(T) == typeof(EmpMiscellaneous))
            //    {
            //        model = MapRowData.MapRowToMisc((DataRow)row);
            //        EmployeeJsonSerializer.SerializeObjectToFile(model);
            //    }
            //    if (typeof(T) == typeof(EmpTransfers))
            //    {
            //        model = MapRowData.MapRowToTransfers((DataRow)row);
            //        EmployeeJsonSerializer.SerializeObjectToFile(model);
            //    }
            //}
        }