public async Task<Subscription> GetSubscriptionAsync(AuthUser user)
        {
            ApiConfig.Configure("auluxa-test", "test_HQFev3LA5amQop9cNCXjOnEor0kG4fmQ");

            EntityResult cbResult = await Task.Run
            (() =>
                ChargeBee.Models.Subscription.Retrieve(user.ChargeBeeSubscriptionId)
                .Request()
            );

            SubscriptionType subType;
            switch (cbResult.Subscription.PlanId)
            {
                case "free": subType = SubscriptionType.Free; break;
                case "advanced": subType = SubscriptionType.Advanced; break;
                case "premium": subType = SubscriptionType.Premium; break;
                default: throw new ArgumentOutOfRangeException();
            }

            var subscription = new Subscription
            {
                SubscriptionType = subType,
                CostPerMonth = cbResult.Plan.Price,
            };

            return subscription;
        }
        public async Task<Subscription> SubscribeToPlanAsync(AuthUser user, Subscription subscription)
        {
            ApiConfig.Configure("auluxa-test", "test_HQFev3LA5amQop9cNCXjOnEor0kG4fmQ");

            string cbSubscriptionPlan;
            switch (subscription.SubscriptionType)
            {
                case SubscriptionType.Free: cbSubscriptionPlan = "free"; break;
                case SubscriptionType.Advanced: cbSubscriptionPlan = "advanced"; break;
                case SubscriptionType.Premium: cbSubscriptionPlan = "premium"; break;
                default: throw new ArgumentOutOfRangeException();
            }

            // create customer
            ChargeBee.Models.Customer chargebeeCustomer = await Task.Run
                (() =>
                    ChargeBee.Models.Customer.Create()
                        .Email(user.Email)
                        .Request().Customer);

            //ChargeBee.Models.Subscription chargebeeSubscription = await Task.Run
            //(() =>
            //    ChargeBee.Models.Subscription.Create()
            //        .PlanId(cbSubscriptionPlan)
            //        .CustomerEmail(chargebeeCustomer.Email)
            //        .CustomerFirstName("John")
            //      .CustomerLastName("Doe")
            //      .CustomerPhone("+1-949-999-9999")
            //      .BillingAddressFirstName("John")
            //      .BillingAddressLastName("Doe")
            //      .BillingAddressLine1("PO Box 9999")
            //      .BillingAddressCity("Walnut")
            //      .BillingAddressState("California")
            //      .BillingAddressZip("91789")
            //      .BillingAddressCountry("US")
            //        .Request().Subscription
            //);

            return subscription;
        }
Exemplo n.º 3
0
        public async Task<IHttpActionResult> RegisterAsync([FromBody]UserViewModel userViewModel)
        {
            // transform view model to model
            string guid = Guid.NewGuid().ToString();
            var userToCreate = new AuthUser
            {
                Id = guid,
                ParentUserId = guid,
                UserName = userViewModel.Email,
                Email = userViewModel.Email,
            };

            // create the user
            IdentityResult result = await _userManager.CreateAsync(userToCreate, userViewModel.Password);
            if (!result.Succeeded)
            {
                foreach (string error in result.Errors)
                    ModelState.AddModelError(error, error);
                return BadRequest(ModelState);
            }

            // assign user to specific role
            AuthUser createdUser = await _userManager.FindByEmailAsync(userToCreate.Email);
            IdentityResult roleResult = await _userManager.AddToRolesAsync(createdUser.Id, "Admin");
            if (!roleResult.Succeeded)
            {
                foreach (string error in result.Errors)
                    ModelState.AddModelError(error, error);
                return BadRequest(ModelState);
            }

            // send the confirm email
            await SendConfirmEmailAsync(createdUser.Id);

            return Ok(result);
        }
 public Task<Subscription> DeleteSubscriptionAsync(AuthUser user, Subscription subscription)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 5
0
        public async Task<IHttpActionResult> CreateProfileAsync([FromBody] ProfileViewModel userViewModel)
        {
            // Get the parentId
            AuthUser parentUser = await _userManager.FindByEmailAsync(User.Identity.Name);
            if (parentUser == null)
            {
                ModelState.AddModelError("", "This email has not been registered before.");
                return BadRequest(ModelState);
            }

            // transform view model to model
            var userToCreate = new AuthUser
            {
                UserName = userViewModel.Email,
                Email = userViewModel.Email,
                ParentUserId = parentUser.Id,
                EmailConfirmed = true
            };

            // create the user
            IdentityResult result = await _userManager.CreateAsync(userToCreate);
            if (!result.Succeeded)
            {
                foreach (string error in result.Errors)
                    ModelState.AddModelError(error, error);
                return BadRequest(ModelState);
            }

            if (userViewModel.Role == "Admin")
            {
                IdentityResult roleResult = await _userManager.AddToRoleAsync(userToCreate.Id, "Admin");
                if (!roleResult.Succeeded)
                {
                    foreach (string error in result.Errors)
                        ModelState.AddModelError(error, error);
                    return BadRequest(ModelState);
                }
            }

            // send the confirm email
            await SendConfirmPasswordAsync(userToCreate.Id);

            return Ok(result);
        }