Exemplo n.º 1
0
        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));
        }