/// <summary>
        /// Checks the remove completed process.
        /// </summary>
        /// <param name="generationDao">The generation DAO.</param>
        /// <param name="process">The process.</param>
        private void CheckRemoveCompletedProcess(GenerationDao generationDao, IHostedProcess process)
        {
            ReportGenerationQueue processingReport = generationDao.Find<ReportGenerationQueue>(queue =>
                queue.ReportGenerationQueueId == process.ReportGenerationQueueId);

            if (processingReport != null)
            {
                // If the process is completed, cancelled or failed, remove it from the queue
                if (processingReport.ReportGenerationStatus.In(ReportStatus.Completed, ReportStatus.Cancelled, ReportStatus.Failed))
                {
                    if (processingReport.ReportGenerationStatus == ReportStatus.Cancelled)
                    {
                        this.TerminateProcess(process);
                    }

                    this._reportGeneratorEngineList.Remove(process);
                }
                else
                {
                    if (process.HasExited)
                    {
                        this._reportGeneratorEngineList.Remove(process);
                    }
                }
            }
        }