protected override void readCSVFile(CachedCsvReader csv) { #if(UseHeaders) #else int persNumberIndex = _PersNumberIndex; int contractBeginIndex= _ContractBeginIndex; int contractEndIndex= _ContractEndIndex; int persIDIndex= _PersIDIndex; int lastNameIndex= _LastNameIndex; int firstNameIndex= _FirstNameIndex; int worldIDIndex= _WorldIDIndex; int hwgr_IDIndex = _HWGR_IDIndex; int storeIDIndex = _StoreIDIndex; int departmentIndex = _DepartmentIndex; int allInIndex = _AllInIndex; #endif if (csv.FieldCount < (allInIndex + 1)) { throw new Exception(GetLocalized("EmployeeImportFileOldVersion")); } //CultureInfo.GetCultureInfo("en-US").NumberFormat NumberFormatInfo numberFormatInfo = new NumberFormatInfo(); numberFormatInfo.CurrencyDecimalSeparator = "."; numberFormatInfo.CurrencyGroupSeparator = " "; numberFormatInfo.NumberDecimalSeparator = "."; numberFormatInfo.NumberGroupSeparator = " "; //numberFormatInfo.PositiveInfinitySymbol = "+"; //numberFormatInfo.NegativeInfinitySymbol = "-"; Dictionary<string, ImportFileEmployeeData> data = new Dictionary<string, ImportFileEmployeeData>(); while (csv.ReadNextRecord()) { csvDataNextRow(); string department = csv[departmentIndex]; string worldID = csv[worldIDIndex]; if (string.IsNullOrEmpty(worldID)) worldID = "-1"; string hwgr_ID = csv[hwgr_IDIndex]; if (string.IsNullOrEmpty(hwgr_ID)) hwgr_ID = "-1"; string storeID = csv[storeIDIndex]; string key = csv[persIDIndex];//storeID.ToString() + worldID.ToString() + hwgr_ID.ToString(); if (string.IsNullOrEmpty(storeID)) storeID = "-1"; string contractWorkingHours = csv[_ContractWorkingHoursIndex]; if (string.IsNullOrEmpty(contractWorkingHours)) contractWorkingHours = "0"; //else if (contractWorkingHours[0] == ',') contractWorkingHours = "0" + contractWorkingHours; string availableHolidays= csv[_AvailableHolidaysIndex]; if (string.IsNullOrEmpty(availableHolidays)) availableHolidays = "0"; //else if (availableHolidays[0] == ',') availableHolidays = "0" + availableHolidays; string balanceHours = csv[_BalanceHoursIndex]; if (string.IsNullOrEmpty(balanceHours)) balanceHours = "0"; //else if (balanceHours[0] == ',') balanceHours = "0" + balanceHours; string persNumber = csv[persNumberIndex]; if (string.IsNullOrEmpty(persNumber)) persNumber = "0"; if (!data.ContainsKey(key)) { ImportEmployeeData eData = new ImportEmployeeData(); eData.World_SystemID = int.Parse(worldID); eData.HWGR_SystemID = int.Parse(hwgr_ID); eData.Store_SystemID = int.Parse(storeID); eData.PersID = key; eData.FirstName = csv[firstNameIndex]; eData.LastName = csv[lastNameIndex]; eData.Department = department; string contractBegin = csv[contractBeginIndex]; if (string.IsNullOrEmpty(contractBegin)) contractBegin = DateTimeSql.SmallDatetimeMinStr; eData.ContractBegin = DateTime.ParseExact(contractBegin, "yyyyMMdd", null); string contractEnd = csv[contractEndIndex]; if (string.IsNullOrEmpty(contractEnd)) contractEnd = DateTimeSql.SmallDatetimeMaxStr; eData.ContractEnd = DateTime.ParseExact(contractEnd, "yyyyMMdd", null); try { eData.ContractWorkingHours = decimal.Parse(contractWorkingHours, numberFormatInfo); eData.AvailableHolidays = decimal.Parse(availableHolidays, numberFormatInfo); eData.BalanceHours = decimal.Parse(balanceHours, numberFormatInfo); eData.BalanceHours = eData.BalanceHours * 60;//minutes eData.PersNumber = int.Parse(persNumber); eData.AllIn = byte.Parse(csv[allInIndex]); } catch (FormatException ex) { message(string.Format(GetLocalized("NumberFormatError"),_CurrentRow,ex.Message)); continue; } if (eData.AllIn != 0) eData.AllIn = 1; if (eData.ContractEnd < eData.ContractBegin) { message(string.Format(GetLocalized("EmployeeContractDateError"), _CurrentRow, key, eData.ContractBegin, eData.ContractEnd)); continue; } else if (eData.ContractWorkingHours <= 0) { message(string.Format(GetLocalized("EmployeeContractTimeError"), _CurrentRow, key, eData.ContractWorkingHours)); continue; } data.Add(key, new ImportFileEmployeeData(_CurrentRow, eData)); } else message(string.Format(GetLocalized("EmployeeExists"), _CurrentRow, key)); } csvDataEndRead(); List<ImportEmployeeData> list = new List<ImportEmployeeData>(data.Count); foreach (ImportFileEmployeeData value in data.Values) list.Add(value.Data); ImportEmployeeResult importEmployeeResult = _EmployeeService.ImportEmployee(list); list = (List<ImportEmployeeData>)importEmployeeResult.DataError; if (list != null) { foreach (ImportEmployeeData value in list) { string key = value.PersID; switch (value.ImportError) { case EmployeeImportError.NotAssignToStore: message(string.Format(GetLocalized("EmployeeNotAssignToStore"), data[key].RecordNumber, key)); break; case EmployeeImportError.ContractBeginChange: message(string.Format(GetLocalized("EmployeeIEContractBeginChange"), data[key].RecordNumber, key, data[key].Data.ContractBegin)); break; case EmployeeImportError.ContractEndChangeAndLessImportDate: message(string.Format(GetLocalized("EmployeeIEContractEndChangeAndLessImportDate"), data[key].RecordNumber, key, data[key].Data.ContractEnd)); break; default: goto case EmployeeImportError.NotAssignToStore; } } } if (importEmployeeResult.DataChanged != null) _Result = importEmployeeResult.DataChanged; if (!importEmployeeResult.Success) throw new Exception(""); }
internal ImportFileEmployeeData(int recordNumber, ImportEmployeeData data) { RecordNumber = recordNumber; Data = data; }