Example #1
0
        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("");
        }
Example #2
0
 internal ImportFileEmployeeData(int recordNumber, ImportEmployeeData data)
 {
     RecordNumber = recordNumber;
     Data = data;
 }