예제 #1
0
        public static int NextRequestSerial(this PassbookDB db)
        {
            var activesMax  = db.ActiveRequests.GetMaxSerial();
            var inactivsMax = db.InactiveRequests.GetMaxSerial();

            return(Math.Max(activesMax, inactivsMax) + 1);
        }
        internal static SoaRowsRepo1 CreateInMemoryShard(this MonthShardPassbookDB monthDb)
        {
            var moRepo = monthDb.GetSoaRepo();
            var pbkDB  = new PassbookDB(monthDb.BankAccountId, new MemoryStream(), monthDb.CurrentUser);

            return(new SoaRowsRepo1(moRepo.BaseBalance, moRepo.BaseDate, pbkDB));
        }
        internal static SoaRowsRepo1 CreateFileBasedShard(this MonthShardPassbookDB monthDb, DateTime day1)
        {
            var moRepo = monthDb.GetSoaRepo();
            var dbPath = Path.Combine(monthDb.GetShardsDir(), GetFilename(day1));
            var pbkDB  = new PassbookDB(monthDb.BankAccountId, dbPath, monthDb.CurrentUser);

            return(new SoaRowsRepo1(moRepo.BaseBalance, moRepo.BaseDate, pbkDB));
        }
예제 #4
0
        public static void ToBankTransaction(this PassbookDB pbk, RequestedChequeDTO chq, DateTime clearedDate, SoaRowsRepo1 txnsRepo)
        {
            //txnsRepo.Withdraw(clearedDate, req.Payee, req.Purpose, req.Amount.Value, chq.ChequeNumber.ToString());
            var dto = ToClearedTransaction(chq, clearedDate);

            txnsRepo.UpsertAndUpdateBalances(dto);
            //pbk.InactiveCheques.Insert(chq);
            pbk.ActiveCheques.Delete(chq);
        }
예제 #5
0
        public void Createsmetafornewaccounts()
        {
            var db   = new PassbookDB(2, new MemoryStream(), "");
            var meta = db.Metadata;

            db.GetSoaRepo().Deposit(DateTime.Now, "", "", 1, "");
            meta.HasName("Acct_2").Should().BeTrue();
            meta.HasName("Acct2_BaseDate").Should().BeTrue();
            meta.HasName("Acct2_BaseBalance").Should().BeTrue();
        }
예제 #6
0
        public static DateTime NextRequestDate(this PassbookDB db)
        {
            var repo = db.ActiveRequests;

            if (!repo.Any())
            {
                return(DateTime.Now);
            }
            return(repo.GetAll().Max(_ => _.RequestDate));
        }
예제 #7
0
 public static void ToPreparedCheque(this PassbookDB pbk, FundRequestDTO req, int chequeNumber, DateTime chequeDate)
 {
     //if (ChequeExists(chequeNumber, pbk)) return;
     pbk.ActiveCheques.Insert(new RequestedChequeDTO
     {
         Request      = req,
         ChequeNumber = chequeNumber,
         ChequeDate   = chequeDate,
     });
     pbk.InactiveRequests.Insert(req);
     pbk.ActiveRequests.Delete(req);
 }
예제 #8
0
        public void Createsdefaultbankacctifnoaccountsyet()
        {
            var db = new PassbookDB(1, new MemoryStream(), "");

            db.AccountNames.Should().HaveCount(1);
            var meta = db.Metadata;

            meta.HasName("Acct_1").Should().BeTrue();
            var repo = db.GetSoaRepo();

            meta.HasName("Acct1_BaseDate").Should().BeTrue();
            meta.HasName("Acct1_BaseBalance").Should().BeTrue();
        }
예제 #9
0
 public static IEnumerable <string> GetPayees(this PassbookDB db)
 => db.ActiveRequests.GetPayees()
 .Concat(db.InactiveRequests.GetPayees())
 .GroupBy(_ => _)
 .Select(g => g.First());
예제 #10
0
 public static bool HasRequestSerial(this PassbookDB db, int serialNum)
 => db.ActiveRequests.HasRequestSerial(serialNum) ||
 db.InactiveRequests.HasRequestSerial(serialNum);
예제 #11
0
        private SoaRowsRepo1 CreateSUT(DateTime baseDate, decimal baseBalance)
        {
            var db = new PassbookDB(1, new MemoryStream(), "");

            return(db.GetSoaRepo(baseBalance, baseDate));
        }
예제 #12
0
 public SoaRowsRepo1(decimal baseBalance, DateTime baseDate, PassbookDB db) : base(db.RepoKey, db)
 {
     BaseBalance = baseBalance;
     BaseDate    = baseDate;
 }
예제 #13
0
        //todo: implem this
        //private static bool ChequeExists(int chequeNumber, PassbookDB pbk)
        //{
        //    //var exists = pbk.InactiveCheques
        //    throw new NotImplementedException();
        //}


        public static void ToIssuedCheque(this PassbookDB pbk, RequestedChequeDTO cheque, string issuedTo, DateTime issuedDate)
        {
            cheque.IssuedTo   = issuedTo;
            cheque.IssuedDate = issuedDate;
            pbk.ActiveCheques.Update(cheque);
        }