/// <summary> /// Get Dialing parameters /// </summary> /// <param name="camp"></param> /// <returns></returns> public static OtherParameter GetOtherParam(Campaign objCampaign) { DialerEngine.Log.Write("|CA|{0}|{1}|Retrieving additional dialing parameters.", objCampaign.CampaignID, objCampaign.ShortDescription); CampaignService objCampaignService = null; OtherParameter objOtherParameter = null; XmlDocument xDocCampaign = null; try { objCampaignService = new CampaignService(); xDocCampaign = new XmlDocument(); xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign")); objOtherParameter = (OtherParameter)Serialize.DeserializeObject( objCampaignService.GetOtherParameter(xDocCampaign), "OtherParameter"); if (objOtherParameter.OtherParameterID == 0) { return(null); } } catch (Exception ex) { DialerEngine.Log.WriteException(ex, "Error in GetOtherParam"); throw ex; } finally { objCampaignService = null; //objDialingParameter = null; xDocCampaign = null; } return(objOtherParameter); }
/// <summary> /// Query stats in percentage or not /// </summary> /// <param name="objCampaign"></param> private void SetQueryStatsInPerc(Campaign objCampaign) { if (objCampaign != null) { CampaignService objCampaignService = new CampaignService(); OtherParameter objOtherParameter = new OtherParameter(); XmlDocument xDocCampaign = new XmlDocument(); xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign")); objOtherParameter = (OtherParameter)Serialize.DeserializeObject( objCampaignService.GetOtherParameter(xDocCampaign), "OtherParameter"); if (objOtherParameter.OtherParameterID != 0) { bShowInPerc = objOtherParameter.QueryStatisticsInPercent; } } }
/// <summary> /// /// </summary> /// <param name="strCampaignDBConn"></param> /// <param name="objOtherParameter"></param> /// <returns>OtherParameter</returns> public static OtherParameter OtherParameterInsertUpdate(string strCampaignMasterDBConn, OtherParameter objOtherParameter) { using (SqlConnection connect = new SqlConnection(strCampaignMasterDBConn)) { connect.Open(); using (SqlTransaction transaction = connect.BeginTransaction()) { try { SqlParameter[] sparam_s = new SqlParameter[] { new SqlParameter("@OtherParameterID", objOtherParameter.OtherParameterID), new SqlParameter("@AllowCallTransfer", objOtherParameter.AllowCallTransfer), new SqlParameter("@StaticOffsiteNumber", objOtherParameter.StaticOffsiteNumber), new SqlParameter("@AllowOnSiteTranferWData", objOtherParameter.AllowOnSiteTranferWData), new SqlParameter("@TransferMessage", objOtherParameter.TransferMessage), new SqlParameter("@AutoPlayMessage", objOtherParameter.AutoPlayMessage), new SqlParameter("@HoldMessage", objOtherParameter.HoldMessage), new SqlParameter("@AllowManualDial", objOtherParameter.AllowManualDial), new SqlParameter("@ManualDialLines", objOtherParameter.ManualDialLines), new SqlParameter("@AllowCallBacks", objOtherParameter.AllowCallBacks), new SqlParameter("@QuaryStatisticsInPercent", objOtherParameter.QueryStatisticsInPercent), new SqlParameter("@DateCreated", DateTime.Now.Date), new SqlParameter("@DateModified", DateTime.Now.Date) }; objOtherParameter.OtherParameterID = (long)SqlHelper.ExecuteScalar(strCampaignMasterDBConn, CommandType.StoredProcedure, "InsUpd_OtherParameter", sparam_s); transaction.Commit(); } catch (Exception ex) { throw ex; } finally { connect.Close(); } } } return(objOtherParameter); }
/// <summary> /// Start campaigns for dialing /// </summary> /// <param name="campaign"></param> /// <returns></returns> private void StartCampaignProcess() { Log.Write("|DE|Checking for start times for {0} new campaigns.", qCampaignQueue.Count); if (qCampaignQueue.Count == 0) { // no campaigns DialerEngine.Log.Write("No active campaigns found"); return; } // clear GC.Collect(); try { ThreadStart ts = null; while (qCampaignQueue.Count != 0) { Campaign objCampaign = null; lock (qCampaignQueue) { objCampaign = qCampaignQueue.Dequeue(); } // add to running list // m_RunningCampaignIdList.Add(campaign.CampaignID.ToString()); DialingParameter objDialParam = CampaignAPI.GetDialParam(objCampaign); OtherParameter objOtherParam = null; bool bStartCampaign = false; CallType callType = CallType.AMCall; DateTime dtStartTime; if (DateTime.Now.Hour >= 12) { callType = CallType.PMCall; dtStartTime = objDialParam.PMDialingStart; } else { dtStartTime = objDialParam.AMDialingStart; } int iCurrHour = DateTime.Now.Hour; int iCurrMinutes = DateTime.Now.Minute; int iDPhour = dtStartTime.Hour; int iDPMinutes = dtStartTime.Minute; //------------------------------------------------- // We ignore time issue for anything // other than unmanned campaigns. //------------------------------------------------- Log.Write("|DE|Campaign - Dialing Mode: {0})", objDialParam.DialingMode.ToString()); if (objDialParam.DialingMode != 6) { bStartCampaign = true; } else if (iCurrHour > iDPhour || ((iCurrHour == iDPhour) && (iCurrMinutes >= iDPMinutes))) { bStartCampaign = true; } try { if (bStartCampaign) { DigitalizedRecording digRecording = CampaignAPI.GetDigitizedRecordings(objCampaign); objOtherParam = CampaignAPI.GetOtherParam(objCampaign); CampaignProcess campProcess = new CampaignProcess(objCampaign, objDialParam, objOtherParam); if (digRecording != null) { campProcess.RecordingsPath = digRecording.RecordingFilePath; campProcess.RecordCalls = digRecording.EnableRecording; campProcess.RecordBeep = digRecording.StartWithABeep; } // weekend call checking if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday) { callType = CallType.WkendCall; } campProcess.CallType = callType; Log.Write("|DE|Starting campaign '{0}'.", objCampaign.ShortDescription); // Start campaignprocess thread. Different startup method for normal / unmanned mode if (objDialParam.DialingMode == Convert.ToInt32(DialingMode.Unmanned)) { ts = new ThreadStart(campProcess.RunCampaignUnmannedMode); } else { ts = new ThreadStart(campProcess.RunCampaign); } Thread t = new Thread(ts); t.Priority = ThreadPriority.Normal; t.IsBackground = true; t.Name = objCampaign.ShortDescription.ToString(); lock (lstCampaignThreads) { lstCampaignThreads.Add(t); } if (objDialParam.DialingMode != Convert.ToInt32(DialingMode.ManualDial)) { t.Start(); } } else { Log.Write("|DE|Campaign '{0}' not started, outside of schedule range. (Start time = {1}:{2})", objCampaign.ShortDescription, iDPhour.ToString(), iDPMinutes.ToString()); } } catch (Exception ex) { Log.WriteException(ex, "Error in Starting Campaign " + objCampaign.ShortDescription); } } } catch (Exception ex) { Log.WriteException(ex, "Error in StartCampaignProcess"); } finally { // } }
/// <summary> /// Gets the login status list /// </summary> private void GetLoginStatusList() { //AgentService objAgentService = new AgentService(); //DataSet ds = new DataSet(); //try //{ // ds = objAgentService.GetLoginStatusList(); //} //catch (Exception ex) //{ // PageMessage = ex.Message; //} //lbxLoginStatus.DataSource = ds; //lbxLoginStatus.DataTextField = "Status"; //lbxLoginStatus.DataValueField = "LoginStatusID"; //lbxLoginStatus.DataBind(); bool showManualDial = true; bool isVerificationAgent = false; try { Campaign objCampaign = (Campaign)Session["Campaign"]; CampaignService objCampaignService = new CampaignService(); XmlDocument xDocCampaign = new XmlDocument(); xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign")); OtherParameter objOtherParameter = (OtherParameter)Serialize.DeserializeObject( objCampaignService.GetOtherParameter(xDocCampaign), "OtherParameter"); // Check which agent modes are allowed by the campaign *** Add inbound in future if (objOtherParameter.OtherParameterID > 0) { showManualDial = objOtherParameter.AllowManualDial; } } catch { } try { if (Session["LoggedAgent"] != null) { Agent agent; agent = (Agent)Session["LoggedAgent"]; if (showManualDial) { showManualDial = agent.AllowManualDial; } isVerificationAgent = agent.VerificationAgent; } } catch { } lbxLoginStatus.Items.Add(new ListItem("Receive Outbound Calls Only", "Receive Outbound Calls Only")); if (showManualDial) { lbxLoginStatus.Items.Add(new ListItem("Manual Dial", "Manual Dial")); } if (isVerificationAgent) { lbxLoginStatus.Items.Add(new ListItem("Verification Only", "Verification Only")); lbxLoginStatus.Items.Add(new ListItem("Blended: Verification and Calls", "Blended: Verification and Outbound Calls")); } lbxLoginStatus.Items.Add(new ListItem("Select Another Campaign", "Select Another Campaign")); lbxLoginStatus.Items.Add(new ListItem("Log Off", "Log Off")); }
private static void ParseCommonOtherParameter(OtherParameter item, JToken parameter) { item.AllowEmptyValue = parameter["allowEmptyValue"]?.Value<bool>() ?? false; item.Required = parameter["required"]?.Value<bool>() ?? true; ParseJsonSchema(item, parameter); }
private static Parameter ParsePathParameter(JToken parameter) { var type = parameter["type"].Value<string>(); var item = default(OtherParameter); switch (type.ToUpper()) { case "ARRAY": { item = new OtherArrayParameter(); ParseOtherArrayParameter(item as OtherArrayParameter, parameter); break; } default: { item = new OtherParameter(); break; } } item.Name = parameter["name"].Value<string>(); item.In = parameter["in"].Value<string>(); item.Type = type; item.Required = parameter["required"]?.Value<bool>() ?? true; ParseCommonOtherParameter(item, parameter); return item; }
private static Parameter[] ParseParameters(JToken parameters) { if (parameters == null) { return null; } var result = new List<Parameter>(); foreach (var parameter in parameters) { var item = default(Parameter); var @in = parameter["in"].Value<string>(); switch (parameter["in"].Value<string>().ToUpperInvariant()) { case "HEADER": { item = new OtherParameter { Name = parameter["name"].Value<string>(), In = "header", Required = parameter["required"]?.Value<bool>() ?? true, Description = parameter["description"]?.Value<string>(), Type = "string" }; break; } case "FORMDATA": case "BODY": { item = ParseBodyParameter(parameter); break; } case "PATH": case "QUERY": { item = ParsePathParameter(parameter); break; } } result.Add(item); } return result.ToArray(); }
/// <summary> /// Get Other Parameter. /// </summary> /// <param name="objCampaign"></param> private void GetOtherParameter(Campaign objCampaign) { if (objCampaign != null) { string strHoldMsgPath = null; string strAutoPlayPath = null; CampaignService objCampaignService = new CampaignService(); OtherParameter objOtherParameter = new OtherParameter(); XmlDocument xDocCampaign = new XmlDocument(); xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign")); objOtherParameter = (OtherParameter)Serialize.DeserializeObject( objCampaignService.GetOtherParameter(xDocCampaign), "OtherParameter"); if (objOtherParameter.OtherParameterID != 0) { ViewState["OtherParameterID"] = objOtherParameter.OtherParameterID; if (objOtherParameter.StaticOffsiteNumber != "") { rbtnAFCT.Checked = true; chkStaticOffSite.Checked = true; txtPhoneNo.Text = objOtherParameter.StaticOffsiteNumber; } //if (objOtherParameter.AutoPlayMessage != "" || objOtherParameter.HoldMessage != "") // chkTAPM.Checked = true; chkTAPM.Checked = objOtherParameter.TransferMessageEnable; hdnAutoPlayMesssage.Value = objOtherParameter.TransferMessage; if (objOtherParameter.TransferMessage != "") { strAutoPlayPath = objOtherParameter.TransferMessage; if (System.IO.Path.GetFileNameWithoutExtension(strAutoPlayPath).Length > 20) { lblAutoPlayMessage.Text = "(" + System.IO.Path.GetFileNameWithoutExtension( strAutoPlayPath).Remove(20) + "..." + System.IO.Path.GetExtension(strAutoPlayPath) + ")"; } else { lblAutoPlayMessage.Text = "(" + System.IO.Path.GetFileName(strAutoPlayPath) + ")"; } lblAutoPlayMessage.ToolTip = System.IO.Path.GetFileName(strAutoPlayPath); } hdnHoldMessage.Value = objOtherParameter.HoldMessage; if (objOtherParameter.HoldMessage != "") { strHoldMsgPath = objOtherParameter.HoldMessage; if (System.IO.Path.GetFileNameWithoutExtension(strHoldMsgPath).Length > 20) { lblHoldMessage.Text = "(" + System.IO.Path.GetFileNameWithoutExtension( strHoldMsgPath).Remove(20) + "..." + System.IO.Path.GetExtension(strHoldMsgPath) + ")"; } else { lblHoldMessage.Text = "(" + System.IO.Path.GetFileName(strHoldMsgPath) + ")"; } lblHoldMessage.ToolTip = System.IO.Path.GetFileName(strHoldMsgPath); } chkAllow.Checked = objOtherParameter.AllowManualDial; if (objOtherParameter.StartingLine == -2) { txtStartingLine.Text = ""; } else { txtStartingLine.Text = objOtherParameter.StartingLine.ToString(); } if (objOtherParameter.EndingLine == -2) { txtEndingLine.Text = ""; } else { txtEndingLine.Text = objOtherParameter.EndingLine.ToString(); } if (objOtherParameter.AlertSupervisorOnCallbacks == -2) { txtAlertSupervisor.Text = ""; } else { txtAlertSupervisor.Text = objOtherParameter.AlertSupervisorOnCallbacks.ToString(); } chkQSP.Checked = objOtherParameter.QueryStatisticsInPercent; if (objOtherParameter.CallTransfer == (int)CallBackOptions.DonotAllowCallTransfer) { rbtnDACT.Checked = true; } if (objOtherParameter.CallTransfer == (int)CallBackOptions.AllowOffsiteCallTransfer) { rbtnAFCT.Checked = true; } if (objOtherParameter.CallTransfer == (int)CallBackOptions.AllowOnSiteCallTransfer) { rbtnAOCT.Checked = true; } if (objOtherParameter.AllowCallBacks == (int)CallBackOptions.DonotAllowCallBacks) { rbtnDAC.Checked = true; } if (objOtherParameter.AllowCallBacks == (int)CallBackOptions.AllowAgentCallBacks) { rbtnAAC.Checked = true; } if (objOtherParameter.AllowCallBacks == (int)CallBackOptions.AllowStationCallBacks) { rbtnASC.Checked = true; } if (objOtherParameter.AllowCallBacks == (int)CallBackOptions.AllowSystemCallBacks) { rbtnAsys.Checked = true; } } } }
/// <summary> /// Save Other Parameter /// </summary> private void SaveData() { int intCallBacks = 0; int intCallTransfer = 0; string strAutoPlayMessagePath = ""; string strHoldMessagePath = ""; Campaign objCampaign = (Campaign)Session["Campaign"]; OtherParameter objOtherParameter = new OtherParameter(); try { if (rbtnDACT.Checked) { intCallTransfer = (int)CallBackOptions.DonotAllowCallTransfer; } if (rbtnAFCT.Checked) { intCallTransfer = (int)CallBackOptions.AllowOffsiteCallTransfer; } if (rbtnAOCT.Checked) { intCallTransfer = (int)CallBackOptions.AllowOnSiteCallTransfer; if (FileUploadautoplaymsg.HasFile) { strAutoPlayMessagePath = UploadAndSaveFile("FileUploadautoplaymsg"); } else if (ViewState["OtherParameterID"].ToString() != "0") { strAutoPlayMessagePath = hdnAutoPlayMesssage.Value; } if (FileUploadholdmsg.HasFile) { strHoldMessagePath = UploadAndSaveFile("FileUploadholdmsg"); } else if (ViewState["OtherParameterID"].ToString() != "0") { strHoldMessagePath = hdnHoldMessage.Value; } } if (rbtnDAC.Checked) { intCallBacks = (int)CallBackOptions.DonotAllowCallBacks; } if (rbtnAAC.Checked) { intCallBacks = (int)CallBackOptions.AllowAgentCallBacks; } if (rbtnASC.Checked) { intCallBacks = (int)CallBackOptions.AllowStationCallBacks; } if (rbtnAsys.Checked) { intCallBacks = (int)CallBackOptions.AllowSystemCallBacks; } if (ViewState["OtherParameterID"].ToString() != "0") { objOtherParameter.OtherParameterID = (long)ViewState["OtherParameterID"]; } objOtherParameter.CallTransfer = intCallTransfer; objOtherParameter.StaticOffsiteNumber = txtPhoneNo.Text; objOtherParameter.TransferMessageEnable = chkTAPM.Checked; objOtherParameter.TransferMessage = strAutoPlayMessagePath; objOtherParameter.HoldMessage = strHoldMessagePath; objOtherParameter.AllowManualDial = chkAllow.Checked; objOtherParameter.StartingLine = Convert.ToInt16(txtStartingLine.Text == string.Empty ? "-2" : txtStartingLine.Text); objOtherParameter.EndingLine = Convert.ToInt16(txtEndingLine.Text == string.Empty ? "-2" : txtEndingLine.Text); objOtherParameter.AllowCallBacks = Convert.ToInt16(intCallBacks); objOtherParameter.AlertSupervisorOnCallbacks = Convert.ToInt16( txtAlertSupervisor.Text == string.Empty ? "-2" : txtAlertSupervisor.Text); objOtherParameter.QueryStatisticsInPercent = chkQSP.Checked; CampaignService objCampaignService = new CampaignService(); XmlDocument xDocOtherParameter = new XmlDocument(); XmlDocument xDocCampaign = new XmlDocument(); xDocOtherParameter.LoadXml(Serialize.SerializeObject(objOtherParameter, "OtherParameter")); xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign")); objOtherParameter = (OtherParameter)Serialize.DeserializeObject( objCampaignService.OtherParameterInsertUpdate(xDocCampaign, xDocOtherParameter), "OtherParameter"); Response.Redirect("~/campaign/Home.aspx"); } catch (Exception ex) { PageMessage = ex.Message; } }