Exemplo n.º 1
0
        public string GetCaseManagerScanCaseId()
        {
            if (_cargoHostEndPoint.IsHostAvailable && _cargoHostEndPoint.IsScanAreaScanning())
            {
                XCase xcase = _cargoHostEndPoint.GetCase(_cargoHostEndPoint.GetScanAreaScanningCase());
                return(xcase.getId());
            }

            return(null);
        }
Exemplo n.º 2
0
    /// <summary>
    /// CreateCase.  This interface function Creates new Case using container id
    ///
    ///	Arguments:
    ///		containerid: The container id
    ///	Exceptions:
    ///		none
    ///	Return:
    ///		Caseid
    /// </summary>
    public string CreateCase(string containerid)
    {
        string caseid = null;

        try
        {
            //m_XRayHost = GetXrayHost();
            caseid = _cargoHostEndPoint.CreateInitAreaCase();
            //caseid = m_XRayHost.makeCase(containerid);
            XCase currentCase = _cargoHostEndPoint.GetCase(caseid);
            currentCase.setContainerId(containerid);
        }
        catch (Exception e1)
        {
            _logger.LogError("OM - " + e1.Message);
        }

        return(caseid);
    }
Exemplo n.º 3
0
        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));
            }
        }