private void UpdateJobStatus(string TransactionID, int status, int stageId) { try { TaskMgrJob pendingJob = _serviceTaskMgrJob.GetByTransactionId(TransactionID); if (pendingJob != null) { pendingJob.StartDate = status == (int)Statuses.InProgress ? DateTime.UtcNow : pendingJob.StartDate; pendingJob.EndDate = status != (int)Statuses.InProgress ? DateTime.UtcNow : pendingJob.EndDate; pendingJob.StatusId = status; pendingJob.StageId = stageId; _serviceTaskMgrJob.Update(pendingJob); _serviceTaskMgrJob.Save(); var outbox = _serviceOutbox.GetByTransactionId(Guid.Parse(pendingJob.TransactionId));//GetAll().Where(a => a.MessageID == Guid.Parse(pendingJob.TransactionId)).FirstOrDefault();//BLLOutbox.GetItem(Guid.Parse(pendingJob.TransactionId)); if (outbox != null) { if ((pendingJob.StageId == (int)SendingStages.SendingFile) && (pendingJob.StatusId == (int)Statuses.Completed)) { outbox.StatusID = 5; } if (pendingJob.StatusId == (int)Statuses.Error) { outbox.StatusID = 8; } _serviceOutbox.Update(outbox); _serviceOutbox.Save(); } } } catch (Exception ex) { AppLogManager(new StringBuilder("UpdateJobStatus Task Manager Task Manager Send"), "Error", new StringBuilder(ex.Message)); } }
/// <summary> /// Encryptor for all docs /// </summary> /// <param name="job">task identity</param> /// <param name="workFlowId">task workflow logging</param> private void StartEncryptingEDI(TaskMgrJob job, Int64 workFlowId) { try { TaskMgrXml EDIFile = _serviceTaskMgrXml.GetbyTransactionId(job.TransactionId); if (EDIFile != null) { string encEDIFile = null; metadataPipelineEncKeyInfo keyInfo = _servicemetadataPipelineEncKeyInfo.GetByPipelineId(EDIFile.PipelineId); string PgpKey = keyInfo.PgpKey; var iiTestOn = _serviceSetting.GetById((int)Settings.iiTestOn).Value; if (Convert.ToBoolean(iiTestOn)) { iiPublicKey = _serviceSetting.GetById((int)Settings.iiPublicKey).Value; encEDIFile = EncryptFile(iiPublicKey, EDIFile.EDIData); } else { encEDIFile = EncryptFile(PgpKey, EDIFile.EDIData); } AppLogManager(new StringBuilder(job.TransactionId), "Info", new StringBuilder("Encrypted by " + keyInfo.KeyName)); SaveXmlToDB(job.TransactionId, EDIFile.PipelineId, null, null, encEDIFile, null); UpdateJobStatus(job.TransactionId, (int)Statuses.Completed, (int)SendingStages.EncryptedEDI); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Completed); UpdateWorkflow(workFlowId, (int)Statuses.Completed); } else { UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.EncryptedEDI); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Error); UpdateWorkflow(workFlowId, (int)Statuses.Error); } } catch (Exception ex) { SaveErrorLogs("StartEncryptingEDI Task Manager Send " + ex.Message, Guid.Parse(job.TransactionId), workFlowId, (int)SendingStages.EncryptedEDI); UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.EncryptedEDI); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Error); UpdateWorkflow(workFlowId, (int)Statuses.Error); AppLogManager(new StringBuilder("StartEncryptingEDI Task Manager send"), "Error", new StringBuilder(ex.Message)); } }
private void FileSendingManager(TaskMgrJob job, Int64 workflowId) { try { //***Request:- Pipeline, IsPipe_UseTspDuns, FileInBytes, PostParams, ReqToTspRetResponse. HttpWebResponse response = CollectingDataForSendingFile(job.TransactionId); //***Response:- ProcessResponse, UpdateTransaction, JobWorkFlow, storeGISB, Send mail. bool GISBReceived = ProcessResponseFromTsp(response, job.TransactionId); if (GISBReceived) { SendMailOfSendingFile(job.TransactionId, GISBReceived); UpdateJobStatus(job.TransactionId, (int)Statuses.Completed, (int)SendingStages.SendingFile); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Completed); UpdateWorkflow(workflowId, (int)Statuses.Completed); } else { var outbox = _serviceOutbox.GetByTransactionId(Guid.Parse(job.TransactionId)); outbox.GISB = "Gisb not received"; outbox.StatusID = (int)Statuses.Error; _serviceOutbox.Update(outbox); SendMailOfSendingFile(job.TransactionId, GISBReceived); UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.SendingFile); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Error); UpdateWorkflow(workflowId, (int)Statuses.Error); } } catch (Exception ex) { Console.Clear(); Console.WriteLine("SendNominationFile " + job.TransactionId + " " + ex.Message, Guid.Parse(job.TransactionId), workflowId, (int)SendingStages.SendingFile); SaveErrorLogs("SendNominationFile " + job.TransactionId + " " + ex.Message, Guid.Parse(job.TransactionId), workflowId, (int)SendingStages.SendingFile); UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.SendingFile); UpdateTransactionLogs(job.TransactionId, (int)Statuses.Error); UpdateWorkflow(workflowId, (int)Statuses.Error); AppLogManager(new StringBuilder("File sending manager." + job.TransactionId), "Error", new StringBuilder(ex.Message)); } }
private void RaiseAndSendUprdRequest(Pipeline pipe, bool isOacy, bool isUnsc, bool isSwnt, bool isTest, bool sendManu) { try { Guid transactionId = Guid.NewGuid(); TaskMgrJob job = new TaskMgrJob(); job.TransactionId = transactionId.ToString(); job.DatasetId = 11; job.CreatedAt = DateTime.Now; job.EDICheckCount = 0; job.EndDate = DateTime.MaxValue; job.StartDate = DateTime.Now; job.IsSending = true; job.StageId = 3; job.StatusId = 2; job.NoOfXmlInEDI = 0; _serviceTaskMgrJob.Add(job); _serviceTaskMgrJob.Save(); Outbox outbox = new Outbox(); outbox.MessageID = transactionId; outbox.DatasetID = 11; outbox.StatusID = 0; outbox.GISB = ""; outbox.IsTest = isTest; outbox.PipelineID = pipe.ID; outbox.CompanyID = 2; outbox.IsScheduled = false; outbox.ScheduledDate = DateTime.MaxValue; outbox.IsActive = true; outbox.CreatedBy = "8f76c512-199c-47f0-8d9e-1653d4e200dd"; outbox.CreatedDate = DateTime.Now; outbox.ModifiedBy = "8f76c512-199c-47f0-8d9e-1653d4e200dd"; outbox.ModifiedDate = DateTime.Now; _serviceOutbox.Add(outbox); _serviceOutbox.Save(); #region Edi Generation Int64 workFlowId = Int64.MinValue; AddUpdateTransactionLog(job.TransactionId, (int)Statuses.InProgress); JobWorkflow workFlow = new JobWorkflow(); workFlow.EndDate = DateTime.MaxValue; workFlow.StageId = (int)SendingStages.XML; workFlow.StartDate = DateTime.Now; workFlow.StatusId = (int)Statuses.InProgress; workFlow.TransactionId = Guid.Parse(job.TransactionId); _serviceJobWorkFlow.Add(workFlow); _serviceJobWorkFlow.Save(); workFlowId = workFlow.WorkflowId; var pipelineEdiSetting = _modalFactory.Parse(_servicePipelineEdiSetting.GetPipelineSetting(pipe.DUNSNo, (int)DataSet.Upload_of_Requests_for_Download_of_Posted_Datasets, "078711334")); if (pipelineEdiSetting != null) { UPRD_GN ediGen = new UPRD_GN(); var ediFile = ediGen.GenerateEDIUPRD(isOacy, isUnsc, isSwnt, isTest, pipe.DUNSNo, pipelineEdiSetting, sendManu); if (!string.IsNullOrEmpty(ediFile.ToString())) { var r = ediFile.Segments.Where(a => a.Id.Contains("BIA")).FirstOrDefault(); string requestID = !string.IsNullOrEmpty(r.Elements[2].ToString()) ? r.Elements[2].ToString() : string.Empty; #region add UPRD status UPRDStatus uprdStatus = new UPRDStatus(); uprdStatus.TransactionId = outbox.MessageID; uprdStatus.RequestID = requestID; uprdStatus.CreatedDate = DateTime.Now; if (isOacy) { uprdStatus.DatasetRequested = (int)DataSet.Operational_Capacity; uprdStatus.DatasetSummary = "OACY"; } if (isUnsc) { uprdStatus.DatasetRequested = (int)DataSet.Unsubscribed_Capacity; uprdStatus.DatasetSummary = "UNSC"; } if (isSwnt) { uprdStatus.DatasetRequested = (int)DataSet.System_Wide_Notices; uprdStatus.DatasetSummary = "SWNT"; } uprdStatus.PipeDuns = pipe.DUNSNo; _serviceUprdStatus.Add(uprdStatus); _serviceUprdStatus.Save(); #endregion SaveXmlToDB(job.TransactionId, pipe.ID, null, ediFile.ToString(), null, null); UpdateJobStatus(job.TransactionId, (int)Statuses.Completed, (int)SendingStages.EDI); UpdateWorkflow(workFlowId, (int)Statuses.Completed); } else { UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.EDI); UpdateWorkflow(workFlowId, (int)Statuses.Error); } } else { SaveErrorLogs("Generate EDI UPRD Task Manager Send " + job.TransactionId + " Pipeline EDI Setting is null. for pipeline " + pipe.Name + " DunsNo:- " + pipe.DUNSNo, Guid.Parse(job.TransactionId), workFlowId, (int)SendingStages.EDI); AppLogManager(new StringBuilder("Generate EDI UPRD Task Manager Send " + job.TransactionId), "Error", new StringBuilder("Pipeline EDI setting in Null for UPRD file for pipeline " + pipe.Name + " Duns NO " + pipe.DUNSNo)); UpdateJobStatus(job.TransactionId, (int)Statuses.Error, (int)SendingStages.EDI); UpdateWorkflow(workFlowId, (int)Statuses.Error); } #endregion #region Encryption workFlow = new JobWorkflow(); workFlow.EndDate = DateTime.MaxValue; workFlow.StageId = (int)SendingStages.EncryptedEDI; workFlow.StartDate = DateTime.Now; workFlow.StatusId = (int)Statuses.InProgress; workFlow.TransactionId = Guid.Parse(job.TransactionId); _serviceJobWorkFlow.Add(workFlow); _serviceJobWorkFlow.Save(); workFlowId = workFlow.WorkflowId; StartEncryptingEDI(job, workFlowId); #endregion #region Sending UpdateJobStatus(job.TransactionId, (int)Statuses.InProgress, (int)SendingStages.SendingFile); Int64 workflowId = Int64.MinValue; workFlow = new JobWorkflow(); workFlow.EndDate = DateTime.MaxValue; workFlow.StageId = (int)SendingStages.SendingFile; workFlow.StartDate = DateTime.Now; workFlow.StatusId = (int)Statuses.InProgress; workFlow.TransactionId = Guid.Parse(job.TransactionId); _serviceJobWorkFlow.Add(workFlow); _serviceJobWorkFlow.Save(); workflowId = workFlow.WorkflowId; Console.WriteLine("Sending files updated status of job in DB."); FileSendingManager(job, workflowId); #endregion } catch (Exception ex) { AppLogManager(new StringBuilder("Raise UPRD in Task manager send"), "Error", new StringBuilder(ex.Message + " Inner Exception:- " + ex.InnerException)); } }