public virtual CaseRequestMessageResponse RequestCase(CaseMessage message) { CaseRequestMessageResponse response = new CaseRequestMessageResponse(); response.caseType = Interfaces.CaseType.ArchiveCase; response.IsResultEnabled = bool.Parse(ConfigurationManager.AppSettings["EnableArchiveDecision"]); try { // search for case.xml file using the CaseList string caseDirectory = m_CaseList.GetCaseDirectory(message.CaseId); FileStream fs = File.OpenRead(caseDirectory + "\\case.xml"); response.file = new MemoryStream(); CaseTranslator.TranslateToCase2_0(fs, ref response.file, caseDirectory); if (File.Exists(caseDirectory + "\\AnalysisHistory.xml")) { response.AdditionalFiles.Add(FileType.None, "AnalysisHistory.xml"); } AssignId(message.CaseId, message.WorkstationId); } catch (Exception exp) { if (logger != null) { logger.PrintInfoLine("RequestCase exp: " + exp.Message); } throw new FaultException(new FaultReason(exp.Message)); } OperationContext clientContext = OperationContext.Current; clientContext.OperationCompleted += new EventHandler(delegate(object sender, EventArgs e) { if (response.file != null) { response.file.Dispose(); } }); return(response); }
public CaseObject RequestCase(string sourceAlias, string caseId, bool isEditable) { CaseMessage caseMessage = new CaseMessage(caseId, m_WorkstationId); caseMessage.IsCaseEditable = isEditable; caseMessage.WorkstationMode = _workstationMode; CaseRequestMessageResponse response = new CaseRequestMessageResponse(); CaseSource <WSCommEndpoint> WSCommSource = FindSource <WSCommEndpoint>(sourceAlias); CaseSource <CaseRequestManagerEndpoint> ACSSource = FindSource <CaseRequestManagerEndpoint>(sourceAlias); if (default(CaseSource <WSCommEndpoint>) != WSCommSource) { try { response = WSCommSource.EndPoint.RequestCase(caseMessage); } catch (FaultException ex) { throw; } catch (Exception ex) { WSCommSource.EndPoint.Abort(); if (m_SysConfigMgrAccess.Contains(WSCommSource.Alias)) { m_SysConfigMgrAccess.Delete(WSCommSource.Alias); } m_WSCommSources.RemoveSource(WSCommSource); throw; } } else if (default(CaseSource <CaseRequestManagerEndpoint>) != ACSSource) { try { response = ACSSource.EndPoint.RequestCase(caseMessage); } catch (FaultException ex) { throw; } catch (Exception ex) { ACSSource.EndPoint.Abort(); if (m_SysConfigMgrAccess.Contains(ACSSource.Alias)) { m_SysConfigMgrAccess.Delete(ACSSource.Alias); } m_ACSSources.RemoveSource(ACSSource); throw; } } else { throw new Exception(ErrorMessages.SOURCE_NOT_AVAILABLE); } CaseObject tmpCaseObj = CaseTranslator.Translate(response.file); if (response.AdditionalFiles != null) { foreach (KeyValuePair <FileType, String> file in response.AdditionalFiles) { DataAttachment attach = new DataAttachment(); attach.attachmentId = file.Value; switch (file.Key) { case FileType.AnalysisHistory: attach.attachmentType = AttachmentType.AnalysisHistory; break; case FileType.FTIFile: attach.attachmentType = AttachmentType.FTIImage; break; default: attach.attachmentType = AttachmentType.Unknown; break; } tmpCaseObj.attachments.Add(attach); } } tmpCaseObj.caseType = (L3.Cargo.Common.CaseType)response.caseType; //Case is editable if it is a primary case and case source specidies result (Decision) is enabled. tmpCaseObj.IsCaseEditable = (isEditable && response.IsResultEnabled); return(tmpCaseObj); }