Ejemplo n.º 1
0
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                bool   orderIsValid = true;
                string message      = null;

                log.Info("Consume OrderCreatedEvent");

                var dataConsomed = jObject.ToObject <OrderCreatedEvent>();
                //Consume data and validate the data
                var dataIsExist = await _customerQueries.GetCustomer(dataConsomed.CustomerId);

                if (dataIsExist != null)
                {
                    orderIsValid = false;
                    message      = "Customer not found";
                }

                var @event = new OrderValidatedEvent {
                    OrderId = dataConsomed.OrderId, IsValid = orderIsValid, Messages = new List <string> {
                        message
                    }
                };

                await _producer.Send(@event, "PosServices");
            }
            catch (Exception ex)
            {
                log.Error("Error Validating order by customer", ex);
                throw ex;
            }
        }
        public async Task <IActionResult> GetCustomer(Guid customerId)
        {
            CustomerResult customer = await _customerQueries.GetCustomer(customerId);

            if (customer == null)
            {
                return(new NoContentResult());
            }
            List <AccountDetailsModel> accounts = new List <AccountDetailsModel>();

            foreach (var account in customer.Accounts)
            {
                List <TransactionModel> transactions = new List <TransactionModel>();
                foreach (var item in account.Transactions)
                {
                    var transaction = new TransactionModel(
                        item.Amount,
                        item.Description,
                        item.TransactionDate);
                    transactions.Add(transaction);
                }
                accounts.Add(new AccountDetailsModel(
                                 account.AccountId,
                                 account.CurrentBalance,
                                 transactions));
            }

            CustomerDetailsModel model = new CustomerDetailsModel(
                customer.CustomerId,
                customer.PersonNummer,
                customer.Name,
                accounts);

            return(new ObjectResult(model));
        }
Ejemplo n.º 3
0
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume CustomerUpdatedEvent");

                var dataConsomed = jObject.ToObject <CustomerUpdatedEvent>();

                var data = await _customerQueries.GetCustomer(dataConsomed.CustomerId);

                if (data != null)
                {
                    data = _mapper.Map <Domain.CustomerAggregate.Customer>(dataConsomed);

                    log.Info("Update Customer");
                    //Consume data to Read Db
                    _customerRepository.Update(data);
                    await _uow.CommitAsync();
                }
            }
            catch (Exception ex)
            {
                log.Error("Error Updating data customer", ex);
                throw ex;
            }
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Get(Guid id)
        {
            try
            {
                var data = await _customerQueries.GetCustomer(id);

                return(Ok(new ApiOkResponse(data, data != null ? 1 : 0)));
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, $"Error on Get Customer [{id}]");
                return(BadRequest(new ApiBadRequestResponse(500, "Something Wrong")));
            }
        }
Ejemplo n.º 5
0
        public async Task Handle(JObject jObject, ILog log, CancellationToken cancellationToken)
        {
            try
            {
                log.Info("Consume CustomerDeletedEvent");

                var dataConsomed = jObject.ToObject <CustomerDeletedEvent>();

                var data = await _customerQueries.GetCustomer(dataConsomed.CustomerId);

                log.Info("Delete Customer");

                //Consume data to Read Db
                _customerRepository.Delete(data);
                await _uow.CommitAsync();
            }
            catch (Exception ex)
            {
                log.Error("Error Deleteing data customer", ex);
                throw ex;
            }
        }