public async Task <(bool isSuccessful, string errorMessage)> ProcessHotelStayEventAsync(Guid customerId,
                                                                                                decimal amount, string currency)
        {
            if (amount < 0)
            {
                return(false, $"Amount has invalid value: '{amount}'.");
            }

            var(isValid, conversionAmount) = await _currencyConvertorService
                                             .CovertToBaseCurrencyAsync(amount, currency);

            if (!isValid)
            {
                return(false, $"'{currency}' cannot be converted to base currency.");
            }

            var customerProfile = await CreateOrGetCustomerProfileAsync(customerId);

            customerProfile.TotalHotelStayCount  += 1;
            customerProfile.TotalHotelStayAmount += conversionAmount;

            await _customerProfileRepository.CreateOrUpdateAsync(customerProfile);

            return(true, string.Empty);
        }
        public async Task <(bool isSuccessful, string errorMessage)> ProcessVoucherPurchaseEvent(VoucherPurchaseModel voucherPurchaseModel)
        {
            var(isValidConversion, conversionAmount) = await _currencyConvertorService
                                                       .CovertToBaseCurrencyAsync(voucherPurchaseModel.Amount, voucherPurchaseModel.Currency);

            if (!isValidConversion)
            {
                return(false, $"'{voucherPurchaseModel.Currency}' cannot be converted to base currency.");
            }

            await _customerProfileService.InsertOrUpdateCustomerPurchaseAmount(voucherPurchaseModel.CustomerId, conversionAmount);

            return(true, string.Empty);
        }