Example #1
0
        private static void Main(string[] args)
        {
            string messageId = null;

            MessageQueue myQueue = new MessageQueue(@".\Private$\CallDispositionQueue");
            var result = new ProcessMessageToCubs();
            var aknowledge = new MessageAcknowledement();
            var messageInTheQueue = new CountMessege();
            var pm = new PoisonMessage();

            messageInTheQueue.Count(myQueue);
            messageId = result.ReceiveMessage();

            //message acknowledgement.
            if(messageId != null)
            {
                aknowledge.ReceiveAcknowledgment(messageId, @".\Private$\MessageAcknowledgeQueue");

            }
        }
        //Receive message from CallDispositionQueue
        public string ReceiveMessage()
        {
            bool valid_Message = false;
            string returnMessageId = null;
            Message message = new Message();
            
            //connect to the queue on the local path
            MessageQueue myQueue = new MessageQueue(@".\Private$\CallDispositionQueue");
            myQueue.MessageReadPropertyFilter.CorrelationId = true;

            //TODO: Message process to Cubs/set a connection.

            try
            {
                myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(MSMQ.Contracts.CallDisposition) });
                message = myQueue.Peek(TimeSpan.FromSeconds(10.0));
                CallDisposition cd = (CallDisposition)message.Body;

                if (message.Body == (CallDisposition)message.Body)
                {
                    message = myQueue.Receive(TimeSpan.FromSeconds(10.0));
                    Console.WriteLine("Message Received.");
                    valid_Message = true;

                    _id = cd.DispositionId;
                    Console.WriteLine("Disposition ID is: {0}", _id);
                    Console.WriteLine("CubsActNum  is: {0}", cd.CubsActNum);
                    Console.WriteLine("PhoneNumber is: {0}", cd.PhoneNumber);
                    Console.WriteLine("CallDateStr is: {0}", cd.CallDateStr);
                    Console.WriteLine("CallStartStr is: {0}", cd.CallStartStr);
                    Console.WriteLine("Agent Initials is: {0}", cd.Initials);
                    Console.WriteLine("Logon is: {0}", cd.Logon);
                    Console.WriteLine("CampaignType is: {0}", cd.CampaignType);
                    Console.WriteLine("Action Code is: {0}", cd.ActionCode);
                }

                returnMessageId = message.Id;
            }
            catch (MessageQueueException e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine("There is no messages in the queue right now");
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (NullReferenceException nx)
            {
                Console.WriteLine(nx.Message);
            }
            
            if (valid_Message)
            {
                //update the row in the database when the message is valid. 
                const string query = "DECLARE @TimeStamp DATETIME = GETDATE();" +
                                        "UPDATE [CallLogs].[DialConnect].[CallDispositions] " +
                                        "SET [SentToCubsDT] = @TimeStamp" + " " +
                                        "WHERE [Id] = @DispositionId";

                using (SqlConnection conn = new SqlConnection("Data Source=stlbisql-t01;Initial Catalog=CallLogs;Integrated Security=True"))
                {
                    var sqlcmd = new SqlCommand(query, conn);
                    sqlcmd.Parameters.Add("@DispositionId", SqlDbType.Int);
                    sqlcmd.Parameters["@DispositionId"].Value = _id;

                    try
                    {
                        conn.Open();
                        sqlcmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Console.WriteLine("Message Failed to update the SentToCubsDT");
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
            else
            {
                Console.WriteLine("Message Failed to Process");
                PoisonMessage ps = new PoisonMessage();                
                ps.SentToPoisonMessage(message);
            }
            
            return returnMessageId;
        }