public async Task <IActionResult> EditModal(int id, [Bind("Id,Name,Schedule,TemplateText,DistributionType,DistributionList,TemplateName,Greetings,OnePerUser,Text,Subject,DayFrom,DayTo,SQLCommand")] MassEmail em) { if (id != em.Id) { return(NotFound()); } if (em.DistributionList == null) { em.DistributionList = ""; } if (em.TemplateText == null) { em.TemplateText = ""; } if (em.Schedule == null) { em.Schedule = ""; } if (em.Name == null) { em.Name = ""; } em.NextSend = new DateTime(2000, 1, 1); ViewData["Templates"] = GetTemplates(em.TemplateName); return(await this.UpdateCompanyDataAsync(em, _context, _logger)); }
private bool LoadTemplateModel(int companyid, CompanyUser user, MassEmail em, EmailTemplateViewModel outtemplate) { try { var temp_enum = Enum.Parse <EmailTemplateType>(em.TemplateName); MemberInfo memberInfo = temp_enum.GetType().GetMember(temp_enum.ToString()) .FirstOrDefault(); if (memberInfo == null) { return(false); } var loader_type = memberInfo.CustomAttributes.FirstOrDefault(at => at.AttributeType.Equals(typeof(TemplateLoaderAttribute))); if (loader_type == null) { return(false); } EMailTemplateLoader loader = System.Activator.CreateInstance(loader_type.ConstructorArguments[0].Value as Type, _mailrepo, companyid) as EMailTemplateLoader; return(loader.LoadModel(em, outtemplate, user)); // (loader_type. as TemplateLoaderAttribute).LoaderType } catch (Exception ex) { _logger.LogError(ex, "LoadTemplateModel error"); return(false); } // var u }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); //template.Models. DateTime datefrom = DateTime.Now; datefrom = datefrom.AddDays(em.DayFrom); DateTime dateto = DateTime.Now; int add = em.DayFrom + em.DayTo; dateto = dateto.AddDays(add); if (datefrom.Ticks == 0) { datefrom = DateTime.Today; } if (dateto.Ticks == 0) { dateto = DateTime.Today.AddDays(3); } datefrom = datefrom.ResetHMS(); dateto = dateto.ResetHMS(); //this.DateCycle(em, template, (em, template, dt) => { // template.Models.Add(dt, _mailRepo.ReportRepository.CompanyDayProduction(datefrom, dateto, _companyid)); //}); template.Models.Add(datefrom, _mailRepo.ReportRepository.CompanyDayProduction(datefrom, dateto, _companyid)); return(true); }
public IRecipientCriteria CreateCriteria([FromBody] MassEmail massEmail) { var criteria = Provider.Mail.MassEmail.CreateCriteria(massEmail); var result = new RecipientCriteria { GroupName = criteria.GroupName, Recipients = criteria.Recipients }; return(result); }
public int SendMassEmail(MassEmailSendArgs args) { var sma = MassEmail.CreateSendMessageArgs(args); SendMessage(sma); Attachment.Delete(args.Attachments); var result = sma.GetDistinctEmails().Length; return(result); }
protected virtual void DateCycle(MassEmail em, EmailTemplateViewModel template, Action <MassEmail, EmailTemplateViewModel, DateTime> action) { DateTime dayfrom = DateTime.Today.AddDays(em.DayFrom); DateTime dayto = DateTime.Today.AddDays(em.DayTo); for (DateTime dt = dayfrom; dt <= dayto; dt = dt.AddDays(1)) { action(em, template, dt); } }
public IActionResult CreateModal() { var em = new MassEmail() { OnePerUser = true, DayFrom = 1, DayTo = 1 }; ViewData["Templates"] = GetTemplates(); return(PartialView("EditModal", em)); }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); //this.DateCycle(em, template, (em, template, dt) => { // template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid,user)); //}); DateTime dt = DateTime.Now; template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid, user)); return(true); }
protected virtual ExecutionModel GetExecutionModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { return(new ExecutionModel() { DateFrom = DateTime.Today.AddDays(em.DayFrom), DateTo = DateTime.Today.AddDays(em.DayTo), CompanyId = _companyid, UserFriendlyName = user?.NameSurname, UserChildFriendlyName = user?.ChildNameSurname }); }
private async Task <bool> SendMassEmailToUser(int companyid, string email, MassEmail em) { try { //var proto = await CreateEmail(companyid, user, em); } catch (Exception ex) { _logger.LogError(ex, "SendMassEmailToUser error"); return(false); } return(await Task.FromResult(true)); }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); this.DateCycle(em, template, (em, template, dt) => { template.Models.Add(dt, _mailRepo.ReportRepository.CompanyComplexMenu(dt, dt, _companyid)); }); /* * DateTime dayfrom = DateTime.Today.AddDays(em.DayFrom); * DateTime dayto = DateTime.Today.AddDays(em.DayTo); * for (DateTime dt = dayfrom; dt<= dayto; dt = dt.AddDays(1)) { * template.Models.Add(dt, _mailRepo.ReportRepository.CompanyComplexMenu(dt, dt, _companyid)); * }*/ return(true); }
public static int SendHtmlMultiUserEmail(MassEmail massEmail) { //sends emails out to a number of users, using a subject and title given int EmailsSendCount = 0; foreach (var u in massEmail.ToEmail) { if (System.Configuration.ConfigurationSettings.AppSettings["LiveServer"] == "true" | EmailsSendCount < 3) { if (Send(massEmail.Message, u.Email, "*****@*****.**", massEmail.Subject, "*****@*****.**")) { EmailsSendCount += 1; } } } return EmailsSendCount; }
public MassMailWrapper(MassEmail src) { this.Source = src; try { this.Schedule = CrontabSchedule.Parse(src.Schedule); } catch (Exception ex) { return; } this.LastRunTime = this.NextRunTime = src.NextSend; if (src.NextSend.Year < 2020) { NextRunTime = Schedule.GetNextOccurrence(DateTime.Now.AddMinutes(-15)); } //Increment(); }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); //this.DateCycle(em, template, (em, template, dt) => { // template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid,user)); //}); string sql = ReplaceMacro(em.SQLCommand, ExecModel); var attach = new EMailAttachment(); attach.Content = _mailRepo.ProduceFlatCSV(sql).Result; attach.ContentType = "text/csv"; attach.Name = ReplaceMacro(em.Name, ExecModel); attach.Name = Translit.cyr2lat(attach.Name) + ".csv"; template.Attachments.Add(attach); template.JustAttachment = true; //template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid, user)); return(true); }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); //this.DateCycle(em, template, (em, template, dt) => { // template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid,user)); //}); //string sql = ReplaceMacro(em.SQLCommand, ExecModel); string reportname = em.SQLCommand; var attach = new EMailAttachment(); var result = _mailRepo.ProduceExcel(reportname, ExecModel.DateFrom, ExecModel.DateTo, _companyid).GetAwaiter().GetResult(); attach.Content = result.FileContents; attach.ContentType = result.ContentType; attach.Name = result.FileDownloadName; template.Attachments.Add(attach); template.JustAttachment = true; //template.Models.Add(dt, _mailRepo.ReportRepository.EmailWeekInvoice(dt, _companyid, user)); return(true); }
public async Task <bool> SendMassEmailAsync(int companyid, MassEmail em, DateTime nextRun) { try { bool res = false; switch (em.DistribType) { #if !DEBUG case DistributionEnum.All: case DistributionEnum.Users: res = await SendMassEmailOnePerUser(companyid, em); break; case DistributionEnum.UsersParents: res = await SendMassEmailOnePerUser(companyid, em, await _mailrepo.GetDistributionUsersAsync(companyid, false)); break; #endif case DistributionEnum.Admin: res = await SendMassEmailOnePerUser(companyid, em, await _mailrepo.GetDistributionRoleUsersAsync(companyid, "Admin")); break; default: break; } em.NextSend = nextRun; await _mailrepo.SaveMassEMailAsync(em); } catch (Exception ex) { _logger.LogError(ex, "SendMassEmail error"); return(false); } return(true); }
private async Task <bool> SendMassEmailOnePerUser(int companyid, MassEmail em, List <CompanyUser> users = null) { bool res = true; try { if (users == null) { users = await _mailrepo.GetDistributionUsersAsync(companyid); } //for (int i = 0; i < 50; ++i) //{ // CompanyUser andry = await _mailrepo.GetUserAsync("27fb457f-8b4f-4a66-96ce-5e98ae2f1d91"); // users = Enumerable.Repeat(andry, 10).ToList(); users.ForEach(async u => res &= await SendMassEmailToUser(companyid, u, em)); //} } catch (Exception ex) { _logger.LogError(ex, "SendMassEmailOnePerUser error"); return(false); } return(res); }
public abstract bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user);
public async Task <JsonResult> SendTest([Bind("Id,Name,Schedule,TemplateText,DistributionType,DistributionList,TemplateName,Greetings,OnePerUser,Text,Subject,DayFrom,DayTo,SQLCommand")] MassEmail em) { await _massmailservice.SendMassEmailToUser(User.GetCompanyID(), await _mailrepo.GetUserAsync(User.GetUserId()), em); return(Json(0)); }
private async Task <EmailProtoType> CreateEmail(int companyid, CompanyUser user, MassEmail em) { EmailProtoType res = new EmailProtoType(); try { var model = await CreateEmailModel(companyid, user, em); res.JustAttachment = model.JustAttachment; if (!res.JustAttachment) { string viewname = $"/Views/MassEmail/{em.TemplateName}_Template.cshtml"; res.Message = await _razorViewToStringRenderer.RenderViewToStringAsync(viewname, model); } model.Attachments.ForEach(a => res.Attachments.Add(a)); if (string.IsNullOrEmpty(model.Subject)) { res.Subject = string.IsNullOrEmpty(em.Subject) ? "Info" : em.Subject; } else { res.Subject = model.Subject; } // var user = _userManager.Users.SingleOrDefault(u => u.Id == userid); } catch (Exception ex) { _logger.LogError(ex, "CreateEmail error"); return(null); } return(res); }
public async Task <bool> SendMassEmailToUser(int companyid, CompanyUser user, MassEmail em) { try { //to do AK send parents email EmailProtoType proto = await CreateEmail(companyid, user, em); if (user.IsChild()) { var email = _context.Users.Where(x => x.Id == user.ParentUserId).FirstOrDefault(); if (email.ConfirmedByAdmin) { EmailValidCheck(email.Email); await _mailservice.SendEmailAsync(email.Email, proto.Subject, proto.Message, companyid); } } else { var email = _context.Users.Where(x => x.Id == user.Id).FirstOrDefault(); if (email.ConfirmedByAdmin) { EmailValidCheck(email.Email); await _mailservice.SendEmailAsync(email.Email, proto.Subject, proto.Message, companyid, proto.Attachments); } } } catch (Exception ex) { _logger.LogError(ex, "SendMassEmailToUser error"); return(false); } return(true); }
protected virtual void LoadBaseFeature(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { ExecModel = GetExecutionModel(em, template, user); template.Subject = ReplaceMacro(em.Subject, ExecModel); template.Greeting = ReplaceMacro(em.Greetings, ExecModel); }
public override bool LoadModel(MassEmail em, EmailTemplateViewModel template, CompanyUser user) { LoadBaseFeature(em, template, user); return(true); }
private async Task <EmailTemplateViewModel> CreateEmailModel(int companyid, CompanyUser user, MassEmail em) { EmailTemplateViewModel res = new EmailTemplateViewModel(); try { res.User = user; res.Company = await _mailrepo.GetCompanyAsync(companyid); res.Greeting = em.Greetings; res.Message = em.Text; var modelload = LoadTemplateModel(companyid, user, em, res); } catch (Exception ex) { _logger.LogError(ex, "CreateEmailModel error"); return(null); } // var user = _userManager.Users.SingleOrDefault(u => u.Id == userid); return(res); }