public Guid InsertQueue(MailMessage queueMessage)
        {
            Message     message = new Message();
            Email       email   = new Email();
            QueueMaster queue   = new QueueMaster();
            Status      status  = new Status();

            using (var queueConnection = new EmailQueueConnections())
            {
                //
                message.Emails     = message.Emails;
                message.Subject    = queueMessage.Subject;
                message.Body       = queueMessage.Body;
                message.IsBodyHtml = queueMessage.IsBodyHtml;



                queueConnection.Messages.Add(message);
                queueConnection.SaveChanges();

                email.EmailAddress = queueMessage.From.Address;
                email.MessageId    = message.Id;
                email.IsSender     = true;
                email.IsReciever   = false;

                queueConnection.Emails.Add(email);
                queueConnection.SaveChanges();

                foreach (var toEmail in queueMessage.To)
                {
                    email.MessageId    = message.Id;
                    email.EmailAddress = toEmail.Address;
                    email.IsSender     = false;
                    email.IsReciever   = true;

                    queueConnection.Emails.Add(email);
                }
                queueConnection.SaveChanges();

                queue.OrganizationId = Convert.ToInt32(CommonFunctions.GetSmtpHeaders(queueMessage)[Constant.OrganizationId]);
                queue.Id             = Guid.NewGuid();
                queue.MessageId      = message.Id;
                queue.StatusId       = 1;
                //queue.StatusId = status.Id;
                //queue.Status = "InProcess";
                queueConnection.QueueMasters.Add(queue);
                queueConnection.SaveChanges();
            }
            return(queue.Id);
        }
        public void ArchieveQueue(Guid queueId)
        {
            using (var db = new EmailQueueConnections())
            {
                var          queueMaster  = db.QueueMasters.Single(m => m.Id == queueId);
                QueueArchive queueArchive = new QueueArchive();
                queueArchive.QueueId        = queueMaster.Id;
                queueArchive.OrganizationId = queueMaster.OrganizationId;
                queueArchive.QueueOrder     = queueMaster.QueuedOrder;
                queueArchive.QueuedDate     = queueMaster.QueuedDate;
                queueArchive.ProcessedDate  = queueMaster.ProcessedDate;
                queueArchive.Attempts       = queueMaster.Attempts;
                queueArchive.Retry          = queueMaster.Retry;
                queueArchive.MessageId      = queueMaster.MessageId;
                queueArchive.Status         = queueMaster.Status;

                db.QueueArchives.Add(queueArchive);
                db.SaveChanges();

                db.QueueMasters.Remove(queueMaster);
                db.SaveChanges();
            }
        }