Beispiel #1
0
        public IActionResult Deposit([FromBody] TransactionRequest request)
        {
            //ESTA COMUNICACION ESPERA RESPUESTA ES MEDIANTE EL PROTOCOLO HTTP
            Model.Transaction transaction = new Model.Transaction()
            {
                AccountId    = request.AccountId,
                Amount       = request.Amount,
                CreationDate = DateTime.Now.ToShortDateString(),
                Type         = "Deposit"
            };

            transaction = _transactionService.Deposit(transaction);

            //ACA ESTAMOS ACTUALIZANDO LA INFORMACION DEL MICROSERVICIO ACCOUNT

            bool isProcess = _accountService.Execute(transaction);

            if (isProcess)
            {
                //ESTE OTRO TIPO DE COMUNICACION NO ESPERA RESPUESTA Y SE ESTA TRABAJANDO CON EL PROTOCOLO AMQP
                //ESTE SOLO LANZA EL COMANDO Y LISTO
                var createCommand = new DepositCreateCommand(
                    idTransaction: transaction.Id,
                    amount: transaction.Amount,
                    creationDate: transaction.CreationDate,
                    type: transaction.Type,
                    accountId: transaction.AccountId
                    );

                _bus.SendCommand(createCommand);

                //ACA ESTAMOS MANDANDO EL MENSAJE A LA COLA DE NOTIFICACIONES
                var createCommandNotification = new NotificationCreateCommand(
                    idTransaction: transaction.Id,
                    amount: transaction.Amount,
                    type: transaction.Type,
                    accountId: transaction.AccountId
                    );

                _bus.SendCommand(createCommandNotification);
            }

            /*END ACTUALIZACION*/

            return(Ok());
        }
Beispiel #2
0
        public IActionResult Get([FromBody] TransactionRequest request)
        {
            Model.Transaction transaction = new Model.Transaction()
            {
                AccountId    = request.AccountId,
                Amount       = request.Amount,
                CreationDate = DateTime.Now.ToString(),
                Type         = "Deposit"
            };

            transaction = _transactionService.Deposit(transaction);

            //Ejecutando el CircuiBraker
            bool isProccess = _accountService.Execute(transaction);

            if (isProccess)
            {
                var createCommand = new DepositCreateCommand(
                    idTransaction: transaction.Id,
                    amount: transaction.Amount,
                    type: transaction.Type,
                    creationDate: transaction.CreationDate,
                    accountId: transaction.AccountId
                    );

                _bus.SendCommand(createCommand);

                var createCommandNotification = new NotificationCreateCommand(
                    idTransaction: transaction.Id,
                    amount: transaction.Amount,
                    type: transaction.Type,
                    accountId: transaction.AccountId
                    );

                _bus.SendCommand(createCommandNotification);
            }

            return(Ok(new { transaction.Id }));
        }