public bool Add(CallbackRecord record)
        {
            Trace.TraceInformation("Enter.");

            lock (objLock)
            {
                if (record != null)
                {
                    Trace.TraceInformation("Record list size (before):" + _Records.Count.ToString());

                    _Records.Add(record);

                    Trace.TraceInformation("Record with ID = " + record.ID + " was added to the list.");
                    Trace.TraceInformation("Record list size (after):" + _Records.Count.ToString());

                    iRecordCount = _Records.Count;

                    UpdateNumberOfRecordsCurrentlyInIVR();

                    WriteToDisk();

                    return(true);
                }
                else
                {
                    Trace.TraceWarning("record is null");
                    return(false);
                }
            }//lock (objLock)
        }
        public bool Remove(String RecordID)
        {
            Trace.TraceInformation("Enter.");

            lock (objLock)
            {
                if (RecordID != null && RecordID != String.Empty)
                {
                    CallbackRecord ToBeRemoved = null;

                    foreach (CallbackRecord record in _Records)
                    {
                        if (record.ID == RecordID)
                        {
                            ToBeRemoved = record;
                            break;
                        }
                    }

                    if (ToBeRemoved != null)
                    {
                        Trace.TraceInformation("Record list size (before):" + _Records.Count.ToString());
                        _Records.Remove(ToBeRemoved);
                        Trace.TraceInformation("Record with ID = " + RecordID + " was removed from the list.");
                        Trace.TraceInformation("Record list size (after):" + _Records.Count.ToString());

                        iRecordCount = _Records.Count;

                        UpdateNumberOfRecordsCurrentlyInIVR();

                        WriteToDisk();

                        return(true);
                    }
                    else
                    {
                        Trace.TraceWarning("No record with id " + RecordID + " was found.");
                        return(false);
                    }
                }
                else

                {
                    Trace.TraceWarning("RecordID is either null or empty.");
                    return(false);
                }
            }
        }
        public int GetNumberOfContactAheadOf(CallbackRecord record)
        {
            try
            {
                if (_Records == null)
                {
                    Trace.TraceWarning("_Records is null");
                    return(-1);
                }

                if (record == null)
                {
                    Trace.TraceWarning("record is null");
                    return(-1);
                }

                int iNumberOfRecordsAhead = 0;

                lock (objLock)
                {
                    if (_Records.Count == 0)
                    {
                        return(0);
                    }

                    foreach (CallbackRecord r in _Records)
                    {
                        if (r.ID != record.ID)
                        {
                            if (r.QueueStartTime <= record.QueueStartTime)
                            {
                                iNumberOfRecordsAhead++;
                            }
                        } //if (r.ID != record.ID)
                    }     //foreach (CallbackRecord r in _Records)
                }         //lock (objLock)

                return(iNumberOfRecordsAhead);
            }
            catch (Exception ex)
            {
                Trace.TraceError("Exception:" + ex.Message + Environment.NewLine + "StackTrace:" + ex.StackTrace);
                return(-1);
            }
        }
Esempio n. 4
0
        public void AddContact(CallbackRecord record)
        {
            if (record == null)
            {
                return;
            }

            iContactsWaiting++;

            double lQueueTime = DateTime.Now.Subtract(record.RequestDate).TotalSeconds;

            if (lQueueTime > dLongestQueueTime)
            {
                dLongestQueueTime = lQueueTime;
            }

            dTotalQueueTime = dTotalQueueTime + lQueueTime;
        }
 public CallbackRecordStatusUpdateEventArgs(CallbackRecord Record)
 {
     _Record = Record;
 }
 public CallbackRecordStatusUpdateEventArgs()
 {
     _Record = null;
 }
        void _SendReentryRequest(object state)
        {
            lock (objLockReentry)
            {
                try
                {
                    Trace.TraceInformation("Enter.");

                    if (state == null)
                    {
                        Trace.TraceWarning("state is null");
                        return;
                    }

                    String sRecordID = (String)state;

                    Trace.TraceInformation("Record " + sRecordID + "  Attempt reentry");

                    CallbackRecord record = _recordManager.GetRecordByID(sRecordID);

                    if (record == null)
                    {
                        Trace.TraceWarning("Could not get record " + sRecordID + " from recordManager.");
                        return;
                    }

                    Trace.TraceInformation("Record " + record.ID + " is in status " + record.Status.ToString());

                    if (record.Status != Constants.RecordStatus.NEW &&
                        record.Status != Constants.RecordStatus.RETRY &&
                        record.Status != Constants.RecordStatus.PURGED)
                    {
                        Trace.TraceInformation("Record " + record.ID + " is in a status that cannot be reentered.");
                        return;
                    }

                    try
                    {
                        String sRequestID = Guid.NewGuid().ToString();

                        String sURL = "http://" + _settingsManager.UCCXMasterNode + ":" + _settingsManager.ApplicationSettings.UCCXApplicationPort + "/" + _settingsManager.ApplicationSettings.UCCXCallbackPrefix + "?";

                        sURL = sURL + "id=" + System.Web.HttpUtility.UrlEncode(record.ID);
                        sURL = sURL + "&dnis=" + System.Web.HttpUtility.UrlEncode(record.DNIS);
                        sURL = sURL + "&targetcsq=" + System.Web.HttpUtility.UrlEncode(record.TargetCSQ);
                        sURL = sURL + "&prompt=" + System.Web.HttpUtility.UrlEncode(record.Prompt);
                        sURL = sURL + "&sessionid=" + System.Web.HttpUtility.UrlEncode(record.SessionID);
                        sURL = sURL + "&implid=" + System.Web.HttpUtility.UrlEncode(record.ContactImplementationID);
                        sURL = sURL + "&contactid=" + System.Web.HttpUtility.UrlEncode(record.ContactID);
                        sURL = sURL + "&language=" + System.Web.HttpUtility.UrlEncode(record.Language);
                        sURL = sURL + "&customvar1=" + System.Web.HttpUtility.UrlEncode(record.CustomVar1);
                        sURL = sURL + "&customvar2=" + System.Web.HttpUtility.UrlEncode(record.CustomVar2);
                        sURL = sURL + "&customvar3=" + System.Web.HttpUtility.UrlEncode(record.CustomVar3);
                        sURL = sURL + "&customvar4=" + System.Web.HttpUtility.UrlEncode(record.CustomVar4);
                        sURL = sURL + "&customvar5=" + System.Web.HttpUtility.UrlEncode(record.CustomVar5);
                        sURL = sURL + "&requeuecode=" + System.Web.HttpUtility.UrlEncode(record.RequeueCode);
                        sURL = sURL + "&requeuecounter=" + System.Web.HttpUtility.UrlEncode(record.RequeueCounter);
                        sURL = sURL + "&reqid=" + System.Web.HttpUtility.UrlEncode(sRequestID);

                        Trace.TraceInformation("sURL -> " + sURL);

                        String sErrorDescription = String.Empty;

                        _recordManager.Update(record.ID, String.Empty, sRequestID, Constants.RecordStatus.PROCESSING, out sErrorDescription);

                        if (SendRequestToServer(sURL, record.ID))
                        {
                            Trace.TraceInformation("SendRequestToServer() returned true for record " + record.ID);
                        }
                        else
                        {
                            Trace.TraceInformation("SendRequestToServer() returned false for record " + record.ID);

                            _recordManager.Update(record.ID, String.Empty, String.Empty, Constants.RecordStatus.RETRY, out sErrorDescription);
                        }

                        Trace.TraceInformation("Record " + record.ID + " was set to " + record.Status.ToString());
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceWarning("Record " + record.ID + " got Exception: " + ex.Message + Environment.NewLine + "Stacktrace: " + ex.StackTrace);
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceWarning("Exception: " + ex.Message + Environment.NewLine + "Stacktrace: " + ex.StackTrace);
                }
            }//lock (objLockReentry)
        }
Esempio n. 8
0
 public RealtimeReportsRecordsByCSQ(CallbackRecord record)
 {
     iContactsWaiting  = 1;
     dLongestQueueTime = DateTime.Now.Subtract(record.RequestDate).TotalSeconds;
     dTotalQueueTime   = dLongestQueueTime;
 }