示例#1
0
        /// <summary>
        /// Exports the files.
        /// </summary>
        public void ExportFiles()
        {
            CompanyBL companyBL           = new CompanyBL(DataContext);
            int       queuedStatusCodeId  = Utils.GetCodeIdByCodeValue("ExportFileStatus", "QUEUED");
            int       deletedStatusCodeId = Utils.GetCodeIdByCodeValue("ExportFileStatus", "DELETED");
            long      fileSize            = 0;

            var queuedExportFileRequests = companyBL.GetAllQueuedExportFileRequests();

            // Loop all export file requests.
            foreach (ExportFile exportFileRequest in queuedExportFileRequests)
            {
                bool isSuccess = false;

                // If a new request
                if (exportFileRequest.ExportFileStatusCodeId == queuedStatusCodeId)
                {
                    switch (exportFileRequest.RelatedTable)
                    {
                    case "Project":
                        isSuccess = CreateProjectExportFile(exportFileRequest.RelatedId, exportFileRequest.CreatedByUserId, out fileSize);
                        break;

                    case "Company":
                        isSuccess = CreateCompanyExportFile(exportFileRequest.RelatedId, exportFileRequest.CreatedByUserId, out fileSize);
                        break;
                    }

                    if (isSuccess)
                    {
                        exportFileRequest.ExportFileStatusCodeId = Utils.GetCodeIdByCodeValue("ExportFileStatus", "COMPLETED");
                        exportFileRequest.FileSize = fileSize;
                    }
                }
                // If a delete request.
                else if (exportFileRequest.ExportFileStatusCodeId == deletedStatusCodeId) //Pending Delete
                {
                    switch (exportFileRequest.RelatedTable)
                    {
                    case "Project":
                        isSuccess = DeletePendingRemovalProjectFiles(exportFileRequest.RelatedId);
                        break;

                    case "Company":
                        isSuccess = DeletePendingRemovalCompanyFiles(exportFileRequest.RelatedId);
                        break;
                    }

                    if (isSuccess)
                    {
                        exportFileRequest.IsActive = false;
                    }
                }
            }

            DataContext.SaveChanges();//Should not be placed with in the foreach
        }