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