Beispiel #1
0
        public ActionResult PaymentDetails(decimal id)
        {
            User_Transaction_Master userTransaction = db.User_Transaction_Master.Include(u => u.User_Profile).
                                                      Include(u => u.Rate_Card).Include(u => u.Plan_Master).Where(u => u.Id == id).SingleOrDefault();

            if (userTransaction == null)
            {
                return(HttpNotFound());
            }

            return(View(userTransaction));
        }
Beispiel #2
0
        public ActionResult PaymentDetails(decimal id)
        {
            decimal userID = Convert.ToDecimal(UserHelper.GetUserId());

            User_Transaction_Master userTransaction = db.User_Transaction_Master.Include(u => u.User_Profile).
                                                      Include(u => u.Rate_Card).Include(u => u.Plan_Master).Where(u => u.Id == id).SingleOrDefault();

            if (userTransaction.User_ID != userID)
            {
                TempData["message"] = ToasterMessage.Message(ToastType.warning, "Unauthorized access.");
                return(RedirectToAction("Index"));
            }

            if (userTransaction == null)
            {
                return(HttpNotFound());
            }

            return(View(userTransaction));
        }
Beispiel #3
0
        // GET: Invoice
        public ActionResult Index(decimal v, decimal r)
        {
            User_Transaction_Master data = db.User_Transaction_Master.Include(x => x.Plan_Master)
                                           .Include(x => x.User_Profile).Where(x => x.User_ID == v && x.Id == r).First();

            if (data.Plan_Master.Plan == "Yearly")
            {
                ViewBag.term = "365";


                decimal oneyearamt = data.Amount;


                oneyearamt  = (oneyearamt / 11) * 10;
                ViewBag.amt = Math.Round(oneyearamt, 2);

                decimal oneyeargst = (oneyearamt / 10);
                ViewBag.gst = Math.Round(oneyeargst, 2);


                ViewBag.total = ViewBag.amt + ViewBag.gst;
            }
            else
            {
                ViewBag.term = "730";

                decimal twoyearamt = data.Amount;


                twoyearamt  = (twoyearamt / 11) * 10;
                ViewBag.amt = Math.Round(twoyearamt, 2);

                decimal twoyeargst = (twoyearamt / 10);
                ViewBag.gst = Math.Round(twoyeargst, 2);

                ViewBag.total = ViewBag.amt + ViewBag.gst;
            }

            return(View(data));
        }
Beispiel #4
0
        public ActionResult Signup(User_Profile userProfileCreate)
        {
            try
            {
                var getName = db.User_Profile.Where(u => u.EmailAddress == userProfileCreate.EmailAddress).ToList();
                if (getName.Count > 0)
                {
                    ViewBag.message = ToasterMessage.Message(ToastType.info, "User already exist");
                }

                else
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        userProfileCreate.Date     = DateTime.Today;
                        userProfileCreate.UserName = userProfileCreate.EmailAddress;
                        userProfileCreate.Role_id  = 1;
                        userProfileCreate.Current_Financial_year = GetFinancialYear();

                        userProfileCreate.AccountConfirmed = "No";
                        Guid activationCode = Guid.NewGuid();
                        userProfileCreate.ActivationCode = activationCode;

                        string activationLink = Request.Url.Scheme + "://" + Request.Url.Authority + "/User/ConfirmAccount/" + activationCode;

                        db.User_Profile.Add(userProfileCreate);
                        db.SaveChanges();

                        decimal id = userProfileCreate.ID;

                        var user_Transaction_Master = new User_Transaction_Master();

                        var     plan_id = db.Plan_Master.FirstOrDefault(x => x.Plan == "Demo");
                        decimal planID  = Convert.ToDecimal(plan_id.Plan_ID);
                        var     rate_id = db.Rate_Card.FirstOrDefault(x => x.Plan_Id == planID);
                        decimal rateID  = Convert.ToDecimal(rate_id.Rate_Id);
                        user_Transaction_Master.Rate_ID        = rateID; //********************
                        user_Transaction_Master.User_ID        = id;
                        user_Transaction_Master.PlanID         = planID; //********************
                        user_Transaction_Master.Amount         = 0;
                        user_Transaction_Master.Start_Date     = DateTime.Today;
                        user_Transaction_Master.End_Date       = DateTime.Today.AddMonths(3);
                        user_Transaction_Master.Payment_Status = "N/A";
                        user_Transaction_Master.Transection_ID = null;
                        user_Transaction_Master.Status         = "Active";
                        user_Transaction_Master.Payment_Date   = null;
                        user_Transaction_Master.Invoice_No     = null;
                        user_Transaction_Master.Payment_Method = "N/A";


                        db.User_Transaction_Master.Add(user_Transaction_Master);
                        db.SaveChanges();

                        var mailLog = new MailLog
                        {
                            UserID        = id,
                            ReminderOne   = DateTime.Today.AddDays(2),
                            ReminderTwo   = DateTime.Today.AddDays(7),
                            ReminderThree = DateTime.Today.AddDays(14),
                            ReminderFour  = DateTime.Today.AddDays(30),
                            ReminderFive  = DateTime.Today.AddDays(60),
                            ReminderSix   = DateTime.Today.AddDays(90)
                        };

                        db.MailLogs.Add(mailLog);
                        db.SaveChanges();
                        transaction.Commit();


                        SendMail(userProfileCreate.FirstName, userProfileCreate.LastName, userProfileCreate.EmailAddress,
                                 activationLink, "~/EmailTemplate/SignupConfirmation.html", "Lex Narro - Verify email to activate account");

                        //SendMail("sanjay", "kumar", "*****@*****.**",
                        //        "", "~/EmailTemplate/SignupConfirmation.html");

                        TempData["message"] = ToasterMessage.MessageCenter(ToastType.success, "Registration successful. Check your email for account activation.");
                        return(RedirectToAction("Login", "Account"));
                    }
                }
                //}
            }
            catch (Exception ex)
            {
                TempData["message"] = ToasterMessage.Message(ToastType.info, "something went wrong. Please contact us from home page.");
            }

            ViewBag.CountryID     = new SelectList(db.Country_Master.OrderBy(m => m.Name), "ID", "Name");
            ViewBag.Role_id       = new SelectList(db.Role_Master, "Id", "Name");
            ViewBag.StateID       = new SelectList(db.State_Master.OrderBy(m => m.Name), "ID", "Name");
            ViewBag.StateEnrolled = new SelectList(db.State_Master.OrderBy(m => m.Name), "ID", "Name");
            return(View());
        }
Beispiel #5
0
        public ActionResult Success(decimal planId, string payerId, string paymentId)
        {
            try
            {
                decimal userId = Convert.ToDecimal(UserHelper.GetUserId());

                //-----For sending Invoice mail------
                decimal recordId = 0;

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (var transaction = ctx.Database.BeginTransaction())
                    {
                        int?maxInvoice = ctx.User_Transaction_Master.Max(u => u.Invoice_No);

                        Rate_Card rate_card = ctx.Rate_Card.Include(x => x.Plan_Master)
                                              .Where(m => m.Plan_Id == planId && m.Status == "Active").FirstOrDefault();

                        User_Transaction_Master userTransaction = new User_Transaction_Master();

                        IEnumerable <User_Transaction_Master> userAllTransaction = ctx.User_Transaction_Master
                                                                                   .Where(x => x.User_ID == userId);

                        // Set the payer for the payment
                        var paymentExecution = new PaymentExecution()
                        {
                            payer_id = payerId
                        };

                        // Identify the payment to execute
                        var payment = new Payment()
                        {
                            id = paymentId
                        };

                        var apiContext = GetAPIContext();

                        // Execute the Payment
                        var executedPayment = payment.Execute(apiContext, paymentExecution);

                        int?max = userAllTransaction.Max(u => (int?)u.Invoice_No);

                        User_Transaction_Master maxedInvoicedTransaction = userAllTransaction
                                                                           .FirstOrDefault(x => x.User_ID == userId && x.Invoice_No == max);

                        int?maxedInvoiceNo = ctx.User_Transaction_Master.Max(u => (int?)u.Invoice_No);

                        if (executedPayment.state == "approved")
                        {
                            //---------For new payment record (second time payment and so on)-------
                            if (maxedInvoicedTransaction.Payment_Status != "N/A")
                            {
                                userTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                                DateTime?endDate    = maxedInvoicedTransaction.End_Date;
                                string   strEndDate = string.Empty;
                                if (endDate != null)
                                {
                                    strEndDate = endDate.ToString();
                                }

                                userTransaction.Start_Date = Convert.ToDateTime(strEndDate);

                                if (rate_card.Plan_Master.Plan == "Yearly")
                                {
                                    userTransaction.End_Date = userTransaction.Start_Date.AddYears(1);
                                }
                                else
                                {
                                    userTransaction.End_Date = userTransaction.Start_Date.AddYears(2);
                                }

                                if (maxInvoice == null)
                                {
                                    userTransaction.Invoice_No = 1;
                                }
                                else
                                {
                                    userTransaction.Invoice_No = maxInvoice + 1;
                                }

                                userTransaction.Payment_Date = DateTime.Today;

                                userTransaction.Payment_Method = "Online";
                                userTransaction.Payment_Status = "Paid";
                                userTransaction.Paypal_PayerId = payerId;
                                userTransaction.PlanID         = rate_card.Plan_Id;
                                userTransaction.Rate_ID        = rate_card.Rate_Id;

                                userTransaction.Status             = "Active";
                                userTransaction.Transaction_Status = executedPayment.state;
                                userTransaction.Transection_ID     = executedPayment.id;
                                userTransaction.User_ID            = userId;

                                ctx.User_Transaction_Master.Add(userTransaction);
                                ctx.SaveChanges();

                                recordId = userTransaction.Id;
                            }

                            //---------For updating the demo record (First time payment)-------
                            else
                            {
                                maxedInvoicedTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                                if (rate_card.Plan_Master.Plan == "Yearly")
                                {
                                    maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(1);
                                }
                                else
                                {
                                    maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(2);
                                }

                                if (maxInvoice == null)
                                {
                                    maxedInvoicedTransaction.Invoice_No = 1;
                                }
                                else
                                {
                                    maxedInvoicedTransaction.Invoice_No = maxInvoice + 1;
                                }

                                maxedInvoicedTransaction.Payment_Date = DateTime.Today;

                                maxedInvoicedTransaction.Payment_Method = "Online";
                                maxedInvoicedTransaction.Payment_Status = "Paid";
                                maxedInvoicedTransaction.Paypal_PayerId = payerId;
                                maxedInvoicedTransaction.PlanID         = rate_card.Plan_Id;
                                maxedInvoicedTransaction.Rate_ID        = rate_card.Rate_Id;

                                //DateTime? endDate = maxedInvoicedTransaction.End_Date;
                                //string strEndDate = string.Empty;
                                //if (endDate != null)
                                //    strEndDate = endDate.ToString();
                                maxedInvoicedTransaction.Start_Date = DateTime.Today;

                                maxedInvoicedTransaction.Status             = "Active";
                                maxedInvoicedTransaction.Transaction_Status = executedPayment.state;
                                maxedInvoicedTransaction.Transection_ID     = executedPayment.id;
                                maxedInvoicedTransaction.User_ID            = userId;

                                ctx.Entry(maxedInvoicedTransaction).State = EntityState.Modified;
                                ctx.SaveChanges();

                                recordId = maxedInvoicedTransaction.Id;
                            }

                            PaypalResponse paypalResponse = new PaypalResponse
                            {
                                user_id            = userId,
                                Paypal_ReferenceId = executedPayment.id,
                                intent             = executedPayment.intent,
                                payer          = Convert.ToString(executedPayment.payer),
                                payee          = Convert.ToString(executedPayment.payee),
                                note_to_payer  = executedPayment.note_to_payer,
                                update_time    = executedPayment.update_time,
                                create_time    = executedPayment.create_time,
                                response_state = executedPayment.state,
                                failure_reason = executedPayment.failure_reason
                            };

                            ctx.PaypalResponses.Add(paypalResponse);
                            ctx.SaveChanges();

                            transaction.Commit();

                            MailLog user = ctx.MailLogs.FirstOrDefault(x => x.UserID == userId);
                            user.LastReminderStatus = "Deactive";
                            ctx.SaveChanges();
                        }

                        Thread thread = new Thread(() => SendInvoice(recordId));
                        thread.Start();

                        User_Profile userMail = ctx.User_Profile.Where(p => p.ID == userId).FirstOrDefault();

                        Thread thread2 = new Thread(() => SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                                                                   "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html"));
                        thread2.Start();

                        //SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                        //    "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html");

                        TempData["message"] = ToasterMessage.Message(ToastType.success, "Subscription successful. Thank you.");
                    }
                }
            }

            catch (DbEntityValidationException e)
            {
                string errorMessage = string.Empty;

                foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);

                    foreach (DbValidationError ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                        errorMessage = ve.ErrorMessage;

                        TempData["message"] = ViewBag.message + ToasterMessage.Message(ToastType.error, errorMessage);
                    }
                }
            }

            catch (Exception r)
            {
                TempData["message"] = ToasterMessage.Message(ToastType.error, "Something went wrong");
            }
            return(RedirectToAction("Index"));
        }
        public ReturnData PostTransaction(string email, string Plan_ID, string payerId, string Rate_Id,
                                          string paymentId, string Amount, string Transection_ID)
        {
            ReturnData rd = new ReturnData();

            if (email == string.Empty || Plan_ID == string.Empty || payerId == string.Empty || paymentId == string.Empty ||
                Rate_Id == string.Empty || Amount == string.Empty || Transection_ID == string.Empty)
            {
                rd.Status     = "Failure";
                rd.Message    = "Missing Parameters";
                rd.Requestkey = "PostTransactions";
                return(rd);
            }

            try
            {
                decimal userId = db.User_Profile.Where(x => x.EmailAddress == email).Select(x => x.ID).First();

                //-----For sending Invoice mail------
                decimal recordId = 0;

                decimal planId = Convert.ToDecimal(Plan_ID);

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (var transaction = ctx.Database.BeginTransaction())
                    {
                        int?maxInvoice = ctx.User_Transaction_Master.Max(u => u.Invoice_No);

                        Rate_Card rate_card = ctx.Rate_Card.Include(x => x.Plan_Master)
                                              .Where(m => m.Plan_Id == planId && m.Status == "Active" && m.Plan_Master.Plan != "Demo").FirstOrDefault();

                        if (rate_card == null)
                        {
                            rd.Status     = "Failure";
                            rd.Message    = "Invalid Plan (Demo)";
                            rd.Requestkey = "PostTransactions";
                            return(rd);
                        }


                        //if(rate_card.Amount !=Convert.ToDecimal(Amount))
                        //{
                        //    PaypalResponse paypalResponse1 = new PaypalResponse
                        //    {
                        //        user_id = userId,
                        //        Paypal_ReferenceId = paymentId,
                        //        intent = "sale",
                        //        payer = "Android",
                        //        payee = string.Empty,
                        //        note_to_payer = "From Android",
                        //        update_time = Convert.ToString(DateTime.Today),
                        //        create_time = Convert.ToString(DateTime.Today),
                        //        response_state = "created",
                        //        failure_reason = "Invalid Amount"
                        //    };

                        //    ctx.PaypalResponses.Add(paypalResponse1);
                        //    ctx.SaveChanges();

                        //    transaction.Commit();


                        //    rd.Status = "Failure";
                        //    rd.Message = "Invalid Amount";
                        //    rd.Requestkey = "PostTransactions";
                        //    return rd;


                        //}



                        User_Transaction_Master userTransaction = new User_Transaction_Master();

                        List <User_Transaction_Master> userAllTransaction = ctx.User_Transaction_Master
                                                                            .Where(x => x.User_ID == userId).ToList();

                        // Set the payer for the payment
                        var paymentExecution = new PaymentExecution()
                        {
                            payer_id = payerId
                        };

                        // Identify the payment to execute
                        var payment = new Payment()
                        {
                            id = paymentId
                        };

                        //var apiContext = GetAPIContext();

                        // Execute the Payment
                        //var executedPayment = payment.Execute(apiContext, paymentExecution);

                        int?max = userAllTransaction.Max(u => (int?)u.Invoice_No);

                        User_Transaction_Master maxedInvoicedTransaction = userAllTransaction
                                                                           .FirstOrDefault(x => x.User_ID == userId && x.Invoice_No == max);

                        int?maxedInvoiceNo = ctx.User_Transaction_Master.Max(u => (int?)u.Invoice_No);

                        //if (executedPayment.state == "approved")
                        //{
                        //---------For new payment record (second time payment and so on)-------
                        if (maxedInvoicedTransaction.Payment_Status != "N/A")
                        {
                            userTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                            DateTime?endDate    = maxedInvoicedTransaction.End_Date;
                            string   strEndDate = string.Empty;
                            if (endDate != null)
                            {
                                strEndDate = endDate.ToString();
                            }

                            userTransaction.Start_Date = Convert.ToDateTime(strEndDate);

                            if (rate_card.Plan_Master.Plan == "Yearly")
                            {
                                userTransaction.End_Date = userTransaction.Start_Date.AddYears(1);
                            }
                            else
                            {
                                userTransaction.End_Date = userTransaction.Start_Date.AddYears(2);
                            }

                            if (maxInvoice == null)
                            {
                                userTransaction.Invoice_No = 1;
                            }
                            else
                            {
                                userTransaction.Invoice_No = maxInvoice + 1;
                            }

                            userTransaction.Payment_Date = DateTime.Today;

                            userTransaction.Payment_Method = "Online";
                            userTransaction.Payment_Status = "Paid";
                            userTransaction.Paypal_PayerId = payerId;
                            userTransaction.PlanID         = rate_card.Plan_Id;
                            userTransaction.Rate_ID        = rate_card.Rate_Id;

                            userTransaction.Status             = "Active";
                            userTransaction.Transaction_Status = "approved";
                            userTransaction.Transection_ID     = Transection_ID;
                            userTransaction.User_ID            = userId;

                            ctx.User_Transaction_Master.Add(userTransaction);
                            ctx.SaveChanges();

                            recordId = userTransaction.Id;

                            rd.Status     = "Success";
                            rd.Message    = "Transaction Saved";
                            rd.Requestkey = "PostTransactions";
                            //return rd;
                        }

                        //---------For updating the demo record (First time payment)-------
                        else
                        {
                            maxedInvoicedTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                            if (rate_card.Plan_Master.Plan == "Yearly")
                            {
                                maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(1);
                            }
                            else
                            {
                                maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(2);
                            }

                            if (maxInvoice == null)
                            {
                                maxedInvoicedTransaction.Invoice_No = 1;
                            }
                            else
                            {
                                maxedInvoicedTransaction.Invoice_No = maxInvoice + 1;
                            }

                            maxedInvoicedTransaction.Payment_Date = DateTime.Today;

                            maxedInvoicedTransaction.Payment_Method = "Online";
                            maxedInvoicedTransaction.Payment_Status = "Paid";
                            maxedInvoicedTransaction.Paypal_PayerId = payerId;
                            maxedInvoicedTransaction.PlanID         = rate_card.Plan_Id;
                            maxedInvoicedTransaction.Rate_ID        = rate_card.Rate_Id;

                            //DateTime? endDate = maxedInvoicedTransaction.End_Date;
                            //string strEndDate = string.Empty;
                            //if (endDate != null)
                            //    strEndDate = endDate.ToString();
                            maxedInvoicedTransaction.Start_Date = DateTime.Today;

                            maxedInvoicedTransaction.Status             = "Active";
                            maxedInvoicedTransaction.Transaction_Status = "approved";
                            maxedInvoicedTransaction.Transection_ID     = Transection_ID;
                            maxedInvoicedTransaction.User_ID            = userId;

                            ctx.Entry(maxedInvoicedTransaction).State = EntityState.Modified;
                            ctx.SaveChanges();

                            recordId = maxedInvoicedTransaction.Id;

                            rd.Status     = "Success";
                            rd.Message    = "Transaction Saved";
                            rd.Requestkey = "PostTransactions";
                            //return rd;
                        }

                        PaypalResponse paypalResponse = new PaypalResponse
                        {
                            user_id            = userId,
                            Paypal_ReferenceId = paymentId,
                            intent             = "sale",
                            payer          = "Android",
                            payee          = string.Empty,
                            note_to_payer  = "From Android",
                            update_time    = Convert.ToString(DateTime.Today),
                            create_time    = Convert.ToString(DateTime.Today),
                            response_state = "approved",
                            failure_reason = string.Empty
                        };

                        ctx.PaypalResponses.Add(paypalResponse);
                        ctx.SaveChanges();

                        MailLog user = ctx.MailLogs.FirstOrDefault(x => x.UserID == userId);
                        if (user != null)
                        {
                            user.LastReminderStatus = "Deactive";
                            ctx.SaveChanges();
                        }


                        transaction.Commit();
                    }

                    Thread thread = new Thread(() => SendInvoice(recordId, userId));
                    thread.Start();

                    User_Profile userMail = ctx.User_Profile.Where(p => p.ID == userId).FirstOrDefault();

                    Thread thread2 = new Thread(() => SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                                                               "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html"));
                    thread2.Start();

                    return(rd);
                }
            }

            //catch (DbEntityValidationException e)
            //{
            //    string errorMessage = string.Empty;

            //    foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
            //    {
            //        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            //            eve.Entry.Entity.GetType().Name, eve.Entry.State);

            //        foreach (DbValidationError ve in eve.ValidationErrors)
            //        {
            //            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
            //                ve.PropertyName, ve.ErrorMessage);
            //            errorMessage = ve.ErrorMessage;

            //            //TempData["message"] = ViewBag.message + ToasterMessage.Message(ToastType.error, errorMessage);
            //        }
            //    }
            //}

            catch (Exception r)
            {
                rd.Status     = "Failure";
                rd.Message    = "Something went wrong. Please contact administrator";
                rd.Requestkey = "PostTransactions";
                return(rd);
            }
        }
Beispiel #7
0
        public ActionResult Create([Bind(Include = "ID,FirstName,LastName,OtherName,StreetNumber,StreetName,PostCode,Suburb,StateID,CountryID,Address,StateEnrolled,LawSocietyNumber,EmailAddress,PhoneNumber,UserName,Password,Date,Role_id")] User_Profile user_Profile)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var getName = db.User_Profile.Where(u => u.EmailAddress == user_Profile.EmailAddress).ToList();
                    if (getName.Count > 0)
                    {
                        ViewBag.message = @"<script type='text/javascript' language='javascript'>alert('User already registered.')
                                         </script>";
                    }
                    else
                    {
                        using (var transaction = db.Database.BeginTransaction())
                        {
                            user_Profile.Date         = DateTime.Today;
                            user_Profile.Device_Imei  = null;
                            user_Profile.Device_Token = null;
                            user_Profile.Device_Type  = null;
                            user_Profile.UserName     = user_Profile.EmailAddress;
                            user_Profile.Role_id      = 1;

                            user_Profile.AccountConfirmed = "No";
                            Guid activationCode = Guid.NewGuid();
                            user_Profile.ActivationCode = activationCode;

                            //----For server----
                            string activationLink = Request.Url.Scheme + "://" + Request.Url.Authority + "/Lexnarro/Signup/ConfirmAccount/" + activationCode;

                            //----For Local----
                            //string activationLink = Request.Url.Scheme + "://" + Request.Url.Authority + "/Signup/ConfirmAccount/" + activationCode;


                            db.User_Profile.Add(user_Profile);
                            db.SaveChanges();

                            decimal id = user_Profile.ID;

                            var user_Transaction_Master = new User_Transaction_Master();

                            var     plan_id = db.Plan_Master.FirstOrDefault(x => x.Plan == "Demo");
                            decimal planID  = Convert.ToDecimal(plan_id.Plan_ID);
                            var     rate_id = db.Rate_Card.FirstOrDefault(x => x.Plan_Id == planID);
                            decimal rateID  = Convert.ToDecimal(rate_id.Rate_Id);
                            user_Transaction_Master.Rate_ID        = rateID; //********************
                            user_Transaction_Master.User_ID        = id;
                            user_Transaction_Master.PlanID         = planID; //********************
                            user_Transaction_Master.Amount         = 0;
                            user_Transaction_Master.Start_Date     = DateTime.Today;
                            user_Transaction_Master.End_Date       = DateTime.Today.AddMonths(3);
                            user_Transaction_Master.Payment_Status = "N/A";
                            user_Transaction_Master.Transection_ID = null;
                            user_Transaction_Master.Status         = "Active";
                            user_Transaction_Master.Payment_Date   = null;
                            user_Transaction_Master.Invoice_No     = null;
                            user_Transaction_Master.Payment_Method = "N/A";

                            db.User_Transaction_Master.Add(user_Transaction_Master);
                            db.SaveChanges();

                            var mailLog = new MailLog();
                            mailLog.UserID        = id;
                            mailLog.ReminderOne   = DateTime.Today.AddDays(2);
                            mailLog.ReminderTwo   = DateTime.Today.AddDays(7);
                            mailLog.ReminderThree = DateTime.Today.AddDays(14);
                            mailLog.ReminderFour  = DateTime.Today.AddDays(30);
                            mailLog.ReminderFive  = DateTime.Today.AddDays(60);
                            mailLog.ReminderSix   = DateTime.Today.AddDays(90);

                            db.MailLogs.Add(mailLog);
                            db.SaveChanges();
                            transaction.Commit();

                            SendMail(user_Profile.FirstName, user_Profile.LastName, user_Profile.EmailAddress,
                                     activationLink, "~/EmailTemplate/SignupConfirmation.html");

                            ViewBag.message = @"<script type='text/javascript' language='javascript'>alert(""Registration successful. Check your email for account activation."")
                                         window.location.href = ""~/../../Home/Login"";</script>";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ViewBag.message = @"<script type='text/javascript' language='javascript'>alert(""Something went Wrong..!!"")</script>";
            }
            ViewBag.CountryID     = new SelectList(db.Country_Master.OrderBy(z => z.Name), "ID", "Name", user_Profile.CountryID);
            ViewBag.Role_id       = new SelectList(db.Role_Master.OrderBy(z => z.Name), "Id", "Name", user_Profile.Role_id);
            ViewBag.StateID       = new SelectList(db.State_Master.OrderBy(z => z.Name), "ID", "Name", user_Profile.StateID);
            ViewBag.StateEnrolled = new SelectList(db.State_Master.OrderBy(z => z.Name), "ID", "Name", user_Profile.StateID);
            return(View());
        }
        private void CheckSubscriptionStatusAndDoStuff()
        {
            try
            {
                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    DateTime dt = DateTime.Today;

                    var expiredPlanUsers = (from s in db.ExpiredPlanUserMailLogs
                                            where s.NextReminderDueDate <= dt
                                            select s).ToList();

                    User_Transaction_Master userTransaction = db.User_Transaction_Master.Include(u => u.User_Profile).
                                                              Include(u => u.Rate_Card).Include(u => u.Plan_Master).Where(u => u.Id == expiredPlanUsers[0].UserID).SingleOrDefault();

                    for (int i = 0; i < expiredPlanUsers.Count; i++)
                    {
                        switch (expiredPlanUsers[i].ReminderType)
                        {
                        case "N/A":

                            // Write Code to Sent Reminder One.

                            //________________________________

                            expiredPlanUsers[i].UserID              = expiredPlanUsers[i].UserID;
                            expiredPlanUsers[i].ReminderType        = "First";
                            expiredPlanUsers[i].ReminderDate        = dt;
                            expiredPlanUsers[i].ReminderStatus      = "Sent";
                            expiredPlanUsers[i].NextReminderDueDate = Convert.ToDateTime(expiredPlanUsers[i].NextReminderDueDate).AddMonths(5);
                            expiredPlanUsers[i].RecordOperationDate = dt;

                            db.Entry(expiredPlanUsers[i]).State = EntityState.Modified;
                            db.SaveChanges();

                            SendResubMail(userTransaction.User_Profile.FirstName, userTransaction.User_Profile.LastName,
                                          userTransaction.User_Profile.EmailAddress, userTransaction.User_ID, userTransaction.End_Date, "~/EmailTemplate/ResubscriptionMail.html");
                            break;


                        case "First":

                            // Write Code to Sent Reminder Two.

                            //________________________________

                            expiredPlanUsers[i].UserID              = expiredPlanUsers[i].UserID;
                            expiredPlanUsers[i].ReminderType        = "Second";
                            expiredPlanUsers[i].ReminderDate        = dt;
                            expiredPlanUsers[i].ReminderStatus      = "Sent";
                            expiredPlanUsers[i].NextReminderDueDate = Convert.ToDateTime(expiredPlanUsers[i].NextReminderDueDate).AddMonths(1).AddDays(-1);
                            expiredPlanUsers[i].RecordOperationDate = dt;

                            db.Entry(expiredPlanUsers[i]).State = EntityState.Modified;
                            db.SaveChanges();

                            SendResubMail(userTransaction.User_Profile.FirstName, userTransaction.User_Profile.LastName,
                                          userTransaction.User_Profile.EmailAddress, userTransaction.User_ID, userTransaction.End_Date, "~/EmailTemplate/ResubscriptionMail.html");
                            break;
                        }
                    }
                }
            }
            catch (Exception r)
            {
                //throw;
            }
        }