コード例 #1
0
        /// <summary>
        /// Create plan for this donation if is does not exist and return its instance. If it does exist
        /// return the instance.
        /// </summary>
        /// <param name="donation"></param>
        /// <returns></returns>
        public StripePlan GetOrCreatePlan(Donation donation)
        {
            var planService = new StripePlanService(_stripeSettings.Value.SecretKey);

            // Construct plan name from the selected donation type and the cycle
            var cycle = EnumInfo <PaymentCycle> .GetValue(donation.CycleId);

            var frequency = EnumInfo <PaymentCycle> .GetDescription(cycle);

            var amount = donation.DonationAmount ?? 0;

            if (donation.DonationAmount == null)
            {
                var model = (DonationViewModel)donation;
                model.DonationOptions = DonationOptions;

                amount = model.GetDisplayAmount();
            }
            var planName = $"{frequency}_{amount}".ToLower();

            // Create new plan is this one does not exist
            if (!Exists(planService, planName))
            {
                var plan = new StripePlanCreateOptions
                {
                    Id                  = planName,
                    Amount              = amount * 100,
                    Currency            = "usd",
                    Name                = planName,
                    StatementDescriptor = _stripeSettings.Value.StatementDescriptor
                };

                // Take care intervals
                if (cycle == PaymentCycle.Quarter)
                {
                    plan.IntervalCount = 3;
                    plan.Interval      = "month";
                }
                else
                {
                    plan.Interval = cycle.ToString().ToLower(); // day/month/year
                }
                return(planService.Create(plan));
            }
            else
            {
                return(planService.Get(planName));
            }
        }
コード例 #2
0
        /// <summary>
        /// Create plan for this donation if is does not exist and return its instance. If it does exist
        /// return the instance.
        /// </summary>
        /// <param name="donation"></param>
        /// <returns></returns>
        public StripePlan GetOrCreatePlan(Donation donation)
        {
            var planService = new StripePlanService(_stripeSettings.Value.SecretKey);

            // Construct plan name from the selected donation type and the cycle
            var cycle = EnumInfo <PaymentCycle> .GetValue(donation.CycleId);

            var frequency = EnumInfo <PaymentCycle> .GetDescription(cycle);

            decimal amount   = donation.DonationAmount ?? 0;
            string  currency = donation.Currency;
            var     planName = $"{frequency}_{amount}_{currency}".ToLower(); //

            // Create new plan is this one does not exist
            if (!Exists(planService, planName))
            {
                var plan = new StripePlanCreateOptions
                {
                    Id       = planName,
                    Amount   = Convert.ToInt32(amount * 100),
                    Currency = currency.ToLower(),
                    Nickname = planName,
                    Product  = new StripePlanProductCreateOptions()
                    {
                        Name = planName
                    }
                    //StatementDescriptor = _stripeSettings.Value.StatementDescriptor
                };

                // Take care intervals
                if (cycle == PaymentCycle.Quarter)
                {
                    plan.IntervalCount = 3;
                    plan.Interval      = "month";
                }
                else
                {
                    plan.Interval = cycle.ToString().ToLower(); // day/month/year
                }


                return(planService.Create(plan));
            }
            else
            {
                return(planService.Get(planName));
            }
        }
コード例 #3
0
        public string GetCycle(string CycleId)
        {
            var pc = EnumInfo <PaymentCycle> .GetValue(CycleId);

            return(EnumInfo <PaymentCycle> .GetDescription(pc));
        }
コード例 #4
0
        public static void SeedData(IdentityDBContext context)
        {
            Console.WriteLine("Applying database migrations...");

            context.Database.Migrate();

            Console.WriteLine("Seeding initial data...");

            bool            newEntry  = false;
            Maybe <AppUser> adminUser = context.AppUser.FirstOrDefault(e => e.Username == "*****@*****.**");

            if (adminUser.HasNoValue)
            {
                adminUser = new AppUser(
                    firstName: "Dhanuka",
                    lastName: "Jayasinghe",
                    username: Email.Create("*****@*****.**").Value,
                    password: Password.Create("Admin@#456").Value
                    );
                context.AppUser.Add(adminUser.Value);
                newEntry = true;
            }

            Maybe <AppPermission> iamAdminPermission = context.AppPermission.FirstOrDefault(e => e.Name == Permission.UserAccountAdmin.ToString());

            if (iamAdminPermission.HasNoValue)
            {
                iamAdminPermission = new AppPermission(
                    name: Permission.UserAccountAdmin.ToString(),
                    description: EnumInfo.GetDescription(Permission.UserAccountAdmin)
                    );
                context.AppPermission.Add(iamAdminPermission.Value);
                newEntry = true;
            }

            Maybe <AppGroup> adminGroup = context.AppGroup.FirstOrDefault(e => e.Name == SystemUserGroup.ADMIN.ToString());

            if (adminGroup.HasNoValue)
            {
                adminGroup = new AppGroup(SystemUserGroup.ADMIN.ToString(), "System administrator permissions");
                context.AppGroup.Add(adminGroup.Value);
                newEntry = true;
            }

            if (newEntry)
            {
                context.SaveChanges();
                newEntry = false;
            }

            if (!context.AppGroupPermission.Any(e => e.PermissionId == iamAdminPermission.Value.Id && e.AppGroupId == adminGroup.Value.Id))
            {
                AppGroupPermission groupPermission = new AppGroupPermission(iamAdminPermission, adminGroup);
                context.AppGroupPermission.Add(groupPermission);
                newEntry = true;
            }
            if (!context.AppUserGroup.Any(e => e.AppUserId == adminUser.Value.Id && e.AppGroupId == adminGroup.Value.Id))
            {
                AppUserGroup adminUserGroup = new AppUserGroup(adminUser, adminGroup);
                context.AppUserGroup.Add(adminUserGroup);
                newEntry = true;
            }

            if (newEntry)
            {
                context.SaveChanges();
            }

            Console.WriteLine("Seeding complete");
        }