public async Task <Unit> Handle(CreateOrUpdateSellerInfoCommand request, CancellationToken cancellationToken)
        {
            var userId     = _httpContext.User.Claims.ToTokenPayload().UserClaims.Id;
            var sellerInfo = await _sellerInfoRepository.GetByUserIdAsync(userId);

            var sellerInfoExists = sellerInfo != null;

            if (!sellerInfoExists)
            {
                sellerInfo = new SellerInfo(userId, request.ContactEmail, request.PhoneNumber, request.BankAccountNumber);
                if (request.AdditionalInfo != null)
                {
                    sellerInfo.SetAdditionalInfo(request.AdditionalInfo);
                }
                _sellerInfoRepository.Add(sellerInfo);
            }
            else
            {
                if (request.ContactEmail != null)
                {
                    sellerInfo.SetContactEmail(request.ContactEmail);
                }
                if (request.PhoneNumber != null)
                {
                    sellerInfo.SetPhoneNumber(request.PhoneNumber);
                }
                if (request.BankAccountNumber != null)
                {
                    sellerInfo.SetBankAccountNumber(request.BankAccountNumber);
                }
                if (request.AdditionalInfo != null)
                {
                    sellerInfo.SetAdditionalInfo(request.AdditionalInfo);
                }
            }

            if (sellerInfoExists)
            {
                _sellerInfoRepository.Update(sellerInfo);
            }

            await _sellerInfoRepository.UnitOfWork.SaveChangesAndDispatchDomainEventsAsync(cancellationToken);

            return(await Unit.Task);
        }