예제 #1
0
        /// <summary>
        /// execute task
        /// </summary>
        public static void ExecuteTask(Tasks task)
        {
            try
            {
                AssistProcessor assist        = new AssistProcessor();
                Assist          serviceAssist = new Assist();

                string planState = serviceAssist.CheckSubscriptionPlanAvailability(task.UserId);
                if (planState != "OK")
                {
                    serviceAssist.AddErrorToDocuments(task.Id, planState);
                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                    return;
                }

                string url      = serviceAssist.GetSettingValueByName("ApiUrl");
                string json     = task.ProfileContent;
                string error    = "";
                string response = assist.MakeOcr(url, json, ref error);
                if (string.IsNullOrEmpty(response))
                {
                    LogHelper.AddLog(error);
                    serviceAssist.AddErrorToDocuments(task.Id, error);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    return;
                }

                OcrResponseModel model = new OcrResponseModel();
                serviceAssist.UpdateTaskReponseContent(task.Id, response);
                model = JsonConvert.DeserializeObject <OcrResponseModel>(response);

                if (model.Status.Equals("Submitted"))
                {
                    serviceAssist.UpdateTaskState(task.Id, 2);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 2);
                }
                else
                {
                    string errorText = "";
                    foreach (var ocrError in model.Errors)
                    {
                        errorText += ocrError.ErrorName + ": " + ocrError.ErrorMessage;
                    }
                    serviceAssist.AddErrorToDocuments(task.Id, errorText);
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                }
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }
예제 #2
0
        /// <summary>
        /// execute task
        /// </summary>
        public static void ExecuteTask(Tasks task)
        {
            try
            {
                AssistProcessor assist        = new AssistProcessor();
                Assist          serviceAssist = new Assist();

                FileInfo fileInfo = null;

                Documents document = serviceAssist.GetToDocumentByTaskId(task.Id);
                var       settings = SettingsTasksUnionHelper.GetSettingsByTaskId(task.Id);

                string mainPath     = serviceAssist.GetSettingValueByName("MainPath");
                string resultFolder = serviceAssist.GetSettingValueByName("ResultFolder");
                string jobPattern   = serviceAssist.GetSettingValueByName("ApiUrlJobState");
                string uploadFolder = serviceAssist.GetSettingValueByName("UploadFolder");

                string downloadPath = Path.Combine(mainPath, resultFolder);
                //string uploadPath = Path.Combine(mainPath, uploadFolder);

                string planState = serviceAssist.CheckSubscriptionPlanAvailability(task.UserId);
                if (planState != "OK")
                {
                    serviceAssist.AddErrorToDocuments(task.Id, planState);
                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                    return;
                }

                string url      = serviceAssist.GetSettingValueByName("ApiUrl");
                string json     = task.ProfileContent;
                string error    = "";
                string response = assist.MakeOcr(url, json, ref error);
                if (string.IsNullOrEmpty(response))
                {
                    /// Error! Put to exc. ftp
                    LogHelper.AddLog(error);
                    serviceAssist.AddErrorToDocuments(task.Id, error);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                    serviceAssist.UpdateTaskState(task.Id, 4);

                    if (settings != null)
                    {
                        string filePath = Path.Combine(mainPath, document.Path);

                        fileInfo = new FileInfo(filePath);
                        var exceptionSettings =
                            FlexiCapture.Cloud.FTPService
                            .Helpers.TasksHelpers.FTPHelper
                            .GetFtpExceptionSettings(settings.Id);

                        var ftpConvSetting = FlexiCapture.Cloud.
                                             ServiceAssist.DBHelpers.FtpConversionSettingsHelper
                                             .GetSettingsByUserId(settings.UserId);

                        string pathToPut = ftpConvSetting.MirrorInput ? settings.Path : exceptionSettings.Path;

                        FTPHelper.PutFileOnFtpServer(fileInfo, document.OriginalFileName, exceptionSettings, pathToPut);
                    }

                    return;
                }

                OcrResponseModel model = new OcrResponseModel();
                serviceAssist.UpdateTaskReponseContent(task.Id, response);
                model = JsonConvert.DeserializeObject <OcrResponseModel>(response);

                if (model.Status.Equals("Submitted"))
                {
                    serviceAssist.UpdateTaskState(task.Id, 2);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 2);
                }
                else
                {
                    // Error!
                    string errorText = "";
                    foreach (var ocrError in model.Errors)
                    {
                        errorText += ocrError.ErrorName + ": " + ocrError.ErrorMessage;
                    }
                    serviceAssist.AddErrorToDocuments(task.Id, errorText);
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);

                    if (settings != null)
                    {
                        string filePath = Path.Combine(mainPath, document.Path);

                        fileInfo = new FileInfo(filePath);
                        var exceptionSettings =
                            FlexiCapture.Cloud.FTPService
                            .Helpers.TasksHelpers.FTPHelper
                            .GetFtpExceptionSettings(settings.Id);

                        var ftpConvSetting = FlexiCapture.Cloud.
                                             ServiceAssist.DBHelpers.FtpConversionSettingsHelper
                                             .GetSettingsByUserId(settings.UserId);

                        string pathToPut = ftpConvSetting.MirrorInput ? settings.Path : exceptionSettings.Path;

                        FTPHelper.PutFileOnFtpServer(fileInfo, document.OriginalFileName, exceptionSettings, pathToPut);
                    }
                }
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }
예제 #3
0
        /// <summary>
        /// check task
        /// </summary>
        public static void CheckStateTask(Tasks task)
        {
            try
            {
                AssistProcessor  assist        = new AssistProcessor();
                Assist           serviceAssist = new Assist();
                OcrResponseModel model         = new OcrResponseModel();
                model = JsonConvert.DeserializeObject <OcrResponseModel>(task.ResponseContent);
                FileInfo fileInfo = null;

                Documents document = serviceAssist.GetToDocumentByTaskId(task.Id);
                var       settings = SettingsTasksUnionHelper.GetSettingsByTaskId(task.Id);

                string mainPath     = serviceAssist.GetSettingValueByName("MainPath");
                string resultFolder = serviceAssist.GetSettingValueByName("ResultFolder");
                string jobPattern   = serviceAssist.GetSettingValueByName("ApiUrlJobState");
                string uploadFolder = serviceAssist.GetSettingValueByName("UploadFolder");

                string downloadPath = Path.Combine(mainPath, resultFolder);
                string uploadPath   = Path.Combine(mainPath, uploadFolder);

                string jobStatus = assist.GetJobStatus(model.JobUrl);

                model = JsonConvert.DeserializeObject <OcrResponseModel>(jobStatus);

                if (model.Status.Equals("Finished"))
                {
                    string planState = serviceAssist.CheckSubscriptionPlan(task.UserId, model.Statistics.PagesArea);
                    if (planState != "OK")
                    {
                        // Error!
                        serviceAssist.AddErrorToDocuments(task.Id, planState);
                        //update task
                        serviceAssist.UpdateTaskState(task.Id, 4);
                        //update documents
                        serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);

                        if (settings != null)
                        {
                            string filePath = Path.Combine(uploadPath, document.Path);

                            fileInfo = new FileInfo(filePath);
                            var exceptionSettings =
                                FlexiCapture.Cloud.FTPService
                                .Helpers.TasksHelpers.FTPHelper
                                .GetFtpExceptionSettings(settings.Id);

                            var ftpConvSetting = FlexiCapture.Cloud.
                                                 ServiceAssist.DBHelpers.FtpConversionSettingsHelper
                                                 .GetSettingsByUserId(settings.UserId);

                            string pathToPut = ftpConvSetting.MirrorInput ? settings.Path : exceptionSettings.Path;

                            FTPHelper.PutFileOnFtpServer(fileInfo, document.OriginalFileName, exceptionSettings, pathToPut);
                        }



                        return;
                    }



                    foreach (var file in model.Download)
                    {
                        string jobId = model.JobUrl.Replace(jobPattern, string.Empty);

                        if (document == null)
                        {
                            serviceAssist.UpdateTaskState(task.Id, 4);
                            return;
                        }
                        string originalName = Path.GetFileNameWithoutExtension(document.OriginalFileName);
                        string fileExt      = serviceAssist.GetToFileExtension(file.OutputFormat);

                        Guid   g       = Guid.NewGuid();
                        string newName = g.ToString() + fileExt;

                        originalName = originalName + fileExt;
                        string filePath = Path.Combine(downloadPath, newName);

                        fileInfo = new FileInfo(filePath);



                        string error = "";
                        assist.DownloadFile(file.Uri, filePath, ref error);
                        if (!File.Exists(filePath))
                        {
                            LogHelper.AddLog(error);
                            serviceAssist.AddErrorToDocuments(task.Id, error);
                            //update task
                            serviceAssist.UpdateTaskState(task.Id, 4);
                            //update documents
                            serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                            return;
                        }
                        //add document
                        serviceAssist.AddResultDocument(task.Id, g, originalName, newName, filePath);

                        if (settings != null)
                        {
                            var outputSettings =
                                FlexiCapture.Cloud.FTPService
                                .Helpers.TasksHelpers.FTPHelper
                                .GetFtpOutputSettings(settings.Id);

                            var ftpConvSetting = FlexiCapture.Cloud.
                                                 ServiceAssist.DBHelpers.FtpConversionSettingsHelper
                                                 .GetSettingsByUserId(settings.UserId);

                            string pathToPut = ftpConvSetting.MirrorInput ? settings.Path : outputSettings.Path;

                            FTPHelper.PutFileOnFtpServer(fileInfo, originalName, outputSettings, pathToPut);
                        }
                    }

                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 3);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 3);
                    // add statistics
                    serviceAssist.AddStatisctics(task.Id, model.Statistics);
                }
                else if (model.Status.Equals("Processing"))
                {
                }
                else if (!model.Status.Equals("Submitted"))
                {
                    // Error!

                    LogHelper.AddLog("Error in JobStatus: " + jobStatus);
                    string errorText = "";
                    foreach (var ocrError in model.Errors)
                    {
                        errorText += ocrError.ErrorName + ": " + ocrError.ErrorMessage;
                    }
                    serviceAssist.AddErrorToDocuments(task.Id, errorText);
                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);

                    if (settings != null)
                    {
                        string filePath = Path.Combine(uploadPath, document.Path);

                        fileInfo = new FileInfo(filePath);
                        var exceptionSettings =
                            FlexiCapture.Cloud.FTPService
                            .Helpers.TasksHelpers.FTPHelper
                            .GetFtpExceptionSettings(settings.Id);

                        var ftpConvSetting = FlexiCapture.Cloud.
                                             ServiceAssist.DBHelpers.FtpConversionSettingsHelper
                                             .GetSettingsByUserId(settings.UserId);

                        string pathToPut = ftpConvSetting.MirrorInput ? settings.Path : exceptionSettings.Path;

                        FTPHelper.PutFileOnFtpServer(fileInfo, document.OriginalFileName, exceptionSettings, pathToPut);
                    }
                }
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }
예제 #4
0
        /// <summary>
        /// make processing
        /// </summary>
        public static void MakeProcessing()
        {
            try
            {
                int serviceId = 4;// email attachment service id
                //getting available file extentions
                Assist assist        = new Assist();
                Assist serviceAssist = new Assist();

                string serverPath   = serviceAssist.GetSettingValueByName("MainPath");
                string uploadFolder = serviceAssist.GetSettingValueByName("UploadFolder");
                string uploadUrl    = Path.Combine(serverPath, uploadFolder);

                List <string> extentions = assist.GetToAvailableFileExtensions();
                // getting IMAP setttings
                string path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "data/settings.xml");

                if (File.Exists(path))
                {
                    ServiceSettingsModel settingsModel;

                    XmlSerializer        formatter = new XmlSerializer(typeof(ServiceSettingsModel));
                    ServiceSettingsModel model     = new ServiceSettingsModel();
                    using (FileStream fs = new FileStream(path, FileMode.Open))
                    {
                        settingsModel = formatter.Deserialize(fs) as ServiceSettingsModel;
                    }

                    //check tasks
                    List <Tasks> notExecutedTasks = assist.GetToNotExecutedTasks(serviceId);
                    //upload files
                    foreach (var notExecutedTask in notExecutedTasks)
                    {
                        OcrRequestModel requestModel = JsonConvert.DeserializeObject <OcrRequestModel>(notExecutedTask.ProfileContent);
                        if (requestModel.InputFiles != null && requestModel.InputFiles.Count > 0)
                        {
                            string extension = Path.GetExtension(requestModel.InputFiles[0].Name);
                            if (extension != null && extension != ".zip" && extension != ".rar" && extension != ".7z")
                            {
                                TaskHelper.ExecuteTask(notExecutedTask);
                            }
                        }
                    }

                    //check statuses
                    List <Tasks> processedTasks = assist.GetToProcessedTasks(serviceId);
                    //download files
                    foreach (var processedTask in processedTasks)
                    {
                        TaskHelper.CheckStateTask(processedTask);
                    }

                    EmailHelper.CreateTasksFromEmails(settingsModel, assist, extentions, uploadUrl, uploadFolder, serviceId);
                }
                else
                {
                    throw new FileNotFoundException("File not found in " + path);
                }
                //update states
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }
        /// <summary>
        /// make processing
        /// </summary>
        public static void MakeProcessing()
        {
            try
            {
                int serviceId = 3;
                ServiceAssist.Assist assist     = new Assist();
                List <string>        extensions = assist.GetToAvailableFileExtensions();

                List <FtpWebResponse> responses = new List <FtpWebResponse>();

                string pathToDownload = assist.GetSettingValueByName("MainPath");
                string resultFolder   = assist.GetSettingValueByName("ResultFolder");

                FlexiCapture.Cloud.FTPService.Helpers.TasksHelpers.FTPHelper.GetFtpInputSettings().ForEach(x =>
                {
                    if (x.Enabled)
                    {
                        var response = FlexiCapture.Cloud.FTPService.
                                       Helpers.TasksHelpers.FTPHelper.TryLoginToFtp(x.Host, x.UserName,
                                                                                    PasswordHelper.Crypt.DecryptString(x.Password),
                                                                                    x.Path, x.UserId, x.ServiceType);

                        var ftpConversionSettings =
                            FlexiCapture.Cloud.FTPService.Helpers.TasksHelpers.
                            FTPHelper.GetFtpConersionSettings(x.UserId);


                        List <Tuple <string, string> > addedFilesInResponse;

                        if (response != null)
                        {
                            assist.UserProfile = assist.GetUserProfile(x.UserId, 3);

                            addedFilesInResponse = FlexiCapture.Cloud.FTPService.Helpers.
                                                   TasksHelpers.FTPHelper.ExtractFiles(response, x);

                            addedFilesInResponse.ForEach(af =>
                            {
                                if (CheckExtensions(extensions, af.Item2))
                                {
                                    var newNameGuid = Guid.NewGuid();
                                    var uploadName  = newNameGuid + af.Item2;
                                    var localName   = Path.Combine(Path.Combine("data", "uploads"), uploadName);

                                    string originalFileName = af.Item1;
                                    var filePathOld         = Path.Combine(assist.GetSettingValueByName("MainPath"), "data",
                                                                           "uploads", af.Item1);
                                    var filePathNew = Path.Combine(assist.GetSettingValueByName("MainPath"), "data",
                                                                   "uploads", newNameGuid.ToString() + af.Item2);



                                    //add task to db
                                    var taskId = assist.AddTask(assist.UserProfile.UserId, serviceId);

                                    if (FlexiCapture.Cloud.ServiceAssist.DBHelpers.FTPSettingsHelper.CheckOutputExceptionSettings(x.Id))
                                    {
                                        SettingsTasksUnionHelper.AddNewItem(taskId, x.Id);
                                    }

                                    var md5 = assist.GetMD5HashFromFile(filePathOld);
                                    //add document
                                    var fileInfo = new FileInfo(filePathOld);


                                    var documentId = assist.AddDocument(taskId, fileInfo, originalFileName, newNameGuid,
                                                                        uploadName, localName, md5, 1, ftpConversionSettings.AddProcessed);

                                    //if (x.ServiceType == 2)
                                    //    assist.ConnectTaskAndFtpSetting(taskId, x.Id);

                                    // var fileUploadStatus =

                                    System.IO.File.Move(filePathOld, filePathNew);
                                    if (File.Exists(filePathOld))
                                    {
                                        File.Delete(filePathOld);
                                    }

                                    assist.Documents = assist.GetDocumentsByTaskId(taskId);

                                    string content = assist.ConvertProfileToRequestModel(assist.Documents,
                                                                                         assist.UserProfile);
                                    assist.UpdateTaskProfile(taskId, content);

                                    if (x.DeleteFile)
                                    {
                                        if (File.Exists(filePathNew))
                                        {
                                            File.Delete(filePathNew);
                                        }
                                    }
                                }
                            });
                        }
                    }
                });

                //responses.ForEach(x =>
                //{
                //    //assist.AddTask()
                //});

                //check tasks
                List <Tasks> notExecutedTasks = assist.GetToNotExecutedTasks(serviceId);
                //upload files
                foreach (var notExecutedTask in notExecutedTasks)
                {
                    OcrRequestModel requestModel = JsonConvert.DeserializeObject <OcrRequestModel>(notExecutedTask.ProfileContent);
                    if (requestModel.InputFiles != null && requestModel.InputFiles.Count > 0)
                    {
                        string extension = Path.GetExtension(requestModel.InputFiles[0].Name);
                        if (extension != null && extension != ".zip" && extension != ".rar" && extension != ".7z")
                        {
                            ////////////
                            TaskHelper.ExecuteTask(notExecutedTask);
                        }
                    }
                }

                //check statuses
                List <Tasks> processedTasks = assist.GetToProcessedTasks(serviceId);
                //download files
                foreach (var processedTask in processedTasks)
                {
                    ////////////
                    TaskHelper.CheckStateTask(processedTask);
                    //FTPHelper.PutFileOnFtpServer(fInfo, processedTask);
                }
                //update states
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }
예제 #6
0
        /// <summary>
        /// check task
        /// </summary>
        public static void CheckStateTask(Tasks task)
        {
            try
            {
                AssistProcessor  assist        = new AssistProcessor();
                Assist           serviceAssist = new Assist();
                OcrResponseModel model         = new OcrResponseModel();
                model = JsonConvert.DeserializeObject <OcrResponseModel>(task.ResponseContent);

                serviceAssist.EmailSettings = serviceAssist.GetToEmailConversionSettings(task.UserId);
                if (serviceAssist.EmailSettings == null || serviceAssist.EmailSettings.ResponseSettings == null)
                {
                    return;
                }

                string jobStatus = assist.GetJobStatus(model.JobUrl);

                model = JsonConvert.DeserializeObject <OcrResponseModel>(jobStatus);

                if (model.Status.Equals("Finished"))
                {
                    string planState = serviceAssist.CheckSubscriptionPlan(task.UserId, model.Statistics.PagesArea);
                    if (planState != "OK")
                    {
                        serviceAssist.AddErrorToDocuments(task.Id, planState);
                        //update task
                        serviceAssist.UpdateTaskState(task.Id, 4);
                        //update documents
                        serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                        return;
                    }

                    List <Tuple <int, string> >    downloadIds      = new List <Tuple <int, string> >();
                    List <Tuple <string, string> > attachmentsLinks = new List <Tuple <string, string> >();



                    string pathToDownload = serviceAssist.GetSettingValueByName("MainPath");
                    string resultFolder   = serviceAssist.GetSettingValueByName("ResultFolder");
                    string jobPattern     = serviceAssist.GetSettingValueByName("ApiUrlJobState");

                    string downloadPath = Path.Combine(pathToDownload, resultFolder);

                    foreach (var file in model.Download)
                    {
                        string    jobId    = model.JobUrl.Replace(jobPattern, string.Empty);
                        Documents document = serviceAssist.GetToDocumentByTaskId(task.Id);
                        if (document == null)
                        {
                            serviceAssist.UpdateTaskState(task.Id, 4);
                            return;
                        }
                        string originalName = Path.GetFileNameWithoutExtension(document.OriginalFileName);
                        string fileExt      = serviceAssist.GetToFileExtension(file.OutputFormat);

                        Guid   g       = Guid.NewGuid();
                        string newName = g.ToString() + fileExt;

                        originalName = originalName + fileExt;
                        string filePath = Path.Combine(downloadPath, newName);
                        string error    = "";
                        assist.DownloadFile(file.Uri, filePath, ref error);
                        if (!File.Exists(filePath))
                        {
                            LogHelper.AddLog(error);
                            serviceAssist.AddErrorToDocuments(task.Id, error);
                            //update task
                            serviceAssist.UpdateTaskState(task.Id, 4);
                            //update documents
                            serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);
                            return;
                        }
                        //add document
                        int resultDocumentId = serviceAssist.AddResultDocument(task.Id, g, originalName, newName, filePath);
                        if (serviceAssist.EmailSettings.ResponseSettings.AddAttachment)
                        {
                            attachmentsLinks.Add(new Tuple <string, string>(filePath, originalName));
                        }
                        if (serviceAssist.EmailSettings.ResponseSettings.AddLink)
                        {
                            downloadIds.Add(new Tuple <int, string>(resultDocumentId, originalName));
                        }
                    }
                    if (serviceAssist.EmailSettings.ResponseSettings.SendReply)
                    {
                        string text = "DataCapture.Cloud received a conversion request form this e-mail address.  Here is your conversion result:";
                        serviceAssist.SendEmailResponse(task.UserId, downloadIds, attachmentsLinks,
                                                        serviceAssist.EmailSettings.ResponseSettings.CCResponse? serviceAssist.EmailSettings.ResponseSettings.Addresses:"",
                                                        text);
                    }
                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 3);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 3);
                    // add statistics
                    serviceAssist.AddStatisctics(task.Id, model.Statistics);
                }
                else if (model.Status.Equals("Processing"))
                {
                }
                else if (!model.Status.Equals("Submitted"))
                {
                    LogHelper.AddLog("Error in JobStatus: " + jobStatus);
                    string errorText = "";
                    foreach (var ocrError in model.Errors)
                    {
                        errorText += ocrError.ErrorName + ": " + ocrError.ErrorMessage;
                    }
                    serviceAssist.AddErrorToDocuments(task.Id, errorText);
                    //update task
                    serviceAssist.UpdateTaskState(task.Id, 4);
                    //update documents
                    serviceAssist.UpdateDocumentStatesByTaskId(task.Id, 4);

                    if (serviceAssist.EmailSettings.ResponseSettings.SendReply)
                    {
                        serviceAssist.SendEmailResponseFail(task.UserId, "DataCapture.Cloud received a conversion request form this e - mail address. Error occured while processing request.", "");
                    }
                }
            }
            catch (Exception exception)
            {
                string innerException = exception.InnerException == null ? "" : exception.InnerException.Message;
                string methodName     = System.Reflection.MethodBase.GetCurrentMethod().Name;
                LogHelper.AddLog("Error in method: " + methodName + "; Exception: " + exception.Message + " Innner Exception: " +
                                 innerException);
            }
        }