<?php

namespace App\Generated\Controllers\V1_1;

use App\Generated\V1_1\Messages\User\DeletePhotosMessage;
use App\Generated\V1_1\Messages\User\UidTranslationImAccountMessage;
use App\Generated\V1_1\Messages\User\RefreshMessage;
use App\Generated\V1_1\Messages\User\SelectCoverMessage;
use App\Generated\V1_1\Messages\User\CreateAnswerMessage;
use App\Generated\V1_1\Messages\User\GetQuestionListMessage;
use App\Generated\V1_1\Messages\User\StoreSelfPartnerMessage;
use App\Http\Controllers\Controller;
use App\Http\Services\V1_1\UserService;
use App\Generated\V1_1\Messages\User\ProfileMessage;
use App\Generated\V1_1\Messages\User\GetFpdxProfileMessage;
use App\Generated\V1_1\Messages\User\GetQuestionAnswerListMessage;
use App\Generated\V1_1\Messages\User\GetQuestionInfoMessage;
use App\Generated\V1_1\Messages\User\UpdateProfileMessage;
use App\Generated\V1_1\Messages\User\ToggleTagMessage;
use DB;

class UserController extends Controller
{
    public $handler;

    public function __construct(UserService $handler)
    {
        $this->handler = $handler;
    }

    public function uidTranslationImAccount(UidTranslationImAccountMessage $message)
    {
        $message->validateInput();
        $this->handler->uidTranslationImAccount($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function refresh(RefreshMessage $message)
    {
        $message->validateInput();
        $this->handler->refresh($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function selectCover(SelectCoverMessage $message)
    {
        $message->validateInput();
        $this->handler->selectCover($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function deletePhotos(DeletePhotosMessage $message)
    {
        $message->validateInput();
        $this->handler->deletePhotos($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function createAnswer(CreateAnswerMessage $message)
    {
        $message->validateInput();
        $this->handler->createAnswer($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function getQuestionAnswerList(GetQuestionAnswerListMessage $message)
    {
        $message->validateInput();
        $this->handler->getQuestionAnswerList($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function getQuestionInfo(GetQuestionInfoMessage $message)
    {
        $message->validateInput();
        $this->handler->getQuestionInfo($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function getQuestionList(GetQuestionListMessage $message)
    {
        $message->validateInput();
        $this->handler->getQuestionList($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function storeSelfPartner(StoreSelfPartnerMessage $message)
    {
        $message->validateInput();
        $this->handler->storeSelfPartner($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function toggleTag(ToggleTagMessage $message)
    {
        $message->validateInput();
        $this->handler->toggleTag($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function updateProfile(UpdateProfileMessage $message)
    {
        $message->validateInput();
        $this->handler->updateProfile($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function getFpdxProfile(GetFpdxProfileMessage $message)
    {
        $message->validateInput();
        $this->handler->getFpdxProfile($message);
        $message->validateOutput();
        return $message->getResponse();
    }

    public function profile(ProfileMessage $message)
    {
        $message->validateInput();
        $this->handler->profile($message);
        $message->validateOutput();
        return $message->getResponse();
    }

}
