public void SendAlerts() { //Send Notifications to customers with yearly subscription IList <PurchaseOrder> poList = new List <PurchaseOrder>(); DateTime dt = DateTime.UtcNow.AddYears(-1); poList = _purchaseOrderRepository.GetFilteredElements(x => x.Approved == 1 && x.LicenseId == 1 && x.ApprovalDate > dt).ToList(); foreach (PurchaseOrder item in poList) { DateTime OneYearCompletionDate = item.ApprovalDate.AddYears(1); //DateTime OneYearCompletionDate = item.ApprovalDate.AddDays(61); DateTime SixtyDaysPrior = OneYearCompletionDate.AddDays(-60); DateTime ThirtyDaysPrior = OneYearCompletionDate.AddDays(-30); Company company = _companyRepository.GetElementById(item.CompanyId); if (SixtyDaysPrior.Date == DateTime.UtcNow.Date) { //Email Template string emailBody = string.Empty; string emailSubject = string.Empty; EmailTemplate emailTemplate = null; //emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.Name == "Account Expiry").FirstOrDefault(); emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 4).FirstOrDefault(); if (emailTemplate != null) { emailBody = emailTemplate.Template; emailSubject = emailTemplate.Subject; } StringBuilder sb = new StringBuilder(emailBody); sb.Replace("[CompanyName]", company.Name); sb.Replace("[NotifyDays]", "60"); sb.Replace("[ExpiryDate]", OneYearCompletionDate.ToString("d-MMM-yyyy")); sb.Replace("[PurchaseOrderNo]", item.OrderNumber); sb.Replace("[NumberOfLicenses]", item.LicensesOrdered.ToString()); sb.Replace("[Amount]", item.OrderTotal.ToString()); LicenseType licenseType = _licenseTypeRepository.GetElementById(item.LicenseId); if (licenseType != null) { sb.Replace("[LicenseType]", licenseType.LicenseTypeName); } //Email Template HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken => { MailHelper mail = new MailHelper(); string subject = emailSubject; // MyCard.Web.Resources.CaptionsAll.LicenseActivationSubject; string body = sb.ToString(); // String.Format(@Resources.CaptionsAll.LicenseActivationEmailMessage, company.Name); await mail.SendAsync(company.Email, subject, body, String.Empty); }); } if (ThirtyDaysPrior.Date == DateTime.UtcNow.Date) { //Email Template string emailBody = string.Empty; string emailSubject = string.Empty; EmailTemplate emailTemplate = null; //emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.Name == "Account Expiry").FirstOrDefault(); emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 4).FirstOrDefault(); if (emailTemplate != null) { emailBody = emailTemplate.Template; emailSubject = emailTemplate.Subject; } StringBuilder sb = new StringBuilder(emailBody); sb.Replace("[CompanyName]", company.Name); sb.Replace("[NotifyDays]", "60"); sb.Replace("[ExpiryDate]", OneYearCompletionDate.ToString("d-MMM-yyyy")); sb.Replace("[PurchaseOrderNo]", item.OrderNumber); sb.Replace("[NumberOfLicenses]", item.LicensesOrdered.ToString()); sb.Replace("[Amount]", item.OrderTotal.ToString()); LicenseType licenseType = _licenseTypeRepository.GetElementById(item.LicenseId); if (licenseType != null) { sb.Replace("[LicenseType]", licenseType.LicenseTypeName); } //Email Template HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken => { MailHelper mail = new MailHelper(); string subject = emailSubject; // MyCard.Web.Resources.CaptionsAll.LicenseActivationSubject; string body = sb.ToString(); // String.Format(@Resources.CaptionsAll.LicenseActivationEmailMessage, company.Name); await mail.SendAsync(company.Email, subject, body, String.Empty); }); } } }
//[ValidateAntiForgeryToken] public async Task <ActionResult> Register(RegistrationViewModel model, string mode) { try { ViewBag.PageType = "Register"; //if(System.Configuration.ConfigurationManager.AppSettings["domains2bar"].ToString().Contains (model.EmailID.Split('@')[1])) //{ // return Json(new { success = false, responseText = "Please use a corporate email account to register" }); //} bool bcaptcha = this.IsCaptchaValid("Validate your captcha"); if (!string.IsNullOrEmpty(mode)) { bcaptcha = true; } if (ModelState.IsValid && bcaptcha) { int existingCompanyCount = 0; string searchString = string.Empty; string emailBody = string.Empty; string emailSubject = string.Empty; EmailTemplate emailTemplate = null; StringBuilder sbEmail; MailAddress emailAddress = new MailAddress(model.EmailID); string emailUserName = emailAddress.User; string emailDomain = emailAddress.Host; if (model.DomainName == "mydomain.com") { model.DomainName = emailDomain; } searchString = model.DomainName.ToUpper(); string EncryptedCompanyID = string.Empty; int CompanyID = 0; string EncodedCompanyID = string.Empty; if (!String.IsNullOrEmpty(model.EmailID)) { existingCompanyCount = _companyRepository.GetFilteredElements(o => o.Email.ToUpper().Equals(model.EmailID)).Count(); } if (existingCompanyCount > 0) { return(Json(new { success = false, responseText = MyCard.Web.Resources.ErrorMessages.EmailAlreadyExists }, JsonRequestBehavior.AllowGet)); } Company existingCompany = null; /////// if (!String.IsNullOrEmpty(searchString)) { //existingCompanyCount = _companyRepository.GetFilteredElements(o => o.Domain.ToUpper().Equals(searchString)).Count(); existingCompany = _companyRepository.GetFilteredElements(o => o.Domain.ToUpper().Equals(searchString)).FirstOrDefault(); } if (existingCompany != null) { //Email Template emailBody = string.Empty; emailSubject = string.Empty; emailTemplate = null; //emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.Name == "Not Corporate Account").FirstOrDefault(); emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 6).FirstOrDefault(); if (emailTemplate != null) { emailBody = emailTemplate.Template; emailSubject = emailTemplate.Subject; } sbEmail = new StringBuilder(emailBody); sbEmail.Replace("[CustomerName]", model.CustomerName); sbEmail.Replace("[CustomerEmail]", model.EmailID); sbEmail.Replace("[CorporateEmail]", existingCompany.Email); HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken => { MailHelper mail = new MailHelper(); string subject = emailSubject; // MyCard.Web.Resources.CaptionsAll.EmailPasswordCreationSubjectMSO; //string body = String.Format(@Resources.CaptionsAll.PasswordCreationEmailBody, model.Name, domainName, EncodedCompanyID); string body = sbEmail.ToString(); //String.Format(@Resources.CaptionsAll.PasswordCreationEmailBodyMSO, model.Name, domainName); await mail.SendAsync(model.EmailID, subject, body, String.Empty); }); return(Json(new { success = false, responseText = MyCard.Web.Resources.ErrorMessages.DomainAlreadyRegistered }, JsonRequestBehavior.AllowGet)); } //Saving Company Record Start Company company = new Company(); company.Name = model.Name; company.Domain = model.DomainName; company.CustomerName = model.CustomerName; company.Email = model.EmailID; company.BusinessTitle = model.BusinessTitle; company.Industry = model.Industry; company.City = model.City; company.Country = model.Country; company.CustomerType = model.CustomerType; company.AccountType = model.AccountType; company.CmsAccessKey = ""; company.CpPassword = ""; company.PassResetCode = ""; User user = new User(); user.Name = model.CustomerName; user.Email = model.EmailID; user.Active = 1; user.OutlookProfilePic = ""; user.RememberToken = ""; if (company.Users == null) { company.Users = new List <User>(); } user.Company = company; company.Users.Add(user); //Assigning Role UserRole userRole = new UserRole(); userRole.RoleId = 2;//Company Owner if (user.UserRoles == null) { user.UserRoles = new List <UserRole>(); } user.UserRoles.Add(userRole); // _companyRepository.Add(company); await _companyRepository.UnitOfWork.CommitAsync(); //Saving Company Record End string domainName = string.Empty; Uri url = HttpContext.Request.Url; domainName = url.AbsoluteUri.Replace(url.PathAndQuery, string.Empty); CompanyID = company.Id; //Sending Email Code Start TempData["FirstName"] = model.Name; //Sending Password Creation Email //EncryptedCompanyID = MyCard.Helper.EncryptionHelper.EncryptString(Convert.ToString(CompanyID));+ "|" + System.DateTime.UtcNow EncryptedCompanyID = MyCard.Helper.EncryptionHelper.EncryptString(Convert.ToString(CompanyID + "|" + System.DateTime.UtcNow)); EncodedCompanyID = HttpUtility.UrlEncode(EncryptedCompanyID); //emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.Name == "Registration").FirstOrDefault(); if (model.AccountType == 2) { emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 10).FirstOrDefault(); } else { emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 1).FirstOrDefault(); } //emailTemplate = _emailTemplateRepository.GetFilteredElements(x => x.TemplateId == 1).FirstOrDefault(); if (emailTemplate != null) { emailBody = emailTemplate.Template; emailSubject = emailTemplate.Subject; } sbEmail = new StringBuilder(emailBody); sbEmail.Replace("[CompanyName]", model.Name); if (model.AccountType == 2) { string sLink = "<a href ='" + domainName + "/CompanyDashboard/CreatePassword/?param=" + EncodedCompanyID + "'>" + domainName + "/CompanyDashboard/CreatePassword/?param=" + EncodedCompanyID + "</a>"; sbEmail.Replace("[CreatePasswordLink]", sLink); } if (model.CustomerType == "Freemium") { return(Json(new { success = true, responseText = MyCard.Web.Resources.CaptionsAll.RegisterSuccessMessageFree1 }, JsonRequestBehavior.AllowGet)); } else { HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken => { MailHelper mail = new MailHelper(); string subject = emailSubject; // MyCard.Web.Resources.CaptionsAll.EmailPasswordCreationSubjectMSO; //string body = String.Format(@Resources.CaptionsAll.PasswordCreationEmailBody, model.Name, domainName, EncodedCompanyID); string body = sbEmail.ToString(); //String.Format(@Resources.CaptionsAll.PasswordCreationEmailBodyMSO, model.Name, domainName); //await mail.SendAsync(model.EmailID, subject, body, String.Empty); await mail.SendAsyncBCC(model.EmailID, subject, body, String.Empty); }); // Send "Success" return(Json(new { success = true, responseText = MyCard.Web.Resources.CaptionsAll.RegistrationThankyouMessage }, JsonRequestBehavior.AllowGet)); } //return RedirectToAction("RegistrationFormThanks", "Registration"); } else { return(Json(new { success = false, responseText = "CAPTCHA verification failed." })); } } catch (Exception ex) { // Send "false" //return Json(new { success = false, responseText = ex.Message }); return(Json(new { success = false, responseText = ex.StackTrace + ":" + ex.Message })); //ViewBag.ErrorMessage = ex.Message; //return View(); } }