/// <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); } }
/// <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); }