Beispiel #1
0
        /// <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
            {
                //
            }
        }
Beispiel #5
0
        /// <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"));
        }
Beispiel #6
0
 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);
 }
Beispiel #7
0
        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;
        }
Beispiel #8
0
        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();
        }
Beispiel #9
0
        /// <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;
                    }
                }
            }
        }
Beispiel #10
0
        /// <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;
            }
        }