private void Tab1RequestCaseButton_Click(object sender, RoutedEventArgs e) { String caseId = String.Empty; try { caseId = Tab1CaseListBox.SelectedItem.ToString(); } catch { } CaseMessage message = new CaseMessage(); message.CaseId = caseId; message.WorkstationId = m_AWSId; //make case directory if (!Directory.Exists("C:\\Reena")) { Directory.CreateDirectory("C:\\Reena"); } String DirName = "C:\\Reena\\" + caseId; if (!Directory.Exists(DirName)) { Directory.CreateDirectory(DirName); } try { //get case xml file CaseRequestMessageResponse response = m_AWSCommEndPoint1.RequestCase(message); FileStream casexml = new FileStream(DirName + "\\case.xml", FileMode.Create); response.file.CopyTo(casexml); casexml.Close(); response.file.Close(); //GetCaseFiles(DirName, caseid); m_ActiveCase = caseId; } catch (FaultException exp) { Tab1LogListBox.Items.Add(exp.Message); } }
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 override CaseRequestMessageResponse RequestCase(CaseMessage message) { try { lock (m_CaseListLock) { //if caseId is empty then auto select a case for this workstation if (String.IsNullOrWhiteSpace(message.CaseId)) { //for load balancing figure out whether this workstation should get the requested case string workstation = GetNextLoadBalanceWorkstationId(message.WorkstationId); //string[] caseIdList = null;// string.Empty;//GetAssignedCaseID(workstation); //if (caseIdList == null || caseIdList.Length == 0) //{ //select next available case from the case list that matches the workstation mode(Analyst or ManualCodig) message.CaseId = GetUnassignedCaseId(message.WorkstationMode); //} //else //{ // message.CaseId = caseIdList[0]; //} //case id is empty there are currently no live cases if (String.IsNullOrWhiteSpace(message.CaseId)) { throw new FaultException(new FaultReason(ErrorMessages.NO_LIVE_CASE)); } else if (workstation != message.WorkstationId) { throw new FaultException(new FaultReason(ErrorMessages.LOAD_BALANCE_DELAY_CASE_REQUEST)); } } if (IsCaseAvailable(message.CaseId, message.WorkstationId)) { CaseRequestMessageResponse response = base.RequestCase(message); string ftiFile = string.Empty; if (m_TIPManagerComm != null) { ftiFile = m_TIPManagerComm.RequestFTIFile(message.WorkstationId); } if (!String.IsNullOrWhiteSpace(ftiFile)) { response.AdditionalFiles.Add(FileType.FTIFile, ftiFile); response.caseType = L3.Cargo.Communications.Interfaces.CaseType.FTICase; ClearAssignment(message.CaseId); } else { string caseArea = string.Empty; if (caseList.IsCTI(message.CaseId)) { m_TIPManagerComm.AssignCTICase(message.CaseId, message.WorkstationId); response.caseType = L3.Cargo.Communications.Interfaces.CaseType.CTICase; caseArea = l3.cargo.corba.WorkstationArea.AWS.ToString(); } else { caseArea = m_CargoHostEndPoint.GetCase(message.CaseId).getCurrentArea(); response.caseType = L3.Cargo.Communications.Interfaces.CaseType.LiveCase; } lock (_updateCaseAssignmentLock) { base.AssignId(message.CaseId, message.WorkstationId); CaseListUpdateEvent(message.CaseId, message.WorkstationId, caseArea, true); //Set this workstation has currently requested case and increment number of cases requested IncrementLoadBalanceNumRequestedCases(message.WorkstationId, true); } } return(response); } else { throw new FaultException(new FaultReason(ErrorMessages.CASE_CURRENTLY_IN_USE)); } } } catch (Exception ex) { throw new FaultException(new FaultReason(ex.Message)); } }
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); }