Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }