private static FifthweekUser CreateUser(FifthweekDbContext databaseContext, Random random, UserId userId)
 {
     var user = UserTests.UniqueEntity(random);
     user.Id = userId.Value;
     databaseContext.Users.Add(user);
     return user;
 }
        private void CreateUser(Random random, FifthweekDbContext databaseContext, UserId userId)
        {
            var creator = UserTests.UniqueEntity(random);

            creator.Id = userId.Value;

            databaseContext.Users.Add(creator);
        }
 private static void PayCreatorUncommitted(
     FifthweekDbContext databaseContext,
     Random random,
     UserId sourceUserId,
     UserId destinationUserId,
     decimal amount)
 {
     AddUncommittedRecord(databaseContext, random, sourceUserId, destinationUserId, amount);
 }
コード例 #4
0
        private static TransactionReference AddCredit(FifthweekDbContext databaseContext, Random random, UserId userId, decimal amount)
        {
            var transactionReference = TransactionReference.Random();

            AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, -1.2m * amount, LedgerAccountType.Stripe, LedgerTransactionType.CreditAddition, transactionReference);
            AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, amount, LedgerAccountType.FifthweekCredit, LedgerTransactionType.CreditAddition, transactionReference);
            AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, (1.2m * amount) - amount, LedgerAccountType.SalesTax, LedgerTransactionType.CreditAddition, transactionReference);
            return(transactionReference);
        }
コード例 #5
0
        private async Task CreateUserAsync(FifthweekDbContext databaseContext, UserId userId)
        {
            var user = UserTests.UniqueEntity(this.random);

            user.Id    = userId.Value;
            user.Email = userId.Value + "@test.com";

            databaseContext.Users.Add(user);
            await databaseContext.SaveChangesAsync();
        }
コード例 #6
0
        public static void Register()
        {
            Database.SetInitializer(new MigrateDatabaseToLatestVersion <FifthweekDbContext, Configuration>());

            // This is to ensure the database is created on startup, before any commands occur that are wrapped in transactions.
            using (var db = new FifthweekDbContext())
            {
                Trace.WriteLine("Starting with " + db.Users.Count() + " users.");
            }
        }
 private static void PayCreator(
     FifthweekDbContext databaseContext,
     Random random,
     UserId sourceUserId,
     UserId destinationUserId,
     decimal amount)
 {
     AddAppendOnlyLedgerRecord(databaseContext, random, sourceUserId, destinationUserId, -amount, LedgerAccountType.FifthweekCredit, LedgerTransactionType.SubscriptionPayment);
     AddAppendOnlyLedgerRecord(databaseContext, random, null, destinationUserId, amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment);
     AddAppendOnlyLedgerRecord(databaseContext, random, null, destinationUserId, -0.7m * amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment);
     AddAppendOnlyLedgerRecord(databaseContext, random, destinationUserId, destinationUserId, 0.7m * amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment);
 }
コード例 #8
0
        private static List <AppendOnlyLedgerRecord> AddCredit(FifthweekDbContext databaseContext, DateTime timestamp, UserId userId, decimal amount, TransactionReference transactionReference = null)
        {
            var transactionType = amount < 0 ? LedgerTransactionType.CreditRefund : LedgerTransactionType.CreditAddition;
            var result          = new List <AppendOnlyLedgerRecord>();

            if (transactionReference == null)
            {
                transactionReference = TransactionReference.Random();
            }

            result.Add(AddAppendOnlyLedgerRecord(databaseContext, timestamp, userId, null, -1.2m * amount, LedgerAccountType.Stripe, transactionType, transactionReference));
            result.Add(AddAppendOnlyLedgerRecord(databaseContext, timestamp, userId, null, amount, LedgerAccountType.FifthweekCredit, transactionType, transactionReference));
            result.Add(AddAppendOnlyLedgerRecord(databaseContext, timestamp, userId, null, (1.2m * amount) - amount, LedgerAccountType.SalesTax, transactionType, transactionReference));
            return(result);
        }
        private static List <AppendOnlyLedgerRecord> PayCreator(
            FifthweekDbContext databaseContext,
            Random random,
            UserId sourceUserId,
            UserId destinationUserId,
            decimal amount)
        {
            var result = new List <AppendOnlyLedgerRecord>();
            var transactionReference = Guid.NewGuid();

            result.Add(AddAppendOnlyLedgerRecord(databaseContext, random, sourceUserId, destinationUserId, -amount, LedgerAccountType.FifthweekCredit, LedgerTransactionType.SubscriptionPayment, transactionReference));
            result.Add(AddAppendOnlyLedgerRecord(databaseContext, random, null, destinationUserId, amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment, transactionReference));
            result.Add(AddAppendOnlyLedgerRecord(databaseContext, random, null, destinationUserId, -0.7m * amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment, transactionReference));
            result.Add(AddAppendOnlyLedgerRecord(databaseContext, random, destinationUserId, destinationUserId, 0.7m * amount, LedgerAccountType.FifthweekRevenue, LedgerTransactionType.SubscriptionPayment, transactionReference));
            return(result);
        }
 private static void AddUncommittedRecord(
     FifthweekDbContext databaseContext,
     Random random,
     UserId subscriberId,
     UserId creatorId,
     decimal amount)
 {
     databaseContext.UncommittedSubscriptionPayments.Add(
         new UncommittedSubscriptionPayment(
             subscriberId.Value,
             creatorId.Value,
             Now.AddDays(random.Next(-100, 100)),
             Now.AddDays(random.Next(-100, 100)),
             amount,
             Guid.NewGuid()));
 }
 private static void AddAppendOnlyLedgerRecord(FifthweekDbContext databaseContext, Random random, UserId accountOwnerId, UserId counterpartyId, decimal amount, LedgerAccountType ledgerAccountType, LedgerTransactionType transactionType)
 {
     databaseContext.AppendOnlyLedgerRecords.Add(
         new AppendOnlyLedgerRecord(
             Guid.NewGuid(),
             accountOwnerId == null ? Guid.Empty : accountOwnerId.Value,
             counterpartyId == null ? (Guid?)null : counterpartyId.Value,
             Now.AddDays(random.Next(-100, 100)),
             amount,
             ledgerAccountType,
             transactionType,
             Guid.NewGuid(),
             Guid.NewGuid(),
             null,
             null,
             null));
 }
コード例 #12
0
        private static AppendOnlyLedgerRecord AddAppendOnlyLedgerRecord(
            FifthweekDbContext databaseContext, DateTime timestamp, UserId accountOwnerId, UserId counterpartyId, decimal amount,
            LedgerAccountType ledgerAccountType, LedgerTransactionType transactionType, TransactionReference transactionReference)
        {
            var item = new AppendOnlyLedgerRecord(
                Guid.NewGuid(),
                accountOwnerId == null ? Guid.Empty : accountOwnerId.Value,
                counterpartyId == null ? (Guid?)null : counterpartyId.Value,
                timestamp,
                amount,
                ledgerAccountType,
                transactionType,
                transactionReference.Value,
                Guid.NewGuid(),
                null,
                null,
                null);

            databaseContext.AppendOnlyLedgerRecords.Add(item);

            return(item);
        }
        private static AppendOnlyLedgerRecord AddAppendOnlyLedgerRecord(FifthweekDbContext databaseContext, Random random, UserId accountOwnerId, UserId counterpartyId, decimal amount, LedgerAccountType ledgerAccountType, LedgerTransactionType transactionType, Guid transactionReference, bool save)
        {
            var record = new AppendOnlyLedgerRecord(
                Guid.NewGuid(),
                accountOwnerId == null ? Guid.Empty : accountOwnerId.Value,
                counterpartyId == null ? (Guid?)null : counterpartyId.Value,
                Now.AddDays(random.Next(-100, 100)),
                amount,
                ledgerAccountType,
                transactionType,
                transactionReference,
                Guid.NewGuid(),
                null,
                null,
                null);

            if (save)
            {
                databaseContext.AppendOnlyLedgerRecords.Add(record);
            }

            return record;
        }
コード例 #14
0
 public FifthweekRoleStore(FifthweekDbContext context)
     : base(context)
 {
 }
コード例 #15
0
 public FifthweekUserStore(FifthweekDbContext context)
     : base(context)
 {
 }
 private static void AddCredit(FifthweekDbContext databaseContext, Random random, UserId userId, decimal amount)
 {
     AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, -1.2m * amount, LedgerAccountType.Stripe, LedgerTransactionType.CreditAddition);
     AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, amount, LedgerAccountType.FifthweekCredit, LedgerTransactionType.CreditAddition);
     AddAppendOnlyLedgerRecord(databaseContext, random, userId, null, (1.2m * amount) - amount, LedgerAccountType.SalesTax, LedgerTransactionType.CreditAddition);
 }