public async Task Create_Wallet() { Wallet wallet = new Wallet { Id = Guid.NewGuid(), Name = "My Wallet 1", CreatedDate = DateTime.Now, OwnerId = Guid.NewGuid().ToString(), Moneys = new List <Money> { new Money { Amount = 120.00M, CurrencyCode = "TRY", CreatedDate = DateTime.Now }, new Money { Amount = 50.00M, CurrencyCode = "USD", CreatedDate = DateTime.Now } } }; await _context.Wallets.AddAsync(wallet); var result = await _context.SaveChangesAsync(); Assert.True(result > 0); }
public async Task <Guid> Handle(AddMoneyToWallet request, CancellationToken cancellationToken) { Money money = new Money { Amount = request.Amount, WalletId = request.WalletId, CreatedDate = DateTime.Now, CurrencyCode = request.CurrencyCode, Id = Guid.NewGuid() }; ProcessLog processLog = new ProcessLog { Amount = request.Amount, CurrencyCode = request.CurrencyCode, CreatedDate = DateTime.Now, LogType = ProcessLogType.Deposit }; await _context.Moneys.AddAsync(money, cancellationToken); await _context.ProcessLogs.AddAsync(processLog, cancellationToken); var create = await _context.SaveChangesAsync(cancellationToken); return(money.Id); }
public async Task <Guid> Handle(UpdateWallet request, CancellationToken cancellationToken) { Wallet wallet = await _context.Wallets.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); // Cüzdan yoksa hata gönder. if (wallet == null) { throw new Exception("Cüzdan bulunamadı!"); } wallet.Name = request.Name; wallet.UpdatedDate = DateTime.Now; _context.Wallets.Update(wallet); var update = await _context.SaveChangesAsync(cancellationToken); return(wallet.Id); }
public async Task <Guid> Handle(CreateWallet request, CancellationToken cancellationToken) { // Aynı owner'a ait aynı isimde cüzdan olmasının önüne geçer. var existsWalletName = await _context.Wallets.AnyAsync( x => x.OwnerId == request.OwnerId && string.Equals(x.Name, request.Name, StringComparison.CurrentCultureIgnoreCase), cancellationToken); if (existsWalletName) { throw new Exception("Bu isimde daha önce bir cüzdan eklenmiş! Lütfen başka bir isim kullanınız!"); } Wallet wallet = new Wallet { Id = Guid.NewGuid(), Name = request.Name, CreatedDate = DateTime.Now, OwnerId = request.OwnerId, }; // Cüzdan oluşturulurken para varsa eklenecek. if (request.Moneys != null && request.Moneys.Any()) { wallet.Moneys = request.Moneys.Select(w => new Money { Amount = w.Amount, CurrencyCode = w.CurrencyCode, CreatedDate = DateTime.Now, }).ToList(); // Eklenen paraların logları tutuluyor. ProcessLog[] processLogs = wallet.Moneys.Select(x => new ProcessLog { Amount = x.Amount, CurrencyCode = x.CurrencyCode, CreatedDate = DateTime.Now, LogType = ProcessLogType.Deposit }).ToArray(); await _context.ProcessLogs.AddRangeAsync(processLogs, cancellationToken); } await _context.Wallets.AddAsync(wallet, cancellationToken); var save = await _context.SaveChangesAsync(cancellationToken); return(wallet.Id); }
public async Task <bool> Handle(DeleteWallet request, CancellationToken cancellationToken) { Wallet wallet = await _context.Wallets .Include(x => x.Moneys) .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); // İçinde para olan cüzdan silinemez. var isThereMoney = wallet.Moneys.Sum(x => x.Amount); if (isThereMoney > 0) { throw new Exception("İçinde para olan bir cüzdanı silemezsiniz!"); } _context.Wallets.Remove(wallet); var delete = await _context.SaveChangesAsync(cancellationToken); return(delete > 0); }