Ejemplo n.º 1
0
            public ModLogInfo(RequiredInfo info, ReasonInfo reasonInfo = null)
            {
                Invoker      = info.invoker;
                Color        = info.color;
                CommandName  = info.commandName;
                CommandValue = info.commandValue;

                HasReasonField = reasonInfo != null;
                Reason         = reasonInfo?.reason;
            }
Ejemplo n.º 2
0
        public void LetterGenerationTest()
        {
            EmployeeInfo employee = new EmployeeInfo()
            {
                address = "陕西省西安市雁塔区天谷八路环普科技园1", eRID = "HR342389", language = "C", name = "Haley", title = "TestMessage"
            };
            EmployerInfo employer = new EmployerInfo()
            {
                schemeName = "计划名称", name = "中软国际", schemeNumber = "901213", schemeCode = "CHNSOFT", language = "C", eRID = "HR565", address = "陕西省西安市雁塔区天谷八路环普科技园2"
            };

            string reasonFile   = @"C:\Users\Administrator\Desktop\GenerateLetter\PW + ER Reason.doc";
            string templateFile = @"C:\Users\Administrator\Desktop\GenerateLetter\(chi) ER but missing informationTest.doc";

            //if Language=="C" worLettertableIndex=3 Language=="E"  worLettertableIndex=4
            int        worLettertableIndex = 3;
            ReasonInfo reasoninfo          = new ReasonInfo();

            using (WordCore wordCore = new WordCore())
            {
                wordCore.OpenWord(reasonFile, true);
                IList <string> codes      = wordCore.GetTable_Clolumn_ByColumnIndex(1, 1);
                IList <string> shortCodes = wordCore.GetTable_Clolumn_ByColumnIndex(1, 2);
                for (int i = 0; i < codes.Count; i++)
                {
                    reasoninfo.Reasons.Add(new SelectReasonItem
                    {
                        Code       = codes[i],
                        ShortCode  = shortCodes[i],
                        Row        = i + 2,
                        CopyColumn = 3
                    });
                }
                foreach (SelectReasonItem item in reasoninfo.Reasons)
                {
                    wordCore.CopyTable_Cell_ByRowIndexAndColumnIndex(1, item.Row, item.CopyColumn);
                    wordCore.OpenWord(templateFile);
                    wordCore.AppendPasteContentToTable(worLettertableIndex);
                    wordCore.OpenWord(reasonFile, true);
                }
                wordCore.ProtectDocument(templateFile);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Rejects the interaction.
        /// </summary>
        /// <param name="ticketID">The ticket identifier.</param>
        /// <param name="interactionID">The interaction identifier.</param>
        /// <param name="proxyID">The proxy identifier.</param>
        /// <returns></returns>
        public OutputValues RejectInteraction(int ticketID, string interactionID, int proxyID, KeyValueCollection data)
        {
            OutputValues output = OutputValues.GetInstance();

            output.Message     = string.Empty;
            output.MessageCode = string.Empty;
            output.ErrorCode   = 0;
            try
            {
                RequestReject requestReject = RequestReject.Create();
                requestReject.TicketId      = ticketID;
                requestReject.InteractionId = interactionID;
                requestReject.ProxyClientId = proxyID;
                requestReject.Extension     = data;
                ReasonInfo reasonInfo = ReasonInfo.Create();
                reasonInfo.ReasonDescription = "Agent has reject this interaction";
                requestReject.Reason         = reasonInfo;
                if (Settings.InteractionProtocol != null && Settings.InteractionProtocol.State == ChannelState.Opened)
                {
                    IMessage message = Settings.InteractionProtocol.Request(requestReject);
                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case EventAck.MessageId:
                            EventAck eventInteractionReject = (EventAck)message;
                            logger.Info("------------RejectInteraction-------------");
                            logger.Info("InteractionId  :" + interactionID);
                            logger.Info("ProxyClientId    :" + proxyID);
                            logger.Info("---------------------------------------------");
                            logger.Trace(eventInteractionReject.ToString());
                            output.MessageCode = "200";
                            output.Message     = "Reject Interaction Successful";
                            break;

                        case EventError.MessageId:
                            EventError eventError            = (EventError)message;
                            string     LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                            string     LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                            logger.Trace(eventError.ToString());
                            output.MessageCode = "2001";
                            output.Message     = "RejectInteraction() : " + LoginErrorDescription;
                            break;
                        }
                    }
                    else
                    {
                        output.MessageCode = "2001";
                        output.Message     = "Agent Reject Interaction UnSuccessful";
                    }
                }
                else
                {
                    logger.Warn("RejectInteraction() : Interaction Server protocol is Null..");
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error occurred while Reject Interaction request " + generalException.ToString());
                output.MessageCode = "2001";
                output.Message     = generalException.Message;
            }
            return(output);
        }
        public OutputValues NotifyWorbin(int proxyClientId, string workbinType, string worbinEmpId, string workbinGroupId = null, string WorkbinPlaceId = null, string workbinPlaceGroupId = null)
        {
            OutputValues outPutValues = new OutputValues();

            outPutValues.Message     = string.Empty;
            outPutValues.MessageCode = string.Empty;
            outPutValues.ErrorCode   = 0;
            KeyValueCollection keyVC = new KeyValueCollection();

            keyVC.Add("event_processing_stopped", 1);
            try
            {
                RequestWorkbinNotifications reqWorkbinNotifications = RequestWorkbinNotifications.Create();
                reqWorkbinNotifications.Workbin = WorkbinInfo.Create(workbinType);
                reqWorkbinNotifications.Workbin.WorkbinAgentId = worbinEmpId;
                if (!string.IsNullOrEmpty(workbinGroupId))
                {
                    reqWorkbinNotifications.Workbin.WorkbinGroupId = workbinGroupId;
                }
                if (!string.IsNullOrEmpty(workbinPlaceGroupId))
                {
                    reqWorkbinNotifications.Workbin.WorkbinPlaceGroupId = workbinPlaceGroupId;
                }
                if (!string.IsNullOrEmpty(WorkbinPlaceId))
                {
                    reqWorkbinNotifications.Workbin.WorkbinPlaceId = WorkbinPlaceId;
                }
                reqWorkbinNotifications.Reason                = ReasonInfo.Create();
                reqWorkbinNotifications.ProxyClientId         = proxyClientId;
                reqWorkbinNotifications.NotifyPropertyChanges = 1;
                reqWorkbinNotifications.Extension             = keyVC;
                if (Settings.InteractionProtocol != null && Settings.InteractionProtocol.State == ChannelState.Opened)
                {
                    IMessage message = Settings.InteractionProtocol.Request(reqWorkbinNotifications);

                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case EventAck.MessageId:
                            EventAck _requestWorkbinNotifications = (EventAck)message;
                            logger.Info("------------Request Workbin Notifications-------------");
                            logger.Trace(_requestWorkbinNotifications.ToString());
                            outPutValues.MessageCode = "200";
                            logger.Trace(_requestWorkbinNotifications.ProxyClientId);
                            outPutValues.Message = "Request Workbin Notifications Successful";
                            break;

                        case EventError.MessageId:
                            EventError eventError = (EventError)message;
                            logger.Trace(eventError.ToString());
                            outPutValues.MessageCode = "2001";
                            outPutValues.Message     = "NotifyWorbin() : " + Convert.ToString(eventError.ErrorDescription);
                            break;
                        }
                    }
                }
            }
            catch (Exception error)
            {
                logger.Error(error.Message.ToString());
                outPutValues.MessageCode = "2001";
                outPutValues.Message     = "NotifyWorbin() : " + error.Message.ToString();
            }

            return(outPutValues);
        }
        /// <summary>
        /// Agents the ready.
        /// </summary>
        /// <param name="proxyClientId">The proxy client identifier.</param>
        /// <param name="mediaType">Type of the media.</param>
        /// <returns></returns>
        public OutputValues AgentNotReadyWithReason(int proxyClientId, string mediaType, string reason, string code)
        {
            OutputValues output = OutputValues.GetInstance();

            output.Message     = string.Empty;
            output.MessageCode = string.Empty;
            output.ErrorCode   = 0;
            try
            {
                KeyValueCollection ReasonCode = new KeyValueCollection();
                if (!string.IsNullOrEmpty(reason))
                {
                    ReasonCode.Add("Name", reason);
                    ReasonCode.Add("Code", code);
                }
                RequestChangeMediaStateReason requestChangeMediaStateReason = RequestChangeMediaStateReason.Create(proxyClientId, ReasonCode, mediaType, ReasonInfo.Create(mediaType, reason, Convert.ToInt32(code)));
                //requestChangeMediaStateReason.ProxyClientId = proxyClientId;
                //requestChangeMediaStateReason.MediaTypeName = mediaType;

                //requestChangeMediaStateReason.Extension = ReasonCode;
                //requestChangeMediaStateReason.Reason = ReasonInfo.Create(mediaType, reason, Convert.ToInt32(code));

                if (Settings.InteractionProtocol != null && Settings.InteractionProtocol.State == ChannelState.Opened)
                {
                    IMessage message = Settings.InteractionProtocol.Request(requestChangeMediaStateReason);
                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case EventAck.MessageId:
                            EventAck eventAgentNotReady = (EventAck)message;
                            logger.Info("----------------AgentNotReadyWithReason-------------");
                            logger.Info("ProxyClientId    :" + proxyClientId);
                            logger.Info("MediaTypeName    :" + mediaType);
                            logger.Info("Name    :" + eventAgentNotReady.Name.ToString());
                            logger.Info("Reason Name    :" + reason);
                            logger.Info("Reason Code    :" + code);
                            logger.Info("----------------------------------------------------");
                            logger.Trace(eventAgentNotReady.ToString());
                            output.MessageCode = "200";
                            output.Message     = "Agent Not Ready with reason Successful";
                            break;

                        case EventError.MessageId:
                            EventError eventError            = (EventError)message;
                            string     LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                            string     LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                            logger.Trace(eventError.ToString());
                            output.ErrorCode   = eventError.ErrorCode;
                            output.MessageCode = "2002";
                            output.Message     = "AgentNotReadyWithReason() : " + LoginErrorDescription;
                            break;
                        }
                    }
                    else
                    {
                        output.MessageCode = "2001";
                        output.Message     = "Agent Not Ready with reason UnSuccessful";
                    }
                }
                else
                {
                    logger.Warn("AgentNotReadyWithReason() : Interaction Server Protocol is Null..");
                }
            }
            catch (Exception commonException)
            {
                logger.Error("Error occurred while Agent Not Ready with reason request " + commonException.ToString());
                output.MessageCode = "2001";
                output.Message     = commonException.Message;
            }
            return(output);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 確認此批號是否為WOLOT
        /// </summary>
        /// <param name="lot"></param>
        /// <returns></returns>
        private bool CheckWOLot(string lot)
        {
            //確認此批號是否為WOLOT
            var woLotList = LotDefectInfoEx.GetDataListByWOLot(lot);

            if (woLotList.Count == 0)
            {
                return(false);
            }

            foreach (var data in woLotList)
            {
                //取得批號資訊
                var lotData = LotInfoEx.GetLotByLot(data.Lot).ChangeTo <LotInfoEx>();

                //驗證批號狀態,Wait的批號
                if (lotData.Status != LotDefaultStatus.Wait.ToString())
                {
                    continue;
                }

                //驗證currentRule
                if (lotData.CurrentRuleName != _ProgramInformationBlock.ProgramRight)
                {
                    continue;
                }

                var reason = ReasonInfo.GetReasonByName(data.ReasonCode);
                if (reason == null)
                {
                    throw new CimesException(RuleMessage.Error.C00051(data.ReasonCode));
                }

                //格式:(批號) 原因碼_說明_備註
                string defectText = "(" + data.Lot + ")";

                defectText += " " + data.ReasonCode;

                if (!reason.Description.IsNullOrTrimEmpty())
                {
                    defectText += "_" + reason.Description;
                }

                if (!data.Description.IsNullOrTrimEmpty())
                {
                    defectText += "_" + data.Description;
                }

                ddlJudgeDefect.Items.Add(new ListItem(defectText, data.ID));
            }

            if (ddlJudgeDefect.Items.Count == 0)
            {
                //查無送待判原因!
                throw new Exception(RuleMessage.Error.C10187());
            }
            else if (ddlJudgeDefect.Items.Count == 1)
            {
                ddlJudgeDefect_SelectedIndexChanged(null, EventArgs.Empty);
            }
            else
            {
                ddlJudgeDefect.Items.Insert(0, new ListItem());
            }

            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 確認此批號是否為COMPONENTID
        /// </summary>
        /// <param name="lot"></param>
        /// <returns></returns>
        private bool CheckComponentID(string lot)
        {
            //確認此批號是否為COMPONENTID
            var component = ComponentInfo.GetComponentByComponentID(lot);

            if (component == null)
            {
                return(false);
            }

            //取得批號資料
            var lotData = LotInfoEx.GetLotByLot(component.CurrentLot).ChangeTo <LotInfoEx>();

            if (lotData == null)
            {
                return(false);
            }

            //驗證批號狀態,Wait的批號
            if (lotData.Status != LotDefaultStatus.Wait.ToString())
            {
                //狀態為{0},不可執行
                throw new Exception(RuleMessage.Error.C10003(lotData.Status));
            }

            //驗證currentRule
            if (lotData.CurrentRuleName != _ProgramInformationBlock.ProgramRight)
            {
                //該批號作業為XXXX,不為此功能,請遵循作業規範
                throw new Exception(RuleMessage.Error.C10004(lotData.CurrentRuleName));
            }

            //取得工件序號
            var componentDataList = ComponentInfoEx.GetDataByCurrentLot(lotData.Lot);

            if (componentDataList.Count > 0)
            {
                ttbItemSN.Text = componentDataList[0].ComponentID;
            }

            //取得送待判原因
            var lotDefectData = LotDefectInfoEx.GetDataByLotAndComponentID(lotData.Lot, ttbItemSN.Text);

            if (lotDefectData != null)
            {
                var reason = ReasonInfo.GetReasonByName(lotDefectData.ReasonCode);
                if (reason == null)
                {
                    throw new CimesException(RuleMessage.Error.C00051(lotDefectData.ReasonCode));
                }

                //格式:(批號) 原因碼_說明_備註
                string defectText = "(" + lotDefectData.Lot + ")";

                defectText += " " + lotDefectData.ReasonCode;

                if (!reason.Description.IsNullOrTrimEmpty())
                {
                    defectText += "_" + reason.Description;
                }

                if (!lotDefectData.Description.IsNullOrTrimEmpty())
                {
                    defectText += "_" + lotDefectData.Description;
                }

                ddlJudgeDefect.Items.Add(new ListItem(defectText, lotDefectData.ID));

                ddlJudgeDefect_SelectedIndexChanged(null, EventArgs.Empty);
            }
            else
            {
                //查無送待判原因!
                throw new Exception(RuleMessage.Error.C10187());
            }

            return(true);
        }
Ejemplo n.º 8
0
 public static async Task <bool> SetReasonAsync(ReasonInfo info)
 => await SetStateAsync(info);
        public static Pointel.Interactions.Chat.Core.General.OutputValues HoldInteraction(int proxyID, string sessionID, KeyValueCollection extensions)
        {
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            Pointel.Interactions.Chat.Core.General.OutputValues output = Pointel.Interactions.Chat.Core.General.OutputValues.GetInstance();
            try
            {
                Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestHold requestHold = Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Requests.InteractionManagement.RequestHold.Create();

                requestHold.InteractionId = sessionID;
                requestHold.ProxyClientId = proxyID;
                if (extensions != null && extensions.Count > 0)
                {
                    extensions.Add("IsHold", "1");
                    requestHold.Extension = extensions;
                }
                //if(!extensions.ContainsKey(""))
                //{

                //}
                //requestHold.Extension = extensions;
                requestHold.Reason = ReasonInfo.Create("AwaitingInfo", "Ennava");
                if (Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol != null && Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.State == Genesyslab.Platform.Commons.Protocols.ChannelState.Opened)
                {
                    Genesyslab.Platform.Commons.Protocols.IMessage message = Pointel.Interactions.Chat.Core.Util.Settings.IxnServerProtocol.Request(requestHold);
                    if (message != null)
                    {
                        switch (message.Id)
                        {
                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventAck.MessageId:
                            logger.Info("------------RequestHold-------------");
                            logger.Info("SessionID  :" + sessionID);
                            logger.Info("ProxyID    :" + proxyID);
                            logger.Info("------------------------------------");
                            logger.Info(requestHold.ToString());
                            output.MessageCode = "200";
                            output.Message     = "Interaction Hold Successful.";
                            break;

                        case Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError.MessageId:
                            Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError eventError = (Genesyslab.Platform.OpenMedia.Protocols.InteractionServer.Events.EventError)message;
                            string LoginErrorCode        = Convert.ToString(eventError.ErrorCode);
                            string LoginErrorDescription = Convert.ToString(eventError.ErrorDescription);
                            logger.Trace(eventError.ToString());
                            output.MessageCode = "2001";
                            output.Message     = "HoldInteraction() : " + LoginErrorDescription;
                            break;
                        }
                    }
                    else
                    {
                        output.MessageCode = "2001";
                        output.Message     = "Chat Media Hold Interaction UnSuccessful";
                    }
                }
                else
                {
                    logger.Warn("HoldInteraction() : IXN Server protocol is Null..");
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error occurred while Hold Interaction request " + generalException.ToString());
                output.MessageCode = "2001";
                output.Message     = generalException.Message;
            }
            return(output);
        }
Ejemplo n.º 10
0
        //未就绪
        public void NotReadyForMedia()
        {
            try
            {
                RequestNotReadyForMedia request = RequestNotReadyForMedia.Create("chat", ReasonInfo.Create("", ""));

                LogRequest(request.ToString());
                protocolManagementService[ISERVER_IDENTIFIER].Send(request);
            }
            catch (Exception e)
            {
                LogException(e);
            }
        }