Example #1
0
        /// <summary>
        /// Handelings the transaction.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        /// <exception cref="Exception">transaction Request not found</exception>
        public async Task <bool> HandelingTransaction(Guid id, TransactionHandelingModel model)
        {
            var query = _transactionRequestRepository.GetById(id);

            if (query == null)
            {
                throw new Exception("transaction Request not found");
            }
            if (model.Select == 0)
            {
                var transactionIn = _transactionRepository.GetById(query.TransactionInId);
                transactionIn.TransactionStatusCode = "RJ";
                var transactionOut = _transactionRepository.GetById(query.TransactionOutId);
                transactionOut.TransactionStatusCode = "RJ";

                _transactionRepository.Update(transactionIn);
                _transactionRepository.Update(transactionOut);
            }
            else if (model.Select == 1)
            {
                var transactionIn = _transactionRepository.GetById(query.TransactionInId);
                transactionIn.TransactionStatusCode = "CMP";

                var sharesAccountIn = _shareAccountRepository.GetById(transactionIn.ShareAccountId);
                sharesAccountIn.ShareAmount += transactionIn.TransactionAmount;

                var transactionOut = _transactionRepository.GetById(query.TransactionOutId);
                transactionOut.TransactionStatusCode = "CMP";

                var sharesAccountOut = _shareAccountRepository.GetById(transactionOut.ShareAccountId);
                sharesAccountOut.ShareAmount -= transactionOut.TransactionAmount;

                _transactionRepository.Update(transactionIn);
                _transactionRepository.Update(transactionOut);
                _shareAccountRepository.Update(sharesAccountIn);
                _shareAccountRepository.Update(sharesAccountOut);
            }
            await _unitOfWork.CommitAsync();

            return(true);
        }
        public async Task <ResponseModel <bool> > HandelingTransaction([FromRoute] Guid id, [FromBody] TransactionHandelingModel model)
        {
            var result = await _transactionService.HandelingTransaction(id, model);

            Response.StatusCode = (int)HttpStatusCode.OK;
            return(new ResponseBuilder <bool>().Success()
                   .Data(result)
                   .Count(1)
                   .build());
        }