コード例 #1
0
        /// <summary>
        /// Load the specified Disposition Plan
        /// </summary>
        internal void LoadDispositionPlan(EPEventsWS.UDNewService oNewService)
        {
            CDispositionPlan pDispPlan;

            //Update if already in list, add it otherwise
            if (base.Contains(oNewService.dispositionPlan.dispplanid))
            {
                pDispPlan             = (CDispositionPlan)base.GetByKey(oNewService.dispositionPlan.dispplanid);
                pDispPlan.description = oNewService.dispositionPlan.desc;
                pDispPlan.Dispositions.Clear();
            }
            else
            {
                pDispPlan = new CDispositionPlan(oNewService.dispositionPlan.dispplanid, oNewService.dispositionPlan.desc);
                base.Add(pDispPlan.Id, pDispPlan);
            }

            //Load/refresh this plan's disposition list
            foreach (EPEventsWS.UDNotifyDispositions oDisp in oNewService.dispositions)
            {
                CDisposition pDisposition;

                //If disp already in common list, update it
                if (mpDispositions.Contains(oDisp.dispid))
                {
                    pDisposition             = mpDispositions.GetByKey(oDisp.dispid);
                    pDisposition.code        = oDisp.code;
                    pDisposition.description = oDisp.description;
                    pDisposition.isCallback  = Convert.ToBoolean(oDisp.callbackf);
                    pDisposition.isExclusion = Convert.ToBoolean(oDisp.exclusionf);
                    pDisposition.isSale      = Convert.ToBoolean(oDisp.salesf);
                }
                //Otherwise, load it and add ref to common list
                else
                {
                    pDisposition = new CDisposition(oDisp.dispid, oDisp.description, oDisp.code, Convert.ToBoolean(oDisp.salesf), Convert.ToBoolean(oDisp.callbackf), Convert.ToBoolean(oDisp.exclusionf));
                    mpDispositions.Add(pDisposition.Id, pDisposition);
                }

                //Add disp to this plan's list
                pDispPlan.Dispositions.Add(pDisposition.Id, pDisposition);
            }
        }
コード例 #2
0
        /// <summary>
        /// Load the specified service's general info and settings
        /// </summary>
        internal void Load(EPEventsWS.UDNewService oNewService)
        {
            //If already in collection, remove it
            if (base.Contains(oNewService.serviceID))
            {
                base.RemoveByKey(oNewService.serviceID);
            }

            Console.WriteLine("Loading service info for ServiceId <{0}>...\t[{1}]", oNewService.serviceID, this.GetType());

            CService oService;

            switch (oNewService.serviceInfo.servicetypeid)
            {
            case (int)ServiceType.AOD:
                oService = new CServiceAOD();
                break;

            case (int)ServiceType.CHAT:
                oService = new CServiceChat();
                break;

            default:
                oService = new CService();
                break;
            }

            oService.serviceId   = oNewService.serviceID;
            oService.serviceType = (ServiceType)oNewService.serviceInfo.servicetypeid;
            oService.serviceName = oNewService.serviceInfo.servicec;
            oService.dialMask    = oNewService.serviceInfo.outgoingmask;

            Console.WriteLine("Disposition Plan of ServiceId <{0}>: {1} \t[{2}]", oNewService.serviceID, oNewService.dispositionPlan.dispplanid, this.GetType());

            //If this service's disposition plan hasn't yet been loaded then do so
            if (oNewService.serviceInfo.dispplanid != 0 && !mpApp.DispositionPlans.Contains(oNewService.serviceInfo.dispplanid))
            {
                Console.WriteLine("Loading Disposition Plan <{0}>...\t[{1}]", oNewService.serviceInfo.dispplanid, this.GetType());
                mpApp.DispositionPlans.LoadDispositionPlan(oNewService);
            }

            oService.dispositionPlan = mpApp.DispositionPlans.GetByKey(oNewService.serviceInfo.dispplanid);

            oService.allowHangup        = Convert.ToBoolean(oNewService.serviceSettings.btnhangupf);
            oService.allowDial          = Convert.ToBoolean(oNewService.serviceSettings.btndialf);
            oService.allow3Way          = Convert.ToBoolean(oNewService.serviceSettings.btnxferf);
            oService.allowConsult       = Convert.ToBoolean(oNewService.serviceSettings.btnconsultf);
            oService.allowConsultHangup = Convert.ToBoolean(oNewService.serviceSettings.btnthreecusthangupf);

            //Hold is not valid for AGD (aka AWD or Workgroup) calls so disable it.
            oService.allowHold = oService.ServiceType != ServiceType.AGD && Convert.ToBoolean(oNewService.serviceSettings.btnholdf);

            //AGD (aka AWD or Workgroup) services don't currently have a blind transfer setting in Director so default to enabled.
            oService.allowBlindXfer = oService.ServiceType == ServiceType.AGD || Convert.ToBoolean(oNewService.serviceSettings.btnblindxferf);

            oService.allowWarmXfer      = Convert.ToBoolean(oNewService.serviceSettings.warmtransfer);
            oService.allowConference    = Convert.ToBoolean(oNewService.serviceSettings.btnthreewayf);
            oService.allowRecord        = Convert.ToBoolean(oNewService.serviceSettings.btnrecordf);
            oService.allowPlay          = Convert.ToBoolean(oNewService.serviceSettings.btnplayf);
            oService.showCallData       = Convert.ToBoolean(oNewService.serviceSettings.showcalldatadialogf);
            oService.showCallDataSecs   = oNewService.serviceSettings.calldatadialogduration;
            oService.callDataDefId      = oNewService.serviceSettings.calldatadefid;
            oService.wrapAlarmSecs      = oNewService.serviceSettings.wrapwarningdelay;
            oService.requireDisposition = Convert.ToBoolean(oNewService.serviceSettings.reqdispositionf);
            oService.requireWrap        = Convert.ToBoolean(oNewService.serviceSettings.reqwrapf);
            oService.allowNextCall      = Convert.ToBoolean(oNewService.serviceSettings.btnnextcall);
            oService.application        = oNewService.serviceSettings.appdesc;

            if (oService is CServiceAOD)
            {
                ((CServiceAOD)oService).allowPreviewNumberChange = Convert.ToBoolean(oNewService.serviceSettings.allowphonechangeinpreview);
                ((CServiceAOD)oService).timedPreview             = Convert.ToBoolean(oNewService.serviceSettings.timedpreviewflag);
                ((CServiceAOD)oService).timedPreviewSecs         = oNewService.serviceSettings.previewtimeoutinsecs;
            }
            else if (oService is CServiceChat)
            {
                ((CServiceChat)oService).allowChatDisconnect = Convert.ToBoolean(oNewService.serviceSettings.chatdisconnectallowed);
            }

            base.Add(oService.serviceId, oService);
        }