public async Task <CustomerDto> Handle(RegisterCustomerCommand request, CancellationToken cancellationToken)
        {
            var customer = MerchantCustomer.CreateNew(request.MerchantCode, request.Email, request.Phone, request.FirstName, request.LastName,
                                                      request.CreateBy, request.Addresses);

            if (customer is null)
            {
                throw new CustomerNotFoundException();
            }

            await _customerRepository.InsertAsync(customer);

            var customerDto = _mapper.Map <CustomerDto>(customer);

            return(customerDto);
        }
        public async Task <MerchantCustomer> UpdateAsync(MerchantCustomer customer)
        {
            var filter = Builders <MerchantCustomer> .Filter.Eq(x => x.Code, customer.Code);

            var update = Builders <MerchantCustomer> .Update.Set(x => x.Addresses, customer.Addresses)
                         .Set(x => x.UpdateBy, customer.UpdateBy)
                         .Set(x => x.Email, customer.Email)
                         .Set(x => x.FirstName, customer.FirstName)
                         .Set(x => x.UpdateDate, customer.UpdateDate)
                         .Set(x => x.Phone, customer.Phone)
                         .Set(x => x.Email, customer.Email)
                         .Set(x => x.LastName, customer.LastName)
                         .Set(x => x.Addresses, customer.Addresses);

            var result = await _mongoDbContext.MerchantCustomers.FindOneAndUpdateAsync(filter, update);

            return(result);
        }
 public async Task InsertAsync(MerchantCustomer merchantCustomer)
 {
     await _mongoDbContext.MerchantCustomers.InsertOneAsync(merchantCustomer);
 }