public static void InitialSeed(BillsPaymentSystemContext context)
        {
            UserGenerator.Seed(context, 20);

            var users = context.Users.ToList();

            PaymentMethodGenerator.Seed(context, 30, users);
        }
        private static void SeedPaymentMethods(BillsPaymentSystemContext ctx)
        {
            var users         = ctx.Users.Select(u => u.UserId).ToArray();
            var randomUsers   = Enumerable.Range(0, 19).OrderBy(n => rnd.Next()).Take(10).ToArray();
            int creditCardId  = 1;
            int bankAccountId = 1;

            for (int i = 0; i < users.Length; i++)
            {
                var paymentMethod = PaymentMethodGenerator.NewPaymentMethod(ctx, users[i], creditCardId, bankAccountId);

                if (IsValid(paymentMethod))
                {
                    ctx.PaymentMethods.Add(paymentMethod);

                    if (paymentMethod.BankAccountId == null)
                    {
                        creditCardId++;
                    }
                    else
                    {
                        bankAccountId++;
                    }
                }
            }

            for (int i = 0; i < randomUsers.Length; i++)
            {
                var paymentMethod = PaymentMethodGenerator.NewPaymentMethod(ctx, users[randomUsers[i]], creditCardId, bankAccountId);

                if (IsValid(paymentMethod))
                {
                    ctx.PaymentMethods.Add(paymentMethod);

                    if (paymentMethod.BankAccountId == null)
                    {
                        creditCardId++;
                    }
                    else
                    {
                        bankAccountId++;
                    }
                }
            }

            ctx.SaveChanges();
        }