public EmailQueue GetEmailQueueByID(int id)
        {
            EmailQueue result = null;

            using (IDbConnection conn = Connection)
            {
                string sql = string.Format("select * from EmailQueues where ID = {0}", id);

                try
                {
                    conn.Open();

                    result = conn.Query <EmailQueue>(sql).AsQueryable().FirstOrDefault();
                }
                catch (SqlException sqlEx)
                {
                    Logger.ErrorException(sqlEx);
                }
                catch (Exception ex)
                {
                    Logger.ErrorException(ex);
                }
                finally
                {
                    if (conn != null && conn.State != ConnectionState.Closed)
                    {
                        conn.Close();
                    }
                }
            }

            return(result);
        }
Beispiel #2
0
 public Task <CommunicationResponse> Handle(SendEmailRequest Request, CancellationToken cancellationToken)
 {
     try
     {
         var Email = new EmailQueue()
         {
             EmailType   = Request.EmailType,
             Recepient   = Request.Recepient,
             Attachment  = Request.Attachment,
             BCC         = Request.BCC,
             CC          = Request.CC,
             Body        = Request.Body,
             Status      = Convert.ToInt16(MessageStatusType.Initialize),
             Subject     = Request.Subject,
             CreatedDate = DateTime.UtcNow
         };
         _MessageRepository.Add(Email);
         return(Task.FromResult(new CommunicationResponse {
             ErrorCode = 101, ReturnMsg = "Message sent."
         }));
     }
     catch (Exception ex)
     {
         return(Task.FromResult(new CommunicationResponse {
             ErrorCode = 99, ReturnMsg = "Message not sent."
         }));
     }
 }
Beispiel #3
0
        private EmailQueue GetEmail(FormType type, string jsonData, string employeeEmail, string employeeName)
        {
            var email = new EmailQueue()
            {
                From         = "",
                FromName     = "Hệ Thống",
                To           = employeeEmail,
                ToName       = employeeName,
                Subject      = "",
                CreatedBy    = "system",
                Created      = DateTime.Now,
                RecordActive = true,
            };
            var    data             = new object();
            string resourceName     = string.Empty;
            string templateFilePath = string.Empty;

            switch (type)
            {
            case FormType.Admission:
                email.Subject = "Đăng kí nhập học";
                data          = SerializeUtilities.Deserialize <AdmissionData>(jsonData);
                resourceName  = "Kent.Business.Core.EmailTemplate.Admission.cshtml";
                break;

            case FormType.Advisory:
                email.Subject = "Đăng kí tư vấn";
                data          = SerializeUtilities.Deserialize <AdvisoryData>(jsonData);
                resourceName  = "Kent.Business.Core.EmailTemplate.Advisory.cshtml";
                break;

            case FormType.Alumni:
                email.Subject = "Thông tin cựu sinh viên";
                data          = SerializeUtilities.Deserialize <AlumniData>(jsonData);
                resourceName  = "Kent.Business.Core.EmailTemplate.Alumni.cshtml";
                break;

            case FormType.Contact:
                email.Subject = "Liên hệ";
                data          = SerializeUtilities.Deserialize <ContactData>(jsonData);
                resourceName  = "Kent.Business.Core.EmailTemplate.Contact.cshtml";
                break;

            case FormType.Visit:
                email.Subject = "Đăng kí tham quan";
                data          = SerializeUtilities.Deserialize <VisitSchoolData>(jsonData);
                resourceName  = "Kent.Business.Core.EmailTemplate.VisitSchool.cshtml";
                break;
            }
            var assembly = Assembly.GetExecutingAssembly();

            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                using (StreamReader reader = new StreamReader(stream))
                {
                    string templateStr = reader.ReadToEnd();
                    email.Body = Engine.Razor.RunCompile(templateStr, "templateKey", null, data);
                }

            return(email);
        }
Beispiel #4
0
        public ActionResult ViewEmail(int emailid)
        {
            var email = CurrentDatabase.EmailQueues.SingleOrDefault(ee => ee.Id == emailid);

            if (email == null)
            {
                return(Content("no email found"));
            }

            var curruser = CurrentDatabase.LoadPersonById(Util.UserPeopleId ?? 0);

            if (curruser == null)
            {
                return(Content("no user"));
            }

            if (User.IsInRole("Admin") ||
                User.IsInRole("ManageEmails") ||
                email.FromAddr == curruser.EmailAddress ||
                email.QueuedBy == curruser.PeopleId ||
                email.EmailQueueTos.Any(et => et.PeopleId == curruser.PeopleId))
            {
                var em = new EmailQueue
                {
                    Subject = email.Subject,
                    Body    = Regex.Replace(email.Body, "({first}|{tracklinks}|{track})", "", RegexOptions.IgnoreCase)
                };
                return(View("Emails/View", em));
            }
            return(Content("not authorized"));
        }
Beispiel #5
0
        private void CreateEmailQueue(Form formData, FormType type)
        {
            List <Employees> listEmployees = _employeesService.GetList();

            try
            {
                List <EmailQueue> emails = new List <EmailQueue>();
                foreach (var employees in listEmployees)
                {
                    EmailQueue newEmail = GetEmail(type, formData.Data, employees.Email, employees.Name);

                    int addToQueue = _emailQueueService.AddNewEmail(newEmail);
                    if (addToQueue > 0)
                    {
                        emails.Add(newEmail);
                    }
                }

                TaskSentMail(emails);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex);
            }
        }
Beispiel #6
0
        public List <long> Save(CoreEmailDto emailQueueDto)
        {
            using (var dbContext = MailerContext)
            {
                var savedEmailIds = new List <long>();
                using (var trans = new TransactionScope())
                {
                    var emailMessage = new EmailMessage
                    {
                        FromAddress     = emailQueueDto.From.EmailAddress,
                        FromPerson      = emailQueueDto.From.DisplayName,
                        SubjectTemplate = emailQueueDto.SubjectTemplate,
                        BodyTemplate    = emailQueueDto.BodyTemplate,
                        Host            = emailQueueDto.Host,
                        Port            = emailQueueDto.Port
                    };

                    dbContext.EmailMessages.Add(emailMessage);
                    dbContext.SaveChanges();

                    var newEmailMessageId = emailMessage.EmailMessageId;
                    foreach (var receiverMail in emailQueueDto.To)
                    {
                        var emailQueue = new EmailQueue
                        {
                            EmailMessageId         = newEmailMessageId,
                            EmailStatus            = (byte)EmailQueueStatus.Unprocessed,
                            EmailType              = emailQueueDto.EmailType,
                            TriesLeft              = emailQueueDto.TriesLeft,
                            AvailableToSendFromUtc = DateTime.UtcNow,
                            CreatedOn              = DateTime.UtcNow,
                            CreatedBy              = "System", // TODO change that
                            ToEmailAddress         = receiverMail.EmailAddress,
                            ToPerson = receiverMail.DisplayName
                        };

                        var replacements = new List <EmailReplacement>();
                        foreach (var replacementDto in emailQueue.EmailReplacements)
                        {
                            var replacement = new EmailReplacement
                            {
                                Token = replacementDto.Token,
                                Value = replacementDto.Value
                            };
                            replacements.Add(replacement);
                        }
                        replacements.ForEach(x => emailQueue.EmailReplacements.Add(x));

                        dbContext.EmailQueues.Add(emailQueue);
                        dbContext.SaveChanges();

                        savedEmailIds.Add(emailQueue.EmailQueueId);
                    }

                    trans.Complete();
                }

                return(savedEmailIds);
            }
        }
Beispiel #7
0
        public ReturnObject CreatePendingEmail(TransferData transferData)
        {
            logger.Info("Create pending email");
            string address = transferData.To;
            string toEmail = _walletBusiness.FindEmailByAddressAndNetworkName(address, transferData.Symbol());

            if (toEmail == null)
            {
                return new ReturnObject
                       {
                           Status  = Status.STATUS_ERROR,
                           Message = "Cannot find email address of user!!"
                       }
            }
            ;

            var email = new EmailQueue
            {
                ToEmail   = toEmail,
                SignInUrl = EmailConfig.SIGN_IN_URL,
                Amount    = transferData.Amount(),
                Template  = EmailTemplate.Received,
//                SentOrReceived = EmailConfig.SentOrReceived_Received,
                NetworkName  = transferData.Symbol(),
                Subject      = EmailConfig.SUBJECT_SENT_OR_RECEIVED,
                Status       = Status.STATUS_PENDING,
                IsProcessing = 0,
                Version      = 0
            };

            var result = _sendMailBusiness.CreateEmailQueueAsync(email);

            return(result.Result);
        }
    }
        private MessageContext prepareMessage(EmailQueue email)
        {
            context             = new MessageContext();
            context.SMTPSetting = email.SiteSMTP;
            context.domain      = email;

            context.MailMessage.To.Add(GetValidEmailID(email.TO));
            context.MailMessage.From = new MailAddress(email.From, string.Empty, System.Text.Encoding.UTF8);

            if (!String.IsNullOrEmpty(email.CC))
            {
                context.MailMessage.CC.Add(GetValidEmailID(email.CC));
            }
            if (!String.IsNullOrEmpty(email.BCC))
            {
                context.MailMessage.Bcc.Add(GetValidEmailID(email.BCC));
            }
            if (!String.IsNullOrEmpty(email.ReplyTO))
            {
                context.MailMessage.ReplyToList.Add(new MailAddress(email.ReplyTO));
            }

            context.MailMessage.Subject = email.Subject;
            ContentType   c = new ContentType(MediaTypeNames.Text.Html);
            AlternateView oAlternateView = AlternateView.CreateAlternateViewFromString(email.EmailContent, c);

            context.MailMessage.AlternateViews.Add(oAlternateView);

            context.MailMessage.Body     = email.EmailContent;
            context.MailMessage.Priority = MailPriority.High;

            return(context);
        }
Beispiel #9
0
 static void Main(string[] args)
 {
     EmailQueue = new EmailQueue();
     Addfila();
     Console.ReadLine();
     Processar();
 }
        /// <summary>
        /// CreateDataEmail
        /// </summary>
        /// <param name="subject"></param>
        /// <param name="email"></param>
        /// <param name="amount"></param>
        /// <param name="transactionId"></param>
        /// <param name="template"></param>
        /// <param name="networkName"></param>
        /// <param name="smartcontractRepositoryFactory"></param>
        /// <param name="isInnerTransaction"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public static async Task CreateDataEmail(string subject, string email, decimal amount, string transactionId,
                                                 EmailTemplate template, string networkName, ISmartContractRepositoryFactory smartcontractRepositoryFactory,
                                                 bool isInnerTransaction)
        {
            try
            {
                var currentTime      = CommonHelper.GetUnixTimestamp();
                var sendMailBusiness = new SendMailBusiness(smartcontractRepositoryFactory, false);

                if (email == null)
                {
                    return;
                }
                var emailQueue = new EmailQueue
                {
                    Id                 = CommonHelper.GenerateUuid(),
                    ToEmail            = email,
                    Template           = template,
                    Subject            = subject,
                    NetworkName        = networkName,
                    IsInnerTransaction = isInnerTransaction,
                    Amount             = amount,
                    TransactionId      = transactionId,
                    Status             = Status.STATUS_PENDING,
                    CreatedAt          = currentTime,
                    UpdatedAt          = currentTime
                };
                await sendMailBusiness.CreateEmailQueueAsync(emailQueue);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        private string GetReceivedAddress(EmailQueue emailQueue)
        {
            try
            {
                if (emailQueue.IsInnerTransaction == false)
                {
                    return(GetTransaction(emailQueue).ToAddress);
                }
                using (var internalTransactionsRepository = new InternalTransactionsRepository(_connectionDb))
                {
                    var transaction = internalTransactionsRepository.FindById(emailQueue.TransactionId);

                    using (var userRepository = new UserRepository(_connectionDb))
                    {
                        var user = userRepository.FindById(transaction.ReceiverUserId);
                        return(user.mem_id);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #12
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            using (var sd = UserManager.GetSecureData(false)){
                using (var dm = DataManager.Create(sd.DataConnectionSpec)){
                    var resultID = saveData(false);

                    // mark it as submitted
                    var dt = dm.Read("select feedback_result_group_id from feedback_result where feedback_result_id = :frid", new DataParameters(":frid", resultID, DbType.Int32));
                    if (dt.Rows.Count > 0)
                    {
                        var dr = dt.Rows[0];

                        dm.Write(@"
update
    feedback_result_group
set
    modified_date = :now1,
    modified_by = :who1,
    submitted_date = :now2
where
    feedback_result_group_id = :frid
", new DataParameters(":now1", DateTime.UtcNow, DbType.DateTime2,
                      ":who1", sd.CooperatorID, DbType.Int32,
                      ":now2", DateTime.UtcNow, DbType.DateTime2,
                      ":frid", Toolkit.ToInt32(dr["feedback_result_group_id"], -1), DbType.Int32));
                    }

                    // cancel any reminder emails
                    EmailQueue.DequeueEmail("feedback_result|%", resultID);
                }
            }

            Master.FlashMessage("Your data has been submitted for review.  Thank you!", "~/feedback/participantdefault.aspx", null);
        }
Beispiel #13
0
        public static async Task SendAsync(string tenant, Uri baseUri, EmailViewModel model)
        {
            var processor = EmailProcessor.GetDefault(tenant);

            if (processor == null)
            {
                throw new EmailException(I18N.NoEmailProcessorDefined);
            }

            string attachmentPath = ExportHelper.Export(tenant, baseUri, "pdf", model.Html);

            attachmentPath = PathMapper.MapPath(attachmentPath);

            var email = new EmailQueue
            {
                AddedOn     = DateTimeOffset.UtcNow,
                SendOn      = DateTimeOffset.UtcNow,
                SendTo      = model.SendTo,
                FromName    = processor.Config.FromName,
                ReplyTo     = processor.Config.FromEmail,
                Subject     = model.Subject,
                Message     = model.Message,
                Attachments = attachmentPath
            };

            var manager = new MailQueueManager(tenant, email);

            await manager.AddAsync().ConfigureAwait(false);

            await manager.ProcessQueueAsync(processor, true).ConfigureAwait(false);
        }
Beispiel #14
0
        private async Task SaveFailedEmailToQueue(string email, string subject, string message, int?companyId = default)
        {
            try
            {
                var item = new EmailQueue()
                {
                    EmailAddress = email,
                    Subject      = subject,
                    Body         = message
                };
                using (var serviceScope = _serviceScopeFactory.CreateScope())
                {
                    AppDbContext context = serviceScope.ServiceProvider.GetRequiredService <AppDbContext>();

                    if (companyId.HasValue)
                    {
                        item.CompanyId = companyId.Value;
                        context.SetCompanyID(item.CompanyId);
                    }
                    context.Add(item);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "SaveFailedEmailToQueue");
            }
        }
Beispiel #15
0
        protected void Application_Start(object sender, EventArgs e)
        {
            // wipe out all caches to make sure an app restart causes a clean slate
            CacheManager.ClearAll();


            // clean up the export folder so it doesn't get huge over time
            // this will also alert us up front if there's problems being able to write to the exports folder
            // instead of exports just failing whenever they are requested
            string exportFolder = Server.MapPath("~/uploads/exports/");

            if (Directory.Exists(exportFolder))
            {
                foreach (string f in Directory.GetFiles(exportFolder))
                {
                    if (!f.ToLower().EndsWith("placeholder.txt"))
                    {
                        File.Delete(f);
                    }
                }
            }

            // look up the version # of the gringlobal.web.dll so we can show it on the website
            var path = Server.MapPath("~/bin/GrinGlobal.Web.dll");

            if (File.Exists(path))
            {
                var fvi = FileVersionInfo.GetVersionInfo(path);
                Application["VERSION"] = fvi.FileVersion;
            }


            // begin monitoring for emails to send
            EmailQueue.BeginMonitoring();
        }
Beispiel #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="objectID"></param>
        /// <param name="sender"></param>
        /// <param name="subject"></param>
        /// <returns></returns>
        public Email GetNextEmail(UUID objectID, string sender, string subject)
        {
            EmailQueue queue = m_MailQueues.GetOrAddIfNotExists(objectID, delegate() { return(new EmailQueue()); });

            queue.m_LastCall = DateTime.Now;

            // Hopefully this isn't too time consuming.  If it is, we can always push it into a worker thread.
            DateTime now = DateTime.Now;

            foreach (UUID uuid in m_MailQueues.Keys)
            {
                if (m_MailQueues.TryGetValue(uuid, out queue))
                {
                    if ((now - queue.m_LastCall) > m_QueueTimeout)
                    {
                        m_MailQueues.Remove(uuid);
                    }
                }
            }

            queue = m_MailQueues.GetOrAddIfNotExists(objectID, delegate() { return(new EmailQueue()); });
            return(queue.m_Queue.RemoveMatch(delegate(Email m)
            {
                return ((sender == null || sender.Equals("") || sender.Equals(m.sender)) &&
                        (subject == null || subject.Equals("") || subject.Equals(m.subject)));
            }));
        }
        public ActionResult ViewEmail(int emailid)
        {
            var email = DbUtil.Db.EmailQueues.SingleOrDefault(ee => ee.Id == emailid);

            if (email == null)
            {
                return(Content("no email found"));
            }
            var curruser = DbUtil.Db.LoadPersonById(Util.UserPeopleId ?? 0);

            if (curruser == null)
            {
                return(Content("no user"));
            }
            if (User.IsInRole("Admin") ||
                User.IsInRole("ManageEmails") ||
                email.FromAddr == curruser.EmailAddress ||
                email.QueuedBy == curruser.PeopleId ||
                email.EmailQueueTos.Any(et => et.PeopleId == curruser.PeopleId))
            {
                var em = new EmailQueue
                {
                    Subject = email.Subject,
                    Body    = email.Body.Replace("{track}", "", true).Replace("{first}", "", true)
                };
                return(View("Emails/View", em));
            }
            return(Content("not authorized"));
        }
Beispiel #18
0
        public async Task <bool> RemindAsync(string tenant, ReminderMessage message)
        {
            await Task.Delay(0).ConfigureAwait(false);

            string sendTo   = message.Contact.EmailAddresses;
            string timezone = message.Contact.TimeZone.Or(message.Event.TimeZone);

            if (string.IsNullOrWhiteSpace(sendTo))
            {
                return(false);
            }

            int alarm = message.Event.Alarm ?? 0;

            if (alarm == 0)
            {
                return(false);
            }

            string template  = Configs.GetNotificationEmailTemplate(tenant);
            string eventDate = TimeZoneInfo.ConvertTime(DateTime.UtcNow.AddMinutes(alarm), TimeZoneInfo.FindSystemTimeZoneById(timezone)).Date.ToString("D");
            string startTime = TimeZoneInfo.ConvertTime(message.Event.StartsAt, TimeZoneInfo.FindSystemTimeZoneById(timezone)).ToString("t");
            string endTime   = TimeZoneInfo.ConvertTime(message.Event.EndsOn, TimeZoneInfo.FindSystemTimeZoneById(timezone)).ToString("t");

            template = template.Replace("{Name}", message.Event.Name);
            template = template.Replace("{StartTime}", startTime);
            template = template.Replace("{EndTime}", endTime);
            template = template.Replace("{Date}", eventDate);
            template = template.Replace("{Location}", message.Event.Location);
            template = template.Replace("{Note}", message.Event.Note);


            var processor = EmailProcessor.GetDefault(tenant);

            if (processor == null)
            {
                return(false);
            }

            var email = new EmailQueue
            {
                AddedOn     = DateTimeOffset.UtcNow,
                SendOn      = DateTimeOffset.UtcNow,
                SendTo      = sendTo,
                FromName    = processor.Config.FromName,
                ReplyTo     = processor.Config.FromEmail,
                ReplyToName = processor.Config.FromName,
                Subject     = string.Format(I18N.CalendarNotificationEmailSubject, message.Event.Name, startTime),
                Message     = template
            };

            var manager = new MailQueueManager(tenant, email);
            await manager.AddAsync().ConfigureAwait(false);

            await manager.ProcessQueueAsync(processor).ConfigureAwait(false);

            return(true);
        }
Beispiel #19
0
 // Method to notify the Trainer of any Task completion.
 public bool Trainer_Notification(int id, bool done)
 {
     try
     {
         Task       data    = taskrepo.ReadById(id);
         Users      trainee = usersrepo.ReadById(data.TraineeId);
         Users      trainer = usersrepo.ReadById(data.TrainerId);
         EmailQueue email   = new EmailQueue();
         if (done)
         {
             email.ToAddress   = trainer.Email;
             email.FromAddress = "*****@*****.**";
             email.Subject     = trainee.Name + " Task Update";
             email.Body        = string.Format("Dear "
                                               + trainer.Name
                                               + ",<BR><BR>         The Task that you assigned to " + trainee.Name +
                                               " has been completed. Kindly check whether it is done properly or not.<BR><BR>Sincerely,<BR>Clanstech Team.");
             int r = emailrepo.Insert(email);
             if (r >= 1)
             {
                 return(true);
             }
         }
         else
         {
             email.ToAddress   = trainer.Email;
             email.FromAddress = "*****@*****.**";
             email.Subject     = trainee.Name + " Task Update";
             email.Body        = string.Format("Dear "
                                               + trainer.Name
                                               + ",<BR><BR>         The Task that you assigned to " + trainee.Name +
                                               " is not completed on time. Kindly take appropriate action.<BR><BR>Sincerely,<BR>Clanstech Team.");
             emailrepo.Insert(email);
         }
     }
     catch (Exception ex)
     {
         MethodBase method    = MethodBase.GetCurrentMethod();
         Exceptions exception = new Exceptions
         {
             Number  = ex.HResult.ToString(),
             Message = ex.Message,
             Method  = method.Name,
             Url     = System.Web.HttpContext.Current.Request.Url.AbsoluteUri
         };
         int r = exceptionrepo.Exception_Create(exception);
         if (r == 0)
         {
             exceptionrepo.Exception_InsertInLogFile(exception);
         }
         if (constr.State != ConnectionState.Open)
         {
             constr.Close();
             constr.Open();
         }
     }
     return(false);
 }
Beispiel #20
0
        public static EmailQueue EmailQueue(int?counter)
        {
            var rtValue = new EmailQueue();

            rtValue.Text             = "Text" + counter.Extra();
            rtValue.Order            = new Order();
            rtValue.NotificationType = Purchasing.Core.Domain.EmailPreferences.NotificationTypes.PerEvent;

            return(rtValue);
        }
        public static EmailQueue EmailQueue(int? counter)
        {
            var rtValue = new EmailQueue();
            rtValue.Student = new Student();
            rtValue.Template = new Template();
            rtValue.Subject = "Subject" + counter.Extra();
            rtValue.Body = "Body" + counter.Extra();

            return rtValue;
        }
Beispiel #22
0
        public ActionResult Delete(int id)
        {
            DBEntities e   = COREobject.i.Context;
            EmailQueue row = e.EmailQueueItems.Single(m => m.Id == id);

            e.EmailQueueItems.Remove(row);
            e.SaveChanges();

            return(RedirectToRoute("Hermes", new { @action = "Index" }));
        }
Beispiel #23
0
 public bool Save(EmailQueue email)
 {
     if (email.id > 0)
     {
         return(_emailQueueDao.Update(email) > 0);
     }
     else
     {
         return(_emailQueueDao.Insert(email) > 0);
     }
 }
        static public void Send(string to, string vesselName, string subject, string body, string attachmentFileName)
        {
            EmailItem item = new EmailItem(FromEmailAddress, to, vesselName, subject, body, attachmentFileName);

            lock (_lock)
            {
                EmailQueue.Add(item);
            }

            // Try sending email 3 seconds from now.
            _timer.Change(3000, 3000);
        }
Beispiel #25
0
        private void SendWarningHtml(string lang, int pid, string pname, string email, int uid)
        {
            string     url   = string.Format("{0}/plant/warningfilter/?pid={1}&uid={2}", domainUrl, pid, uid);
            string     html  = Tool.LoadContent(url, lang);
            EmailQueue queue = new EmailQueue();

            queue.title    = pname + " Warning Report";
            queue.content  = html;
            queue.receiver = email;
            queue.state    = 0;
            queue.sender   = "*****@*****.**";
            EmailQueueService.GetInstance().Save(queue);
        }
        public async Task <ReturnObject> SendEmail(EmailQueue emailQueue, string apiUrl, string apiKey, string from,
                                                   string fromName)
        {
            string emailBody = CreateEmailBody(emailQueue);

            if (emailBody == null)
            {
                return new ReturnObject
                       {
                           Status  = Status.STATUS_ERROR,
                           Message = "Cannot find template"
                       }
            }
            ;
            var values = new NameValueCollection
            {
                { "apikey", apiKey },
                { "from", from },
                { "fromName", fromName },
                { "to", emailQueue.ToEmail },
                { "subject", emailQueue.Subject },
                { "bodyHtml", emailBody },
                { "isTransactional", "true" }
            };

            using (var client = new WebClient())
            {
                try
                {
                    byte[] apiResponse = client.UploadValues(apiUrl, values);

                    var result = JsonHelper.DeserializeObject <JObject>(Encoding.UTF8.GetString(apiResponse));

                    var status = (bool)result["success"] ? Status.STATUS_SUCCESS : Status.STATUS_ERROR;

                    return(new ReturnObject
                    {
                        Status = status,
                        Message = Encoding.UTF8.GetString(apiResponse)
                    });
                }
                catch (Exception ex)
                {
                    return(new ReturnObject
                    {
                        Status = Status.STATUS_ERROR,
                        Message = ex.Message
                    });
                }
            }
        }
        public ActionResult <ReturnObject> GetWalletReport([FromBody] HistoryReport walletReport)
        {
            try
            {
                //  var _history = _walletBusiness.GetHistory(walletSearch.wallet, 1, 3, new string[] { nameof(BlockchainTransaction.CreatedAt) });
                var userModel = (User)RouteData.Values[ParseDataKeyApi.KEY_PASS_DATA_USER_MODEL];
                // CommonHelper.GetUnixTimestamp
                DateTime dateForButton = DateTime.Now.AddDays(-1 * walletReport.DayTime);
                var      _searchTime   = UnixTimestamp.ToUnixTimestamp(dateForButton);
                int      numberData;
                var      history = _walletBusiness.GetHistory(out numberData, userModel.Id, walletReport.NetworkName, -1, -1, null, null, _searchTime);
                if (walletReport.Email != null)
                {
                    string fileName = userModel.Id + UnixTimestamp.ToUnixTimestamp(DateTime.Now) + ".csv";
                    using (StreamWriter sw = new StreamWriter(System.IO.File.Open(AppSettingHelper.GetReportStoreUrl() + fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)))
                    {
                        var csv = new CsvWriter(sw);
                        csv.WriteRecords(history);
                    }

                    EmailQueue email = new EmailQueue()
                    {
                        ToEmail     = walletReport.Email,
                        NetworkName = walletReport.NetworkName,
                        // Amount = addedBalance,
                        Template     = EmailTemplate.Report,
                        Subject      = EmailConfig.SUBJECT_REPORT,
                        SendFileList = fileName
                                       //							Content = networkName + "+" + addedBlance
                    };
                    _sendMailBusiness.CreateEmailQueueAsync(email);
                }
                //  Console.WriteLine("csv " + csv);
                return(new ReturnObject()
                {
                    Status = Status.STATUS_SUCCESS,
                    Data = JsonHelper.SerializeObject(history),
                    Message = numberData.ToString()
                });
            }
            catch (Exception e)
            {
                return(new ReturnObject()
                {
                    Status = Status.STATUS_ERROR,
                    Message = e.Message
                });
            }

            //  return null;
        }
Beispiel #28
0
        public static async Task <bool> SendAsync(string tenant, EmailViewModel model)
        {
            var processor = EmailProcessor.GetDefault(tenant);

            if (processor == null)
            {
                return(false);
            }

            foreach (var contactId in model.Contacts)
            {
                var contact = await DAL.Contacts.GetContactAsync(tenant, model.UserId, contactId).ConfigureAwait(false);

                if (string.IsNullOrWhiteSpace(contact?.EmailAddresses) || !contact.EmailAddresses.Split(',').Any())
                {
                    continue;
                }

                //Only select the first email address
                string emailAddress = contact.EmailAddresses.Split(',').Select(x => x.Trim()).FirstOrDefault(IsValidEmail);

                if (string.IsNullOrWhiteSpace(emailAddress))
                {
                    continue;
                }

                string message = model.Message;
                message = MessageParser.ParseMessage(message, contact);

                var email = new EmailQueue
                {
                    AddedOn     = DateTimeOffset.UtcNow,
                    SendOn      = DateTimeOffset.UtcNow,
                    SendTo      = emailAddress,
                    FromName    = processor.Config.FromName,
                    ReplyTo     = processor.Config.FromEmail,
                    ReplyToName = processor.Config.FromName,
                    Subject     = model.Subject,
                    Message     = message
                };

                var manager = new MailQueueManager(tenant, email);
                await manager.AddAsync().ConfigureAwait(false);

                await manager.ProcessQueueAsync(processor).ConfigureAwait(false);
            }

            return(true);
        }
        public async Task <CommunicationResponse> Handle(SendEmailRequest Request, CancellationToken cancellationToken)
        {
            try
            {
                var Email = new EmailQueue()
                {
                    EmailType   = Request.EmailType,
                    Recepient   = Request.Recepient,
                    Attachment  = Request.Attachment,
                    BCC         = Request.BCC,
                    CC          = Request.CC,
                    Body        = Request.Body,
                    Status      = Convert.ToInt16(MessageStatusType.Initialize),
                    Subject     = Request.Subject,
                    CreatedDate = DateTime.UtcNow
                };
                _MessageRepository.Add(Email);
                Email.InQueueMessage();
                _MessageRepository.Update(Email);
                IQueryable Result = await _MessageConfiguration.GetAPIConfigurationAsync(1, 2);

                foreach (CommunicationProviderList Provider in Result)
                {
                    string Response = await _MessageService.SendEmailAsync(Email.Recepient, Email.Subject, Email.BCC, Email.CC, Email.Body, Provider.SendURL, Provider.UserID, Provider.Password, Convert.ToInt16(Provider.SenderID));

                    Email.BCC = Response;
                    CopyClass.CopyObject(Provider, ref _GetDataForParsingAPI);
                    _GenerateResponse = _WebApiParseResponse.ParseResponseViaRegex(Response, _GetDataForParsingAPI);
                    if (_GenerateResponse.Status == enTransactionStatus.Success)
                    {
                        Email.SentMessage();
                        _MessageRepository.Update(Email);
                        return(await Task.FromResult(new CommunicationResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.EMailSuccessMessage }));
                    }
                    else
                    {
                        continue;
                    }
                }
                Email.FailMessage();
                _MessageRepository.Update(Email);
                return(await Task.FromResult(new CommunicationResponse { ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.EmailFailMessage }));
            }
            catch (Exception ex)
            {
                return(await Task.FromResult(new CommunicationResponse { ReturnCode = enResponseCode.InternalError, ReturnMsg = EnResponseMessage.EmailExceptionMessage }));
            }
        }
        private static string CreateEmailBody(EmailQueue emailQueue)
        {
            try
            {
                string body;

                var directory = Directory.GetParent(Directory.GetCurrentDirectory()) +
                                "/MailTemplate/BodyEmail.html";


                var builder = new BodyBuilder();
                using (var sourceReader = File.OpenText(directory))
                {
                    builder.HtmlBody = sourceReader.ReadToEnd();
                }

                switch (emailQueue.Template)
                {
                case 1:
                    body = string.Format(builder.HtmlBody,
                                         emailQueue.LinkEmail,
                                         "https://i.imgur.com/8idVPQD.png",
                                         "https://i.imgur.com/ooQLCzZ.png",
                                         "Your account is being locked. Verify email to activate your account."
                                         );
                    break;

                case 2:
                    body = string.Format(builder.HtmlBody,
                                         emailQueue.LinkEmail,
                                         "https://i.imgur.com/8idVPQD.png",
                                         "https://i.imgur.com/ooQLCzZ.png",
                                         "In order to start using your VakaxaId account, you need to confirm your email address."
                                         );
                    break;

                default:
                    return(null);
                }

                return(body);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }
Beispiel #31
0
 void IEmailService.DequeueEmail(EmailQueue email, IEnumerable <EmailAttachment> attachments)
 {
     try
     {
         _unitOfWork.EmailLogRepository.Add(_mapper.Map <EmailQueue, EmailLog>(email));
         if (attachments.Any())
         {
             _unitOfWork.EmailAttachmentRepository.Delete(attachments);
         }
         _unitOfWork.EmailQueueRepository.Delete(email);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Beispiel #32
0
        public void Add()
        {

            if (this.IsEnabled())
            {
                EmailQueue queue = new EmailQueue
                {
                    Subject = this.Subject,
                    SendTo = this.SendTo,
                    Attachments = this.Attachments,
                    Message = this.Message,
                    AddedOn = DateTime.UtcNow
                };

                Database.MailQueue.AddToQueue(this.Catalog, queue);
            }
        }
Beispiel #33
0
 private void SendEmail(string email)
 {
     Maticsoft.Model.MailConfig model = new Maticsoft.BLL.MailConfig().GetModel();
     WebSiteSet set = new WebSiteSet(ApplicationKeyType.Shop);
     string webName = set.WebName;
     string str2 = string.Format("您对商品【{0}】的咨询有了新的回复,请及时查看!", webName);
     EmailQueue queue = new EmailQueue {
         EmailTo = model.Mailaddress,
         EmailSubject = string.Format("{0}回复通知", webName),
         EmailFrom = model.Mailaddress,
         EmailBody = str2,
         EmailPriority = 0,
         IsBodyHtml = false,
         NextTryTime = DateTime.Now
     };
     EmailManage.PushQueue(queue);
 }
Beispiel #34
0
 /// <summary>
 /// Transfer editable values from source to destination
 /// </summary>
 private static void TransferValues(EmailQueue source, EmailQueue destination)
 {
     destination.Body = source.Body;
     destination.Immediate = source.Immediate;
     destination.Pending = source.Pending;
     destination.Subject = source.Subject;
 }
        public ActionResult EmailStudents(EmailStudentsViewModel emailStudents, HttpPostedFileBase file)
        {
            ModelState.Clear();
            // get the template type
            var templateType = emailStudents.TemplateType;

            //if (templateType == null) // It looks like this can be optional. The two mass Email Templates don't look like they are actually used later on
            //{
            //    Message = "Invalid template type, please have the database checked.";
            //    return RedirectToAction("Index");
            //}

            if (emailStudents.Ceremony == null)
            {
                ModelState.AddModelError("Ceremony", "Ceremony is required.");
            }
            if (string.IsNullOrWhiteSpace(emailStudents.Subject))
            {
                ModelState.AddModelError("Subject", "Subject is required");
            }
            if (string.IsNullOrWhiteSpace(emailStudents.Body))
            {
                ModelState.AddModelError("Body", "Body is required.");
            }

            if (templateType != null && templateType.Name == StaticValues.Template_ElectronicTicketDistribution && emailStudents.EmailType != EmailStudentsViewModel.MassEmailType.Registered)
            {
                ModelState.AddModelError("EmailType", "The Student Population must be Registered when using the Electronic Ticket Distribution Template");
            }

            if (ModelState.IsValid)
            {
                Attachment attachment = null;

                if (file != null)
                {
                    var reader = new BinaryReader(file.InputStream);
                    var data = reader.ReadBytes(file.ContentLength);

                    attachment = new Attachment();
                    attachment.Contents = data;
                    attachment.ContentType = file.ContentType;
                    attachment.FileName = file.FileName;
                }

                // Those registered
                if (emailStudents.EmailType == EmailStudentsViewModel.MassEmailType.Registered)
                {
                    foreach (var participation in emailStudents.Ceremony.RegistrationParticipations.Where(a => !a.Cancelled))
                    {
                        var bodyText = _letterGenerator.GenerateEmailAllStudents(emailStudents.Ceremony, participation.Registration.Student, emailStudents.Body, templateType, participation.Registration, attachment, Request, Url);

                        var eq = new EmailQueue(participation.Registration.Student, null, emailStudents.Subject, bodyText, false);
                        eq.Registration = participation.Registration;
                        eq.RegistrationParticipation = participation;

                        if (attachment != null)
                        {
                            eq.Attachment = attachment;
                        }

                        Repository.OfType<EmailQueue>().EnsurePersistent(eq);
                    }
                }
                // Those eligible but not registered
                else if (emailStudents.EmailType == EmailStudentsViewModel.MassEmailType.Eligible || emailStudents.EmailType == EmailStudentsViewModel.MassEmailType.AllEligible)
                {
                    var students = emailStudents.Ceremony.Majors.SelectMany(a => a.Students).Where(a => a.TermCode == emailStudents.Ceremony.TermCode);

                    // filter out students who have registered, only trying to send to students who are eligible and not registered
                    if (emailStudents.EmailType == EmailStudentsViewModel.MassEmailType.Eligible)
                    {
                        students = students.Where(a => !emailStudents.Ceremony.RegistrationParticipations.Select(x => x.Registration.Student).Contains(a)).ToList();
                    }

                    foreach (var student in students)
                    {
                        var bodyText = _letterGenerator.GenerateEmailAllStudents(emailStudents.Ceremony, student, emailStudents.Body, templateType, null, attachment, Request, Url);

                        var eq = new EmailQueue(student, null, emailStudents.Subject, bodyText, false);
                        if (attachment != null)
                        {
                            eq.Attachment = attachment;
                        }
                        Repository.OfType<EmailQueue>().EnsurePersistent(eq);
                    }
                }

                else if(emailStudents.EmailType == EmailStudentsViewModel.MassEmailType.ExtraTicketDenied)
                {
                    var useTemplate = emailStudents.Ceremony.Templates.FirstOrDefault(a => a.TemplateType == templateType && a.IsActive);
                    foreach (var participation in emailStudents.Ceremony.RegistrationParticipations.Where(a => a.ExtraTicketPetition != null && a.ExtraTicketPetition.IsApproved == false))
                    {
                        //var bodyText = _letterGenerator.GenerateEmailAllStudents(emailStudents.Ceremony, participation.Registration.Student, emailStudents.Body, templateType, participation.Registration);
                        var bodyText = _letterGenerator.GenerateExtraTicketRequestPetitionDecision(participation, useTemplate, attachment, Request, Url, emailStudents.Body);//(emailStudents.Ceremony, participation.Registration.Student, emailStudents.Body, templateType, participation.Registration);

                        var eq = new EmailQueue(participation.Registration.Student, null, emailStudents.Subject, bodyText, false);
                        eq.Registration = participation.Registration;
                        eq.RegistrationParticipation = participation;

                        if (attachment != null)
                        {
                            eq.Attachment = attachment;
                        }

                        Repository.OfType<EmailQueue>().EnsurePersistent(eq);
                    }
                }

                Message = "Emails have been queued.";
                return RedirectToAction("Index");
            }

            var viewModel = EmailStudentsViewModel.Create(Repository, _ceremonyService, CurrentUser.Identity.Name, _massEmailTemplates);
            viewModel.Ceremony = emailStudents.Ceremony;
            viewModel.Subject = emailStudents.Subject;
            viewModel.Body = emailStudents.Body;
            viewModel.TemplateType = emailStudents.TemplateType;
            return View(viewModel);
        }
        public static SendNotificationViewModel Create(IRepository repository, NotificationTrackingViewModel notificationTrackingViewModel, EmailQueue emailQueue = null, string email = null)
        {
            Check.Require(repository != null, "Repository is required.");
            Check.Require(notificationTrackingViewModel != null, "notificationTrackingViewModel is required.");

            var viewModel = new SendNotificationViewModel()
                                {
                                    NotificationTrackingViewModel = notificationTrackingViewModel,
                                    EmailQueue = emailQueue ?? new EmailQueue() { FromAddress = email}
                                };

            return viewModel;
        }
Beispiel #37
0
 public void QueueVisaLetterDecision(VisaLetter visaLetter, Ceremony ceremony, HttpRequestBase request, UrlHelper url)
 {
     Check.Require(visaLetter != null, "Visa Letter Request Required.");
     var template = ceremony.Templates.FirstOrDefault(a => a.TemplateType.Name == StaticValues.Template_VisaLetterDecision && a.IsActive);
     if (template != null)
     {
         var subject = template.Subject;
         var body = _letterGenerator.GenerateVisaLetterRequestDecision(visaLetter, template, request, url);
         var emailQueue = new EmailQueue(visaLetter.Student, template, subject, body);
         _emailQueueRepository.EnsurePersistent(emailQueue);
     }
 }
        public static void SendEmail(MailMessage message)
        {
            try
            {
                var context = new SimplicityEntities();

                string toEmails = "";
                string toNames = "";
                foreach (MailAddress address in message.To)
                {
                    toNames += address.DisplayName + ",";
                    toEmails += address.Address + ",";
                }
                EmailQueue ta = new EmailQueue{LogTime=DateTime.Now,NumOfTries=1, FromName="Simplicity4Business", FromAddress=FROM_ADDRESS,
                    ToNames=toNames.Substring(0, toNames.Length - 1), ToAddresses=toEmails.Substring(0, toEmails.Length),
                    Subject=message.Subject, Body=message.Body, SentTime=null};

            }
            catch (Exception ex)
            {

            }
        }
Beispiel #39
0
 public static void AddToQueue(string catalog, EmailQueue queue)
 {
     Factory.Insert(catalog, queue);
 }
Beispiel #40
0
        public void QueueRegistrationPetitionDecision(RegistrationPetition registrationPetition)
        {
            Check.Require(registrationPetition != null, "registration is required.");

            var template =
                registrationPetition.Ceremony.Templates.Where(
                    a => a.TemplateType.Name == StaticValues.Template_RegistrationPetition_Approved && a.IsActive).
                    FirstOrDefault();

            if (template != null)
            {
                var subject = template.Subject;
                var body = _letterGenerator.GenerateRegistrationPetitionApproved(registrationPetition, template);

                var emailQueue = new EmailQueue(registrationPetition.Registration.Student, template, subject, body);
                emailQueue.Registration = registrationPetition.Registration;
                emailQueue.RegistrationPetition = registrationPetition;

                _emailQueueRepository.EnsurePersistent(emailQueue);
            }
        }
Beispiel #41
0
        public void QueueMajorMove(Registration registration, RegistrationParticipation participation)
        {
            Check.Require(registration != null, "registration is required.");

            var template = participation.Ceremony.Templates.Where(a => a.TemplateType.Name == StaticValues.Template_MoveMajor && a.IsActive).FirstOrDefault();

            if (template != null)
            {
                var subject = template.Subject;
                var body = _letterGenerator.GenerateMoveMajor(participation, template);

                var emailQueue = new EmailQueue(registration.Student, template, subject, body, true);
                emailQueue.Registration = registration;
                emailQueue.RegistrationParticipation = participation;

                _emailQueueRepository.EnsurePersistent(emailQueue);
            }
        }
Beispiel #42
0
        /// <summary>
        /// Queue's up each individual email for each registration participation
        /// </summary>
        /// <param name="registration"></param>
        public void QueueRegistrationConfirmation(Registration registration, string additionalMessage = null)
        {
            Check.Require(registration != null, "Registration is required.");

            // fix for task 237
            foreach (var a in registration.RegistrationParticipations)
            {
                var template = a.Cancelled ?
                    a.Ceremony.Templates.FirstOrDefault(b => b.TemplateType.Name == StaticValues.Template_Cancellation && b.IsActive)
                    :
                    a.Ceremony.Templates.FirstOrDefault(b => b.TemplateType.Name == StaticValues.Template_RegistrationConfirmation && b.IsActive);

                if (template != null)
                {
                    var subject = template.Subject;
                    var body = _letterGenerator.GenerateRegistrationConfirmation(a, template);

                    if (!string.IsNullOrEmpty(additionalMessage))
                    {
                        body += additionalMessage;
                    }

                    var emailQueue = new EmailQueue(a.Registration.Student, template, subject, body, true);
                    emailQueue.Registration = registration;
                    emailQueue.RegistrationParticipation = a;

                    _emailQueueRepository.EnsurePersistent(emailQueue);
                }
            }
        }
Beispiel #43
0
        public void QueueRegistrationPetition(Registration registration)
        {
            Check.Require(registration != null, "registration is required.");

            #region Old Code to remove

            //var template = registration.RegistrationPetitions.First().Ceremony.Templates.Where(b => b.TemplateType.Name == StaticValues.Template_RegistrationPetition
            //                    && b.IsActive).FirstOrDefault();

            //Check.Require(template != null, "No template is available.");

            //foreach (var a in registration.RegistrationPetitions)
            //{
            //    var subject = template.Subject;
            //    var body = _letterGenerator.GenerateRegistrationPetitionConfirmation(a, template);

            //    var emailQueue = new EmailQueue(a.Registration.Student, template, subject, body, false);
            //    emailQueue.Registration = registration;
            //    emailQueue.RegistrationPetition = a;

            //    _emailQueueRepository.EnsurePersistent(emailQueue);
            //}
            #endregion Old Code to remove

            // fix for problem similar to task 237
            foreach (var a in registration.RegistrationPetitions)
            {
                var template =
                    a.Ceremony.Templates.Where(b => b.TemplateType.Name == StaticValues.Template_RegistrationPetition
                             && b.IsActive).FirstOrDefault();
                if(template != null)
                {
                    var subject = template.Subject;
                    var body = _letterGenerator.GenerateRegistrationPetitionConfirmation(a, template);

                    var emailQueue = new EmailQueue(a.Registration.Student, template, subject, body, false);
                    emailQueue.Registration = registration;
                    emailQueue.RegistrationPetition = a;

                    _emailQueueRepository.EnsurePersistent(emailQueue);
                }
            }
        }
        public static EmailQueue EmailQueue(int? counter)
        {
            var rtValue = new EmailQueue();
            rtValue.Text = "Text" + counter.Extra();
            rtValue.Order = new Order();
            rtValue.NotificationType = Purchasing.Core.Domain.EmailPreferences.NotificationTypes.PerEvent;

            return rtValue;
        }
Beispiel #45
0
        public void QueueExtraTicketPetitionDecision(RegistrationParticipation participation)
        {
            Check.Require(participation != null, "participation is required.");

            var template = participation.Ceremony.Templates.Where(a => a.TemplateType.Name == StaticValues.Template_TicketPetition_Decision && a.IsActive).FirstOrDefault();

            if (template != null)
            {
                var subject = template.Subject;
                var body = _letterGenerator.GenerateExtraTicketRequestPetitionDecision(participation, template, null,  null, null);

                var emailQueue = new EmailQueue(participation.Registration.Student, template, subject, body, false);
                emailQueue.Registration = participation.Registration;
                emailQueue.RegistrationParticipation = participation;
                emailQueue.ExtraTicketPetition = participation.ExtraTicketPetition;

                _emailQueueRepository.EnsurePersistent(emailQueue);
            }
        }
Beispiel #46
0
        public ActionResult Edit(int id, int callForProposalId, EmailQueue emailqueue)
        {
            var callforproposal = Repository.OfType<CallForProposal>().GetNullableById(callForProposalId);

            if (callforproposal == null)
            {
                return this.RedirectToAction<CallForProposalController>(a => a.Index(null, null, null));
            }

            if (!_accessService.HasAccess(null, callForProposalId, CurrentUser.Identity.Name))
            {
                Message = string.Format(StaticValues.Message_NoAccess, "that");
                return this.RedirectToAction<HomeController>(a => a.Index());
            }

            var emailqueueToEdit = _emailqueueRepository.GetNullableById(id);

            if (emailqueueToEdit == null)
            {
                Message = string.Format(StaticValues.Message_NotFound, "Email");
                return this.RedirectToAction(a => a.Index(callForProposalId));
            }
            if (!_accessService.HasSameId(null, callforproposal, null, emailqueueToEdit.CallForProposal.Id))
            {
                Message = string.Format(StaticValues.Message_NoAccess, "that");
                return this.RedirectToAction<HomeController>(a => a.Index());
            }

            var previousPendingState = emailqueueToEdit.Pending;

            TransferValues(emailqueue, emailqueueToEdit);

            emailqueueToEdit.TransferValidationMessagesTo(ModelState);

            if (!emailqueue.Pending && !previousPendingState)
            {
                ModelState.AddModelError("Pending", "Can't edit an email that was already sent");
            }

            if (ModelState.IsValid)
            {
                _emailqueueRepository.EnsurePersistent(emailqueueToEdit);

                Message = string.Format(StaticValues.Message_EditedSuccessfully, "EmailQueue");

                return this.RedirectToAction(a => a.Index(callForProposalId));
            }
            else
            {
                var viewModel = EmailQueueViewModel.Create(Repository, callforproposal);
                viewModel.EmailQueue = emailqueueToEdit;

                return View(viewModel);
            }
        }