public ActionResult Purchase(UserPurchaseViewModel model) { try { ViewBag.ShowMessage = true; ViewBag.IsTrial = false; if (model.subscriptions.SubscriptionType == (int)AspectEnums.SubscriptionType.Trial) { ViewBag.IsTrial = true; model.template.IsTrial = true; } #region Create NEW USER - SUBMIT USERMASTER bool isUserExist = UserBusinessInstance.GetUserByLoginName(model.user.Email).UserID > 0 ? true : false; if (isUserExist) { ViewBag.Message = "This email address already exist."; ViewBag.IsSuccess = false; return(View(model)); } model.user.CreatedBy = 1; model.user.CreatedDate = DateTime.Now; model.user.AccountStatus = (int)AspectEnums.UserAccountStatus.Pending; model.user.isActive = true; model.user.isDeleted = false; model.user.IsEmployee = false; model.user.LoginName = model.user.Email; model.user.Password = "******"; string sessionID = HttpContext.Session.SessionID.ToString(); int newUserID = UserBusinessInstance.SubmitNewEmployee(model.user, sessionID); #endregion #region CREATE NEW ORDER - SUBMIT ORDERMASTER model.order.UserID = newUserID; decimal cost = 0; int Discount = Convert.ToInt32(ConfigurationManager.AppSettings["Discount"]); if (model.subscriptions.SubscriptionType == (int)AspectEnums.SubscriptionType.Trial) { cost = 0; model.subscriptions.EndDate = DateTime.Now.AddDays(10); } if (model.subscriptions.SubscriptionTypeList == AspectEnums.SubscriptionType.Annual) { cost = Convert.ToDecimal(model.template.COST); model.subscriptions.EndDate = DateTime.Now.AddMonths(12); } else if (model.subscriptions.SubscriptionTypeList == AspectEnums.SubscriptionType.HalfYearly) { cost = Convert.ToDecimal(model.template.COST * .60); model.subscriptions.EndDate = DateTime.Now.AddMonths(06); } else if (model.subscriptions.SubscriptionTypeList == AspectEnums.SubscriptionType.Quarterly) { cost = Convert.ToDecimal(model.template.COST * 0.30); model.subscriptions.EndDate = DateTime.Now.AddMonths(3); } model.order.Discount = Discount; model.order.Amount = cost - (cost * (Discount / 100)); model.template.COST = Convert.ToInt32(model.order.Amount); int OrderID = SystemBusinessInstance.SubmitNewOrder(model.order); #endregion #region CREATE NEW SUBSCRIPTION - SUBMIT USERWEDDINGSUBSCRIPTION model.subscriptions.UserId = newUserID; model.subscriptions.InvoiceNo = OrderID; int SubscriptionID = SystemBusinessInstance.SubmitUserSubscription(model.subscriptions); #endregion if (newUserID > 1) { EmailServiceDTO email = new EmailServiceDTO(); TemplateMasterBO emailTemplate = new TemplateMasterBO(); int emailTemplateCode = (int)AspectEnums.EmailTemplateCode.WelcomeEmail; if (DreamWeddsData.DreamWeddsWeb == null) { emailTemplate = SystemBusinessInstance.GetTemplateData(0, emailTemplateCode); } else { emailTemplate = DreamWeddsData.DreamWeddsWeb.templateMasters.Where(x => x.TemplateCode == emailTemplateCode).FirstOrDefault(); } model.template.UrlIdentifier = EncryptionEngine.Encrypt(newUserID.ToString() + "," + model.user.FirstName + "," + model.user.LastName + "," + model.user.LoginName + "," + model.template.TemplateName); //string encodedValue = HttpUtility.UrlEncode(model.template.UrlIdentifier); string decrypt = EncryptionEngine.Decrypt(model.template.UrlIdentifier); email.ToName = model.user.FirstName + " " + model.user.LastName; email.Subject = emailTemplate.TemplateSubject; email.ToEmail = model.user.Email; email.Status = (int)AspectEnums.EmailStatus.Pending; email.Message = emailTemplate.TemplateName; email.Phone = model.user.Phone; email.Mobile = model.user.Mobile; email.IsCustomerCopy = false; email.TemplateID = emailTemplate.TemplateID; email.Body = emailTemplate.TemplateContent; email.CreatedDate = DateTime.Now; email.CreatedBy = newUserID; email.IsHtml = true; email.Priority = 2; email.IsAttachment = false; email.Body = PrepareEmailContent(email, emailTemplate); EmailNotificationService eNotification = new EmailNotificationService(); eNotification.SendEmailNotification(email, model.template); ViewBag.IsSuccess = true; } } catch (DbEntityValidationException ex) { ViewBag.IsSuccess = false; var newException = new FormattedDbEntityValidationException(ex); ViewBag.Message = "Error: " + ex; } catch (Exception e) { ViewBag.IsSuccess = false; ViewBag.Message = "Error: " + e; } return(View(model)); }