/// <summary>
        /// Create file number given file properties
        /// </summary>
        /// <param name="fileNameProp">File date properties</param>
        private void SetFileNumber(ref FileNameProp fileNameProp)
        {
            String _fileNumber = "";
            try
            {
                Log.Log(LogType.FILE, LogLevel.DEBUG, " SetFileNumber() -->> is STARTED");

                _fileNumber = fileNameProp.FNYearPart +
                                        fileNameProp.FNMonthPart +
                                        fileNameProp.FNDayPart +
                                        fileNameProp.FileNumber;

                fileNameProp.FileNumber = Convert.ToInt64(_fileNumber);
                Log.Log(LogType.FILE, LogLevel.DEBUG, " SetFileNumber() -->> is successfully FINISHED");
            }
            catch (Exception ex)
            {
                Log.Log(LogType.FILE, LogLevel.ERROR, " SetFileNumber() -->> An error occurred" + ex.ToString());
            }
        }
        /// <summary>
        /// Create file number given file properties
        /// </summary>
        /// <param name="fileNameProp">File date properties</param>
        private void SetFileNumber(ref FileNameProp fileNameProp)
        {
            try
            {
                Log.Log(LogType.FILE, LogLevel.DEBUG, " SetFileNumber() -->> is STARTED");
                if (_dayDictionaryEn.ContainsKey(fileNameProp.FNDayPart.ToLower()))
                {
                    fileNameProp.FNDayPart = _dayDictionaryEn[fileNameProp.FNDayPart.ToLower()].ToString();
                }
                else if (_dayDictionaryTr.ContainsKey(fileNameProp.FNDayPart.ToLower()))
                {
                    fileNameProp.FNDayPart = _dayDictionaryTr[fileNameProp.FNDayPart.ToLower()].ToString();
                }
                if (_mounthDictionaryEn.ContainsKey(fileNameProp.FNMonthPart.ToLower()))
                {
                    fileNameProp.FNMonthPart = _mounthDictionaryEn[fileNameProp.FNMonthPart.ToLower()].ToString();
                }
                else if (_mounthDictionaryTr.ContainsKey(fileNameProp.FNMonthPart.ToLower()))
                {
                    fileNameProp.FNMonthPart = _mounthDictionaryTr[fileNameProp.FNMonthPart.ToLower()].ToString();
                }

                String _fileNumber = fileNameProp.FNYearPart +
                                      fileNameProp.FNMonthPart +
                                      fileNameProp.FNDayPart +
                                      fileNameProp.FileNumber;

                fileNameProp.FileNumber = Convert.ToInt64(_fileNumber);
                Log.Log(LogType.FILE, LogLevel.DEBUG, " SetFileNumber() -->> is successfully FINISHED");
            }
            catch (Exception ex)
            {
                Log.Log(LogType.FILE, LogLevel.ERROR, " SetFileNumber() -->> An error occurred" + ex.ToString());
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileNameList"></param>
        /// <returns></returns>
        private List<String> SortFileNames(List<String> fileNameList)
        {
            try
            {
                Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> is STARTED ");
                List<String> _fileNameList = new List<String>();
                FileNameProp fileNameProp = new FileNameProp();
                FileNameProp[] fileNamePropArray;
                ArrayList SortedList = new ArrayList();

                //CreateDateDictionarys();

                if (_fileNameFilters != null)
                {
                    foreach (String fileName in fileNameList)
                    {
                        foreach (String fileNamefilter in _fileNameFilters)
                        {
                            fileName.Contains(fileNamefilter);
                            _fileNameList.Add(fileName);
                            break;
                        }
                    }
                }
                else
                {
                    _fileNameList = fileNameList;
                }
                fileNamePropArray = new FileNameProp[_fileNameList.Count];

                int k = 0;
                foreach (String line in _fileNameList)
                {
                    fileNameProp = new FileNameProp();
                    fileNameProp.FileName = line;

                    String[] subLine0 = line.Split(new Char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
                    String[] subLine0_3 = subLine0[3].Split(new Char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
                    fileNameProp.FNGenericPart = subLine0[0] + "/" + subLine0[2] + "/" + subLine0_3[1];
                    fileNameProp.FNNumberPart = subLine0[1] + "/" + subLine0_3[0];

                    SetFileNumber(ref fileNameProp);
                    fileNamePropArray[k] = fileNameProp;
                    k++;
                }

                if (fileNamePropArray[0].FileNumber == 0)
                {
                    Array.Sort(fileNamePropArray, new FileNamePropComparerByGenericPart());
                }
                else
                {
                    Array.Sort(fileNamePropArray);
                }

                _fileNameList.Clear();

                foreach (FileNameProp item in fileNamePropArray)
                {
                    _fileNameList.Add(item.FileName);
                    //Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> Sorting file name is " + item.FileName);
                }

                Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> is successfully FINISHED.");

                for (int i = 0; i < _fileNameList.Count; i++)
                {
                    SortedList.Add(_fileNameList[i]);
                }

                SortedList.Sort();

                _fileNameList.Clear();
                for (int i = 0; i < SortedList.Count; i++)
                {
                    _fileNameList.Add(SortedList[i].ToString());
                }

                for (int i = 0; i < _fileNameList.Count; i++)
                {
                    Log.Log(LogType.FILE, LogLevel.DEBUG,
                            " SortFileNames() -->> Sorting file name is " + _fileNameList[i]);
                }

                return _fileNameList;
            }
            catch (Exception ex)
            {
                Log.Log(LogType.FILE, LogLevel.ERROR, " SortFileNames() -->> An error occurred" + ex.ToString());
                return null;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileNameList"></param>
        /// <returns></returns>
        private List<String> SortFileNames(List<String> fileNameList)
        {
            Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> is STARTED ");
            try
            {

                List<String> _fileNameList = new List<String>();
                List<String> _fileNameListNew = new List<String>();
                FileNameProp fileNameProp = new FileNameProp();
                FileNameProp[] fileNamePropArray;
                long[] fileNameindexes = new long[fileNameList.Count];

                if (_fileNameFilters != null)
                {
                    foreach (String fileName in fileNameList)
                    {
                        foreach (String fileNamefilter in _fileNameFilters)
                        {
                            fileName.Contains(fileNamefilter);
                            _fileNameList.Add(fileName);
                            break;
                        }
                    }
                }
                else
                {
                    _fileNameList = fileNameList;
                }
                fileNamePropArray = new FileNameProp[_fileNameList.Count];

                int k = 0;
                foreach (String line in _fileNameList)
                {
                    fileNameProp = new FileNameProp();
                    fileNameProp.FileName = line;

                    String[] subLine0 = line.Split(new Char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
                    fileNameProp.FNGenericPart = subLine0[0];

                    int splitIndex = subLine0[0].IndexOf("20");//valid for about 90 years

                    fileNameProp.FNYearPart = subLine0[0].Substring(splitIndex, 4);
                    fileNameProp.FNMonthPart = subLine0[0].Substring(splitIndex + 4, 2);
                    fileNameProp.FNDayPart = subLine0[0].Substring(splitIndex + 6, 2);

                    fileNameProp.FNNumberPart = subLine0[1];

                    SetFileNumber(ref fileNameProp);
                    fileNamePropArray[k] = fileNameProp;
                    fileNameindexes[k] = fileNameProp.FileNumber;
                    k++;
                }

                if (fileNamePropArray[0].FileNumber == 0)
                {
                    Array.Sort(fileNamePropArray, new FileNamePropComparerByGenericPart());
                }
                else
                {
                    Array.Sort(fileNameindexes, fileNamePropArray);
                }

                _fileNameList.Clear();
                foreach (FileNameProp item in fileNamePropArray)
                {
                    string fileName = item.FileName;
                    if (string.IsNullOrEmpty(tempCustomVar1) || tempCustomVar1 == "MSGTRK")
                    {
                        if (item.FileName.StartsWith("MSGTRK") && !item.FileName.StartsWith("MSGTRKM"))
                        {
                            _fileNameList.Add(fileName);
                            _fileNameListNew.Add(fileName);
                            Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> Sorting file name is " + item.FileName);
                        }
                    }
                    else if (tempCustomVar1 == "MSGTRKM")
                    {
                        if (item.FileName.StartsWith("MSGTRKM"))
                        {
                            _fileNameList.Add(fileName);
                            _fileNameListNew.Add(fileName);
                            Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> Sorting file name is " + item.FileName);
                        }
                    }
                    //Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> Sorting file name is " + item.FileName);
                }

                Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> is successfully FINISHED.");
                for (int i = 0; i < _fileNameList.Count; i++)
                {
                    Log.Log(LogType.FILE, LogLevel.DEBUG, " SortFileNames() -->> FileNames : " + _fileNameList[i].ToString());
                }
                return _fileNameListNew;
            }
            catch (Exception ex)
            {
                Log.Log(LogType.FILE, LogLevel.ERROR, " SortFileNames() -->> An error occurred" + ex.ToString());
                return null;
            }
        }