private bool ValidateDto(CreateTransactionDto dto) { Guard.Against.Null(dto, "Transaction"); Guard.Against.Negative(dto.Amount, "Amount"); Guard.Against.Zero((int)dto.Type, ""); switch (dto.Type) { case TransactionType.Deposit: Guard.Against.Zero(dto.ToAccountId, ""); break; case TransactionType.Withdraw: Guard.Against.Zero(dto.FromAccountId, ""); break; case TransactionType.Transfer: Guard.Against.Zero(dto.ToAccountId, ""); Guard.Against.Zero(dto.FromAccountId, ""); break; default: return(false); } ; return(true); }
public async Task CreateTransactionAsync(string payeeEmail, CreateTransactionDto createTransactionDto) { var payee = await _userRepository.GetByEmailAsync(payeeEmail); var recipient = await _userRepository.GetByNameAsync(createTransactionDto.Recipient); ValidateCreation(payee, recipient, createTransactionDto.Amount, createTransactionDto.Recipient); payee.Balance -= createTransactionDto.Amount; recipient.Balance += createTransactionDto.Amount; var transaction = new PwTransaction { Payee = payee, Recipient = recipient, ResultingPayeeBalance = payee.Balance, ResultingRecipientBalance = recipient.Balance, Amount = createTransactionDto.Amount, TransactionDateTime = DateTime.Now }; await _transactionRepository.AddAsync(transaction); await _balanceHubContext.Clients.Group(recipient.Email).UpdateBalance(recipient.Balance); }
public ActionResult <TransactionDto> CreateTransaction(CreateTransactionDto transactionDto) { Transaction transaction = new() { senderAccountNumber = transactionDto.senderAccountNumber, receiverAccountNumber = transactionDto.receiverAccountNumber, amount = transactionDto.amount }; var senderAccount = _accRepo.GetAccountById(transaction.senderAccountNumber); var receiverAccount = _accRepo.GetAccountById(transaction.receiverAccountNumber); var checkResult = CheckTransactionRestrictions(senderAccount, receiverAccount, transaction); if (checkResult != "satisfy") { return new ObjectResult(checkResult) { StatusCode = 400 } } ; // All Conditions Satisfies _transRepo.CreateTransaction(transaction); UpdateAccountsBalance(senderAccount, receiverAccount, transaction.amount, this._accRepo); return(Ok()); }
public async Task <GetTransactionDto> CreateTransactionAsync(CreateTransactionDto transactionDto) { var transaction = _mapper.Map <Transaction>(transactionDto); transaction.CreatedAt = DateTime.Now; transaction = await _transaction.AddTransactionAsync(transaction); return(_mapper.Map <GetTransactionDto>(transaction)); }
public async Task Execute(CreateTransactionDto createDto) { var account = await accountsGetDbOperations.Get(createDto.AccountId); var transaction = new Transaction(null, account, createDto.DateTime, createDto.Debit, createDto.Credit, createDto.Reason); await transactionsWriteDbOperations.Create(transaction); await accountsWriteDbOperations.SetBalance(account.Id, account.Balance + createDto.Debit + createDto.Credit); }
public ActionResult <TransactionDetailDto> CreateTransaction(CreateTransactionDto dto) { try { Transaction transaction = _manager.CreateFromHttpPost(dto); return(_manager.AsTransactionDetailDto(transaction)); } catch (Exception ex) { return(NotFound(ex.Message)); } }
public async Task <IActionResult> Post([FromBody] CreateTransactionDto dto) { if (ModelState.IsValid) { dto.TransactionOn = DateTimeOffset.UtcNow; var messageBody = JsonConvert.SerializeObject(dto); var message = new Message(Encoding.UTF8.GetBytes(messageBody)); await _queueClient.SendAsync(message); return(Accepted(dto)); } return(BadRequest()); }
public CreateTransactionDtoValidatorFixture() { Validator = new CreateTransactionDtoValidator(); Model = new CreateTransactionDto { TransactionTypeId = 2, PaymentTypeId = 1, Date = DateTime.Now.AddDays(-2), Description = "Interest from Deposit", Amount = 456.5m, Cashflow = "Income" }; }
public async Task <IActionResult> Post(CreateTransactionDto transaction) { var newTransaction = new TransactionModel { CategoryId = transaction.CategoryId, ProductId = transaction.ProductId, Date = transaction.Date, Notes = transaction.Notes, Quantity = transaction.Quantity, }; await _transactionService.CreateAsync(newTransaction); return(Ok()); }
public Transaction CreateFromHttpPost(CreateTransactionDto dto) { if (!ValidateDto(dto)) { return(null); } Transaction transaction = dto.Type switch { TransactionType.Deposit => CreateDeposit(dto.ToAccountId, dto.Amount), TransactionType.Withdraw => CreateWithdraw(dto.FromAccountId, dto.Amount), TransactionType.Transfer => CreateTransfer(dto.FromAccountId, dto.ToAccountId, dto.Amount), _ => null }; return(transaction); }
private bool ValidateDto(CreateTransactionDto dto) { if (dto.Type is 0) { return(false); } switch (dto.Type) { case TransactionType.Deposit: if (dto.ToAccountId is 0) { return(false); } break; case TransactionType.Withdraw: if (dto.FromAccountId is 0) { return(false); } break; case TransactionType.Transfer: if (dto.FromAccountId is 0 || dto.ToAccountId is 0 ) { return(false); } break; default: return(false); } if (dto.Amount <= 0) { return(false); } return(true); }
public async Task CreateTransation(CreateTransactionDto input) { var tran = new Transaction(); var car = await _carRepository.GetAsync(input.CarId); tran.CarId = input.CarId; tran.BuyDate = input.BuyDate; tran.Number = input.Number; tran.Total = input.Number * car.Price; if (input.Number <= car.Inventory) { car.Inventory -= input.Number; car.Total += tran.Total; } else { throw new Exception("Input wrong"); } await _transactionRepository.InsertAsync(tran); await _carRepository.UpdateAsync(car); await CurrentUnitOfWork.SaveChangesAsync(); }
public TransactionControllerFixture() { ApiVersion = new ApiVersion(1, 0); MockTransactionRepository = new Mock <ITransactionRepository>(); var crearedAt = DateTime.Now.AddDays(-1); Transactions = new List <GetTransactionDto> { new GetTransactionDto { Id = 1, TransactionTypeId = 1, TransactionType = "Food", PaymentTypeId = 2, PaymentType = "Credit", Date = DateTime.Now.AddDays(-10), Description = "Peanuts in Coke", Amount = 6.5m, Cashflow = "Expense", CreatedAt = crearedAt }, new GetTransactionDto { Id = 2, TransactionTypeId = 2, TransactionType = "Extra Income", PaymentTypeId = 1, PaymentType = "Cash", Date = DateTime.Now.AddDays(-5), Description = "Income from sale", Amount = 110.5m, Cashflow = "Income", CreatedAt = crearedAt } }; ValidCreateTransactionDto = new CreateTransactionDto { TransactionTypeId = 2, PaymentTypeId = 1, Date = DateTime.Now.AddDays(-2), Description = "Interest from Deposit", Amount = 456.5m, Cashflow = "Income" }; CreateTransactionDtoResult = new GetTransactionDto { Id = 3, TransactionTypeId = 2, TransactionType = "Extra Income", PaymentTypeId = 1, PaymentType = "Cash", Date = DateTime.Now.AddDays(-2), Description = "Interest from Deposit", Amount = 456.5m, Cashflow = "Income", CreatedAt = DateTime.Now }; ValidEditTransactionDto = new EditTransactionDto { TransactionTypeId = 2, PaymentTypeId = 1, Date = DateTime.Now.AddDays(-5), Description = "Income from sale", Amount = 10110.5m, Cashflow = "Income" }; EditTransactionDtoResult = new GetTransactionDto { Id = 2, TransactionTypeId = 2, TransactionType = "Extra Income", PaymentTypeId = 1, PaymentType = "Cash", Date = DateTime.Now.AddDays(-5), Description = "Income from sale", Amount = 10110.5m, Cashflow = "Income", CreatedAt = crearedAt }; }
public async Task <IActionResult> CreateTransaction(CreateTransactionDto transactionDto, ApiVersion version) { var result = await _repository.CreateTransactionAsync(transactionDto); return(CreatedAtRoute(new { id = result.Id, version = $"{version}" }, result)); }
public TransactionRepositoryFixture() { MockTransactionService = new Mock <ITransactionService>(); var paymentTypeCash = new PaymentType { Id = 1, Name = "Cash", CreditPeriod = 0 }; var paymentTypeCredit = new PaymentType { Id = 2, Name = "Credit", CreditPeriod = 15 }; var transactionType1 = new TransactionType { Id = 1, Type = "Food" }; var transactionType2 = new TransactionType { Id = 2, Type = "Extra Income" }; Transactions = new List <Transaction> { new Transaction { Id = 1, TransactionTypeId = 1, TransactionType = transactionType1, PaymentTypeId = 2, PaymentType = paymentTypeCredit, Date = DateTime.Now.AddDays(-10), Description = "Peanuts in Coke", Amount = 6.5m, Cashflow = Cashflow.Expense, CreatedAt = DateTime.Now }, new Transaction { Id = 2, TransactionTypeId = 2, TransactionType = transactionType2, PaymentTypeId = 1, PaymentType = paymentTypeCash, Date = DateTime.Now.AddDays(-5), Description = "Income from sale", Amount = 110.5m, Cashflow = Cashflow.Income, CreatedAt = DateTime.Now } }; CreateTransactionDto = new CreateTransactionDto { TransactionTypeId = 2, PaymentTypeId = 1, Date = DateTime.Now.AddDays(-2), Description = "Interest from Deposit", Amount = 456.5m, Cashflow = "Income" }; CreatedNewTransaction = new Transaction { Id = 3, TransactionTypeId = 2, TransactionType = transactionType2, PaymentTypeId = 1, PaymentType = paymentTypeCash, Date = DateTime.Now.AddDays(-2), Description = "Interest from Deposit", Amount = 456.5m, Cashflow = Cashflow.Income, CreatedAt = DateTime.Now }; EditTransactionDto = new EditTransactionDto { TransactionTypeId = 2, PaymentTypeId = 1, Date = DateTime.Now.AddDays(-5), Description = "Income from sale", Amount = 10110.5m, Cashflow = "Income" }; }