Beispiel #1
0
        /// <summary>
        /// Get Recording parameters
        /// </summary>
        /// <param name="camp"></param>
        /// <returns></returns>
        public static DigitalizedRecording GetDigitizedRecordings(Campaign camp)
        {
            //DialerEngine.Log.Write("|CA|GetDigitizedRecordings Invoked for Campaign - {0}",
            //    camp.CampaignID.ToString());
            CampaignService      objCampaignService      = null;
            DigitalizedRecording objDigitalizedRecording = null;
            XmlDocument          xDocCampaign            = null;

            try
            {
                objCampaignService = new CampaignService();
                xDocCampaign       = new XmlDocument();
                xDocCampaign.LoadXml(Serialize.SerializeObject(camp, "Campaign"));
                objDigitalizedRecording = (DigitalizedRecording)Serialize.DeserializeObject(
                    objCampaignService.GetDigitalizedRecording(xDocCampaign), "DigitalizedRecording");
                if (objDigitalizedRecording.DigitalizedRecordingID == 0)
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                DialerEngine.Log.WriteException(ex, "Error in GetDigitizedRecordings");
                return(null);
            }
            finally
            {
                objCampaignService = null;
                //objDialingParameter = null;
                xDocCampaign = null;
            }
            return(objDigitalizedRecording);
        }
        /// <summary>
        /// Cancel the changes made
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        /*protected void lbtnCancel_Click(object sender, EventArgs e)
         * {
         *  if (Session["Campaign"] != null)
         *  {
         *      Campaign objCampaign = (Campaign)Session["Campaign"];
         *      GetRecordings(objCampaign);
         *  }
         *  else
         *  {
         *      SetDefaultData();
         *  }
         * }*/

        #endregion

        #region Private Methods

        /// <summary>
        ///
        /// </summary>
        /// <param name="objCampaign"></param>
        private void GetRecordings(Campaign objCampaign)
        {
            if (objCampaign != null)
            {
                CampaignService      objCampaignService      = new CampaignService();
                DigitalizedRecording objDigitalizedRecording = new DigitalizedRecording();
                XmlDocument          xDocCampaign            = new XmlDocument();
                xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign"));
                objDigitalizedRecording = (DigitalizedRecording)Serialize.DeserializeObject(objCampaignService.GetDigitalizedRecording(xDocCampaign), "DigitalizedRecording");
                if (objDigitalizedRecording.DigitalizedRecordingID != 0)
                {
                    ViewState["DigitalizedRecordingID"] = objDigitalizedRecording.DigitalizedRecordingID;
                    chkEnableDigitizedRecording.Checked = objDigitalizedRecording.EnableRecording;
                    //chkStartRecordingWithBeep.Checked = objDigitalizedRecording.StartWithABeep;
                    //chkWaveFormat.Checked = objDigitalizedRecording.RecordToWave;
                    //chkHigherQuality.Checked = objDigitalizedRecording.HighQualityRecording;
                    txtFileStoragePath.Text = objDigitalizedRecording.RecordingFilePath;
                }
            }
        }
        /// <summary>
        /// Saves recording Data
        /// </summary>
        private void SaveData()
        {
            if (chkEnableDigitizedRecording.Checked && !IsPathValid())
            {
                PageMessage = "Please provide valid Recording File's Storage Path";
                txtFileStoragePath.Focus();
            }
            else
            {
                DigitalizedRecording objDigitalizedRecording = new DigitalizedRecording();
                Campaign             objCampaign             = new Campaign();
                if (Session["Campaign"] != null)
                {
                    objCampaign = (Campaign)Session["Campaign"];
                }
                if (ViewState["DigitalizedRecordingID"].ToString() != "0")
                {
                    objDigitalizedRecording.DigitalizedRecordingID = (long)ViewState["DigitalizedRecordingID"];
                }

                objDigitalizedRecording.EnableRecording = chkEnableDigitizedRecording.Checked;
                objDigitalizedRecording.EnableWithABeep = false;
                //objDigitalizedRecording.StartWithABeep = chkStartRecordingWithBeep.Checked;
                //objDigitalizedRecording.RecordToWave = chkWaveFormat.Checked;
                //objDigitalizedRecording.HighQualityRecording = chkHigherQuality.Checked;
                objDigitalizedRecording.RecordingFilePath = txtFileStoragePath.Text.EndsWith(@"\") == true?
                                                            txtFileStoragePath.Text.Trim() : txtFileStoragePath.Text.Trim() + @"\";

                /*string RecordingsPath;
                 * string ismultiboxconfig = ConfigurationManager.AppSettings["IsMultiBoxConfig"];
                 * if (ismultiboxconfig == "yes" || ismultiboxconfig == "Yes" || ismultiboxconfig == "YES")
                 * {
                 *  RecordingsPath = ConfigurationManager.AppSettings["RecordingsPathMulti"];
                 *
                 * }
                 * else
                 * {
                 *  RecordingsPath = ConfigurationManager.AppSettings["RecordingsPath"];
                 *
                 * }
                 *
                 * objDigitalizedRecording.RecordingFilePath = RecordingsPath;
                 */
                objDigitalizedRecording.FileNaming = string.Empty;
                CampaignService objCampaignService       = new CampaignService();
                XmlDocument     xDocDigitalizedRecording = new XmlDocument();
                XmlDocument     xDocCampaign             = new XmlDocument();
                try
                {
                    xDocDigitalizedRecording.LoadXml(Serialize.SerializeObject(
                                                         objDigitalizedRecording, "DigitalizedRecording"));

                    xDocCampaign.LoadXml(Serialize.SerializeObject(objCampaign, "Campaign"));

                    objDigitalizedRecording = (DigitalizedRecording)Serialize.DeserializeObject(
                        objCampaignService.DigitalizedRecordingInsertUpdate(xDocCampaign,
                                                                            xDocDigitalizedRecording), "DigitalizedRecording");
                    Response.Redirect("Home.aspx");
                }
                catch (Exception ex)
                {
                    PageMessage = ex.Message;
                }
            }
        }
        /// <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
            {
                //
            }
        }