Пример #1
0
        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();
            }
        }