How to implement camera rotation and zoom using Enhanced Input?

The character with camerio is implemented in a separate class.
I put the control in a separate class.
Is it possible to implement camera rotation and zoom control inside the input controller code?
Thanks in advance for your help. I would appreciate any attempt. Do not get angry with me.

include “Charachter/RipperCharacter.h”
include “GameFramework/SpringArmComponent.h”
include “Camera/CameraComponent.h”
include “GameFramework/CharacterMovementComponent.h”

ARipperCharacter::ARipperCharacter()
{
GetCharacterMovement()->bOrientRotationToMovement = true;
GetCharacterMovement()->RotationRate = FRotator(0.f, 400.f, 0.f);
GetCharacterMovement()->bConstrainToPlane = true;
GetCharacterMovement()->bSnapToPlaneAtStart = true;

bUseControllerRotationPitch = false;
bUseControllerRotationRoll = false;
bUseControllerRotationYaw = false;

CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
CameraBoom->SetupAttachment(RootComponent);
CameraBoom->bUsePawnControlRotation = true;

CameraCharacter = CreateDefaultSubobject<UCameraComponent>(TEXT("CameraCharacter"));
CameraCharacter->SetupAttachment(CameraBoom);
CameraCharacter->FieldOfView = 90.0f;
CameraCharacter->bUsePawnControlRotation = false;
CameraCharacter->bAutoActivate = true;

}

void ARipperCharacter::BeginPlay()
{
Super::BeginPlay();
}

// Copyright Anima Ludis Studio

#pragma once

include “CoreMinimal.h”
include “Charachter/DocCharacterBase.h”
include “RipperCharacter.generated.h”

/**
*
*/
UCLASS()
class MYSTERYDARKEPIDEMIC_API ARipperCharacter : public ADocCharacterBase
{
GENERATED_BODY()

public:
ARipperCharacter();

protected:
virtual void BeginPlay() override;

protected:

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Components")
class USpringArmComponent* CameraBoom;

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Components")
class UCameraComponent* CameraCharacter; 

};

#pragma once

include “CoreMinimal.h”
include “InputActionValue.h”
include “GameFramework/PlayerController.h”
include “DocPlayerController.generated.h”

class UInputMappingContext;
class UInputAction;
struct FInputActionValue;
class IEnemyInterface;

/**
*
*/
UCLASS()
class MYSTERYDARKEPIDEMIC_API ADocPlayerController : public APlayerController
{
GENERATED_BODY()
public:
ADocPlayerController();
virtual void PlayerTick(float DeltaTime) override;
protected:
virtual void BeginPlay() override;
virtual void SetupInputComponent() override;

private:
UPROPERTY(EditAnywhere, Category=“Input”)
TObjectPtr DocContext;

UPROPERTY(EditAnywhere,Category="Input")
TObjectPtr<UInputAction> MoveAction;

void Move(const struct FInputActionValue& InputActionValue);

void CursorTrace();
IEnemyInterface* LastActor;
IEnemyInterface* ThisActor;

};

include “Player/DocPlayerController.h”

include “EnhancedInputSubsystems.h”
include “EnhancedInputComponent.h”
include “Interaction/EnemyInterface.h”

ADocPlayerController::ADocPlayerController()
{
bReplicates = true;
}

void ADocPlayerController::PlayerTick(float DeltaTime)
{
Super::PlayerTick(DeltaTime);

CursorTrace();

}

void ADocPlayerController::CursorTrace()
{
FHitResult CursorHit;
GetHitResultUnderCursor(ECC_Visibility, false, CursorHit);
if (!CursorHit.bBlockingHit) return;

LastActor = ThisActor;
ThisActor = Cast<IEnemyInterface>(CursorHit.GetActor());


if (LastActor == nullptr)
{
	 if (ThisActor != nullptr)
	 {
		 // Case B
	 	 ThisActor->HighlightActor();
	 }
	 else
	 {
		 // Case A - both are null, do nothing 
	 }
}
else // LastActor is valid
{
	if (ThisActor == nullptr)
	{
		// Case C
		LastActor->UnHighlightActor();
	}
	else // both actors are valid
	{
		if (LastActor != ThisActor)
		{
			// Case D
			LastActor->UnHighlightActor();
			ThisActor->HighlightActor();
		}
		else
		{
			// Case E - do nothing
		}
	}
}

}

void ADocPlayerController::BeginPlay()
{
Super::BeginPlay();
check(DocContext);

UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer());
check(Subsystem);
Subsystem->AddMappingContext(DocContext, 0);

bShowMouseCursor = true;
DefaultMouseCursor = EMouseCursor::Default;

FInputModeGameAndUI InputModeData;
InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
InputModeData.SetHideCursorDuringCapture(false);
SetInputMode(InputModeData);

}

void ADocPlayerController::SetupInputComponent()
{
Super::SetupInputComponent();

UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(InputComponent);

EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ADocPlayerController::Move);

}

void ADocPlayerController::Move(const FInputActionValue& InputActionValue)
{
const FVector2d InputAxisVector = InputActionValue.Get();
const FRotator Rotation = GetControlRotation();
const FRotator YawRotation(0.f, Rotation.Yaw, 0.f);

const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);

if (APawn* ControlledPAwn = GetPawn<APawn>())
{
	ControlledPAwn->AddMovementInput(ForwardDirection, InputAxisVector.Y);
	ControlledPAwn->AddMovementInput(RightDirection, InputAxisVector.X);
}

}