//public IEnumerable<IMessageBase> ReadMessages(string Queue, int MessageCount)
        //{
        //    //List<IMessageBase> iMessagesCollection = new List<IMessageBase>();

        //    storageAccount = CloudStorageAccount.Parse(this._configuration.GetConnectionString("Storage"));
        //    queueClient = storageAccount.CreateCloudQueueClient();
        //    CloudQueue queueCloud = queueClient.GetQueueReference(Queue);

        //   var messages = queueCloud.GetMessagesAsync(MessageCount).Result;

        //    foreach (var cloudMessage in messages)
        //    {

        //        Console.WriteLine(cloudMessage.AsString);
        //        var message = JsonConvert.SerializeObject(cloudMessage.AsString);

        //        AzureMessage azureMessage = JsonConvert.DeserializeObject<AzureMessage>(cloudMessage.AsString);

        //        iMessagesCollection.Add(azureMessage);


        //       // IMessage order = new IMessage();
        //        //order = JsonConvert.DeserializeObject<AzureMessageOrder>(cloudMessage.AsString);

        //        //orders.Add(order);
        //        //queueCloud.DeleteMessageAsync(cloudMessage); // Removing message form Order Queue
        //    }

        //    return iMessagesCollection;
        //}

        //IEnumerable<IMessageBase> IQueueRepo.ReadMessages(string Queue, int MessageCount)
        //{
        //    throw new NotImplementedException();
        //}

        IEnumerable <IMessageBase> IQueueRepo.ReadMessages(string Queue, int MessageCount)
        {
            List <IMessageBase> iMessagesCollection = new List <IMessageBase>();

            storageAccount = CloudStorageAccount.Parse(this._configuration.GetConnectionString("Storage"));
            queueClient    = storageAccount.CreateCloudQueueClient();
            CloudQueue queueCloud = queueClient.GetQueueReference(Queue);

            var messages = queueCloud.GetMessagesAsync(MessageCount).Result;


            foreach (var cloudMessage in messages)
            {
                Console.WriteLine(cloudMessage.AsString);
                var message = JsonConvert.SerializeObject(cloudMessage.AsString);

                AzureMessage azureMessage = JsonConvert.DeserializeObject <AzureMessage>(cloudMessage.AsString);
                azureMessage.Id    = cloudMessage.Id;
                azureMessage.PopId = cloudMessage.PopReceipt;

                iMessagesCollection.Add(azureMessage);

                #region MyRegion

                #endregion
                // IMessage order = new IMessage();
                //order = JsonConvert.DeserializeObject<AzureMessageOrder>(cloudMessage.AsString);

                //orders.Add(order);
                //queueCloud.DeleteMessageAsync(cloudMessage); // Removing message form Order Queue
            }

            return(iMessagesCollection);
        }
        public void AzureMessageEnqueueDequeueTest()
        {
            CloudQueue queue = AzureHelper.StorageAccount.CreateCloudQueueClient().GetQueueReference(AzureHelper.ServerRequestQueue);

            queue.CreateIfNotExist();
            queue.Clear();

            AzureMessage message = new KMeansJobData(Guid.NewGuid(), 1, null, 2, 10, DateTime.Now);

            queue.AddMessage(new CloudQueueMessage(message.ToBinary()));
            Thread.Sleep(2000);
            AzureMessage received = KMeansJobData.FromMessage(queue.GetMessage());

            KMeansJobData messageCast  = message as KMeansJobData,
                          receivedCast = received as KMeansJobData;

            Assert.AreEqual(messageCast.JobID, receivedCast.JobID);
            Assert.AreEqual(messageCast.K, receivedCast.K);
            Assert.AreEqual(messageCast.N, receivedCast.N);
        }
        private void ProcessQuickTransaction(AzureMessage azureMessage)
        {
            var jsonTicket  = (string)azureMessage.ExtraData["ticket"];
            var jsonPayment = (string)azureMessage.ExtraData["payment"];

            CustomerTicket  ticket   = JsonConvert.DeserializeObject <CustomerTicket>(jsonTicket);
            CustomerPayment payment  = JsonConvert.DeserializeObject <CustomerPayment>(jsonPayment);
            Customer        customer = this.customerService.GetCustomerById(new Guid(azureMessage.SenderUserId));

            ticket.IdEvent    = ticket.Event.Id;
            ticket.IdCustomer = customer.Id;

            if (MundiPaggProxy.ProcessPayment(ticket, payment.InstantBuy, payment.SecurityCode))
            {
                var ticketUpdate = this.customerTicketService.GetTicketById(ticket.Id);
                ticketUpdate.Status = ticket.Status;

                this.customerTicketService.Update(ticketUpdate);
                this.SendEmail(ticket, customer);
            }
        }
        private void ProcessTransaction(AzureMessage azureMessage)
        {
            var jsonPayment = (string)azureMessage.ExtraData["payment"];
            var jsonTicket  = (string)azureMessage.ExtraData["ticket"];

            CustomerPayment payment  = JsonConvert.DeserializeObject <CustomerPayment>(jsonPayment);
            CustomerTicket  ticket   = JsonConvert.DeserializeObject <CustomerTicket>(jsonTicket);
            Customer        customer = this.customerService.GetCustomerById(new Guid(azureMessage.SenderUserId));

            ticket.IdEvent    = ticket.Event.Id;
            ticket.IdCustomer = customer.Id;

            Guid instantBuy;

            if (MundiPaggProxy.ProcessPayment(ticket, payment, out instantBuy))
            {
                var ticketUpdate = this.customerTicketService.GetTicketById(ticket.Id);
                ticketUpdate.Status = ticket.Status;

                this.customerTicketService.Update(ticketUpdate);
                this.SendEmail(ticket, customer);

                if (payment.KeepSave)
                {
                    if (!customer.PaymentTokenizer.Any(x => x.Token == instantBuy.ToString()))
                    {
                        var customerToken = new CustomerPaymentTokenizer()
                        {
                            Id           = Guid.NewGuid(),
                            IdCustomer   = customer.Id,
                            SecurityCode = payment.SecurityCode,
                            Token        = instantBuy.ToString()
                        };

                        customer.PaymentTokenizer.Add(customerToken);
                        this.customerService.Update(customer);
                    }
                }
            }
        }