public string Subscribe(string planId)
        {
            try
            {
                var userId     = Int32.Parse(HttpContext.Session.GetString("UserID"));
                var user       = _context.Users.Find(userId);
                var customerId = user.CustomerId;

                StripeLib stripeLib = new StripeLib();

                if (stripeLib.HasSubscription(customerId))
                {
                    stripeLib.DeleteSubscriptions(customerId);
                }

                var subscriptionId = stripeLib.Subscribe(customerId, planId);

                if (subscriptionId == null)
                {
                    return("false");
                }

                return(subscriptionId);
            }
            catch (Exception ex)
            {
                return("false");
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Profile(int?id)
        {
            if (id == null || HttpContext.Session.GetString("User_Name").Equals("") || HttpContext.Session.GetString("UserID").Equals(""))
            {
                return(NotFound());
            }
            var user = await _context.Users.FindAsync(id);

            if (user == null)
            {
                return(NotFound());
            }

            string date31string = user.DateOfBirth.ToString("yyyy-MM-dd");

            user.DateOfBirth = DateTime.ParseExact(date31string, "yyyy-MM-dd", null);

            try
            {
                StripeLib stripeLib = new StripeLib();
                ViewBag.subscription = stripeLib.GetSubscription(user.CustomerId);
            }
            catch (Exception ex)
            {
                ViewBag.subscription = "N/A";
            }

            return(View(user));
        }
        public async Task <IActionResult> IndexStripe()
        {
            StripeLib stripeLib = new StripeLib();
            var       plans     = stripeLib.GetPlans();

            ViewData["plans"] = plans;

            return(View());
        }
Esempio n. 4
0
        public string CreateCard(string number, int month, int year, string cvc)
        {
            try
            {
                var userId     = Int32.Parse(HttpContext.Session.GetString("UserID"));
                var user       = _context.Users.Find(userId);
                var customerId = user.CustomerId;

                StripeLib stripeLib = new StripeLib();
                stripeLib.SetCard(customerId, number, month, year, cvc);
                return("true");
            }
            catch (Exception ex)
            {
                return("false");
            }
        }
Esempio n. 5
0
        // GET: Users/Card
        public string Card()
        {
            var userId = Int32.Parse(HttpContext.Session.GetString("UserID"));
            var user   = _context.Users.Find(userId);

            var       customerId = user.CustomerId;
            StripeLib stripeLib  = new StripeLib();

            Stripe.StripeList <Stripe.Card> cards = stripeLib.GetCards(customerId);

            if (cards.Count() == 0)
            {
                return(null);
            }

            return(cards.First().Id);
        }
Esempio n. 6
0
        public async Task <IActionResult> Register([Bind("UserID,Email,Name,Password,ConfirmedEmail,Street,PostalCode,City,Phone,DateOfBirth,RoleID")] Users users)
        {
            if (ModelState.IsValid == true)
            {
                if (!_context.Users.Any(x => x.Email == users.Email))
                {
                    /** Password encrypting ***/

                    /*var data = Encoding.ASCII.GetBytes(users.Password);
                     * var sha256 = new SHA256CryptoServiceProvider();
                     * var sha256data = sha256.ComputeHash(data);
                     * users.Password = sha256data;*/
                    /** End of Password encrypting **/
                    users.RoleID = 2;
                    _context.Add(users);

                    await _context.SaveChangesAsync();

                    /** Send Confirmation Email **/

                    int user_id = (from user in _context.Users select user.UserID).Max();
                    var result  = new MailSenderController(_configuration).PostMessage(users.Email, users.Name, users.UserID);

                    /** End of Confirmation Email **/
                    // Register User as a Customer on Stripe
                    StripeLib stripeLib = new StripeLib();
                    users.CustomerId = await stripeLib.CreateCustomer(users);

                    await _context.SaveChangesAsync();

                    insertToRegisterTable();

                    TempData["Message"] = "A sua conta foi criada com sucesso!Por favor verifique o seu email e clique no email para concluir o registo da sua conta e prosseguir para o login!";
                    return(RedirectToAction("Index", "Home", null));
                }

                ModelState.AddModelError("Email", "Email já existe!");
                return(View(users));
            }
            return(View(users));
        }
Esempio n. 7
0
        public async Task <IActionResult> Create([Bind("UserID,Email,Name,Password,ConfirmedEmail,Street,PostalCode,City,Phone,DateOfBirth,RoleID")] Users users)
        {
            if (!GetAuthorization(1, 'c'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            if (!checkValues(users))
            {
                ViewBag.RoleTypes = _context.Roles.AsParallel();
                return(View(users));
            }
            if (ModelState.IsValid)
            {
                _context.Add(users);
                await _context.SaveChangesAsync();

                /** Send Confirmation Email **/
                int user_id = (from user in _context.Users select user.UserID).Max();
                var result  = new MailSenderController(_configuration).PostMessage(users.Email, users.Name, users.UserID);

                /** End of Confirmation Email **/
                // Register User as a Customer on Stripe
                StripeLib stripeLib = new StripeLib();
                users.CustomerId = await stripeLib.CreateCustomer(users);

                await _context.SaveChangesAsync();

                insertToRegisterTable();
                TempData["Message"] = "Utilizador criado com sucesso!Por favor, o utilizador que verifique o seu email e clique no link para concluir o registo da sua conta e para prosseguir para o login!";
                return(RedirectToAction(nameof(Index)));
            }
            TempData["Message"] = "Por favor, siga os exemplos para continuar!";
            ViewBag.RoleTypes   = _context.Roles.AsParallel();
            return(View());
        }
Esempio n. 8
0
        public async Task <IActionResult> Index(string searchString, string roleType)
        {
            if (!GetAuthorization(1, 'r'))
            {
                return(NotFound());
            }
            ViewBag.Permission = getPermissions();
            var query = from usersJ in _context.Users
                        join rolesJ in _context.Roles on usersJ.RoleID equals rolesJ.RoleID
                        select new
            {
                UserID         = usersJ.UserID,
                Name           = usersJ.Name,
                Email          = usersJ.Email,
                ConfirmedEmail = usersJ.ConfirmedEmail,
                RoleName       = rolesJ.RoleName,
                RoleID         = rolesJ.RoleID,
                CustomerID     = usersJ.CustomerId
            };

            if (!String.IsNullOrEmpty(searchString))
            {
                query = query.Where(user => user.Name.Contains(searchString));
            }

            if (!String.IsNullOrEmpty(roleType))
            {
                query = query.Where(user => user.RoleName.Contains(roleType));
            }

            var result = query.ToList().Select(e => new Users
            {
                UserID         = e.UserID,
                Name           = e.Name,
                Email          = e.Email,
                ConfirmedEmail = e.ConfirmedEmail,
                RoleName       = e.RoleName,
                RoleID         = e.RoleID,
                CustomerId     = e.CustomerID
            }).ToList();

            var rolesTypesQuery = from roles in _context.Roles
                                  orderby roles.RoleName
                                  select roles.RoleName;

            var usersIndexVM = new UsersIndexViewModel
            {
                Users     = result,
                RolesType = new SelectList(rolesTypesQuery.Distinct().ToList()),
            };

            Dictionary <int, string> dict = new Dictionary <int, string>();
            StripeLib stripeLib           = new StripeLib();

            foreach (Users user in result)
            {
                try
                {
                    dict.Add(user.UserID, stripeLib.GetSubscription(user.CustomerId));
                }
                catch (Exception ex)
                {
                    dict.Add(user.UserID, "N/A");
                }
            }

            ViewBag.Subscriptions = dict;

            return(View(usersIndexVM));
        }