private void PollDataForDocumentProcessing()
        {
            WriteLog("Pool data from sql server for document processing");
            var databaseHelper = new DatabaseHelper();
            var appKey = databaseHelper.GetApplicationKey();
            try
            {
                if (appKey == null) return;

                WriteLog("Processing Key : " + appKey.Key);
                appKey.StatusId = (int)EnumStatus.InProgress;
                databaseHelper.UpdateApplicationKey(appKey);

                var sourceDirectory = ApplicationConfiguration.FileRepoPath + appKey.Key + "\\" + appKey.DocumentName;
                var targetDirectory = ApplicationConfiguration.FileRepoPath + appKey.Key + "\\" + appKey.DocumentName;
                if (!Directory.Exists(ApplicationConfiguration.FileRepoPath + appKey.Key)) 
                    Directory.CreateDirectory(ApplicationConfiguration.FileRepoPath + appKey.Key);
                if (!File.Exists(ApplicationConfiguration.FileRepoPath + appKey.Key + "\\" + appKey.DocumentName))
                    File.Move(ApplicationConfiguration.FileRepoPath + appKey.DocumentName, ApplicationConfiguration.FileRepoPath + appKey.Key + "\\" + appKey.DocumentName);

                ProcessingStrategy.Process(new FileInfo(sourceDirectory), new FileInfo(targetDirectory), true, appKey.CurrentPage, appKey.OriginalDocumentName, appKey.QualitySet);

                WriteLog("Processing completed for Key : " + appKey.Key);
            }
            catch (Exception exception)
            {
                if (appKey != null)
                {
                    appKey.StatusId = (int)EnumStatus.Failed;
                    appKey.ErrorStack = exception.StackTrace;
                    databaseHelper.UpdateApplicationKey(appKey);
                    WriteLog("Error has occured during file processing, appkey=" + appKey.Key + " error description : " + exception.Message);
                }
            }
        }
        /// <summary>
        /// Converts source file .doc,.xls,.ppt to .pdf adobe reader files and also adds watermark on top of PDF file
        /// </summary>
        /// <param name="sourceFile">Specify your source file with extension .doc(x), .xls(x), .ppt(x)</param>
        /// <param name="targetPath"></param>
        /// <param name="isWaterMarked"></param>
        /// <param name="currentPage"></param>
        /// <param name="originalDocumentName"></param>
        /// <returns></returns>
        public static int Process(FileInfo sourceFile, FileInfo targetPath, bool isWaterMarked, int currentPage, string originalDocumentName,int qualitySet)
        {
            LoadLicense(sourceFile.Extension.ToUpper());

            var pageCount = Strategies[sourceFile.Extension.ToUpper()].Process(sourceFile.FullName, targetPath.FullName, currentPage, originalDocumentName, qualitySet);

            var targetFileName = targetPath.ToString().PathSplit();
            var targetFileExt = targetFileName[targetFileName.Length - 1].Split('.');
            var imageFile = targetPath.ToString().Replace("." + targetFileExt[targetFileExt.Length - 1], string.Empty) + currentPage + ConfigurationManager.AppSettings["ImageExtension"];
            if (isWaterMarked)
                ApplytWaterMark(imageFile);

            var databaseHelper = new DatabaseHelper();
            var appKey = databaseHelper.GetApplicationKey(Path.GetFileNameWithoutExtension(sourceFile.Name));
            appKey.StatusId = (int)EnumStatus.Completed;
            appKey.PageCount = pageCount;
            databaseHelper.UpdateApplicationKey(appKey);

            return pageCount;
        }