# reviewx/trunk/app/Rest/Controllers/EmailTemplateController.php

ReviewX – Multi-Criteria Reviews for WooCommerce with Google Reviews &amp; Schema, version trunk. 253 lines.

- Page: https://pluginprobe.com/plugins/reviewx/trunk/code/app/Rest/Controllers/EmailTemplateController.php
- Raw: https://pluginprobe.com/plugins/reviewx/trunk/raw/app/Rest/Controllers/EmailTemplateController.php
- Modified: 2026-07-16T09:57:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/reviewx/trunk/code/app/Rest/Controllers/EmailTemplateController.php#L10-L20`.

```php
<?php

namespace ReviewX\Rest\Controllers;

\defined("ABSPATH") || exit;
use ReviewX\Services\EmailService;
use ReviewX\Utilities\Helper;
use ReviewX\WPDrill\Contracts\InvokableContract;
use ReviewX\WPDrill\Response;
class EmailTemplateController implements InvokableContract
{
    private const REMINDER_SETTINGS_CACHE_KEY = 'rvx_reminder_settings';
    private const EMAIL_CONTENT_CACHE_KEY = 'rvx_email_content';
    protected $emailService;
    /**
     * @param EmailService $emailService
     */
    public function __construct(EmailService $emailService)
    {
        $this->emailService = $emailService;
    }
    /**
     * @return void
     */
    public function __invoke()
    {
    }
    /**
     * @return Response
     */
    public function index()
    {
        $resp = $this->emailService->index();
        return Helper::getApiResponse($resp);
    }
    /**
     * @return Response
     */
    public function store($request)
    {
        try {
            $response = $this->emailService->store($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    /**
     * @return Response
     */
    public function show($request)
    {
        $id = $request->get_param('id');
        $resp = $this->emailService->show($id);
        return Helper::getApiResponse($resp);
    }
    public function update($request)
    {
        try {
            $response = $this->emailService->update($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function trash($request)
    {
        $id = $request->get_param('id');
        $resp = $this->emailService->trash($id);
        return Helper::getApiResponse($resp);
    }
    public function mailRequest($request)
    {
        $resp = $this->emailService->mailRequest($request->get_params());
        return Helper::getApiResponse($resp);
    }
    public function mailContents()
    {
        $cached = \get_transient(self::EMAIL_CONTENT_CACHE_KEY);
        if (\is_array($cached)) {
            return Helper::rest($cached)->success();
        }
        $resp = $this->emailService->content();
        if ($resp->getStatusCode() >= 200 && $resp->getStatusCode() < 300) {
            \set_transient(self::EMAIL_CONTENT_CACHE_KEY, $resp->getApiData(), HOUR_IN_SECONDS);
        }
        return Helper::getApiResponse($resp);
    }
    public function saveEmailRequest($request)
    {
        try {
            $response = $this->emailService->saveEmailRequest($request->get_params());
            if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
                \delete_transient(self::EMAIL_CONTENT_CACHE_KEY);
            }
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function followup($request)
    {
        try {
            $response = $this->emailService->followup($request->get_params());
            if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
                \delete_transient(self::EMAIL_CONTENT_CACHE_KEY);
            }
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function photoReview($request)
    {
        try {
            $response = $this->emailService->photoReview($request->get_params());
            if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
                \delete_transient(self::EMAIL_CONTENT_CACHE_KEY);
            }
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function thankYouReview($request)
    {
        try {
            $response = $this->emailService->thankYouReview($request->get_params());
            if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
                \delete_transient(self::EMAIL_CONTENT_CACHE_KEY);
            }
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function testMail($request)
    {
        try {
            $response = $this->emailService->testMail($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function markAsDone($request)
    {
        try {
            $response = $this->emailService->markAsComplete($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function bulkMarkAsDone($request)
    {
        try {
            $response = $this->emailService->bulkMarkAsComplete($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function requestEmailCancel($request)
    {
        try {
            $response = $this->emailService->emailCancel($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function requestEmailSend($request)
    {
        try {
            $response = $this->emailService->requestEmailSend($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function requestEmailResend($request)
    {
        try {
            $response = $this->emailService->requestEmailResend($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function requestEmailRetry($request)
    {
        try {
            $response = $this->emailService->requestEmailRetry($request->get_params());
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(["error" => $e->getMessage()])->fails("This Action Fails", $e->getCode());
        }
    }
    public function requestEmailUnsubscribe()
    {
        try {
            $response = $this->emailService->requestEmailUnsubscribe();
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function reviewRequestSettings()
    {
        $cached = \get_transient(self::REMINDER_SETTINGS_CACHE_KEY);
        if (\is_array($cached)) {
            return Helper::rest($cached)->success();
        }
        $resp = $this->emailService->reviewRequestSettings();
        if ($resp->getStatusCode() >= 200 && $resp->getStatusCode() < 300) {
            \set_transient(self::REMINDER_SETTINGS_CACHE_KEY, $resp->getApiData(), HOUR_IN_SECONDS);
        }
        return Helper::getApiResponse($resp);
    }
    public function allReminderSettings($request)
    {
        try {
            $response = $this->emailService->allReminderSettings($request->get_params());
            if ($response->getStatusCode() >= 200 && $response->getStatusCode() < 300) {
                \delete_transient(self::REMINDER_SETTINGS_CACHE_KEY);
            }
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function sendReviewEmailForOrder($request)
    {
        try {
            $wpUniqueId = (string) $request->get_param('wp_unique_id');
            $response = $this->emailService->sendReviewEmailForOrder($wpUniqueId);
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
    public function emailQuota()
    {
        try {
            $response = $this->emailService->emailQuota();
            return Helper::saasResponse($response);
        } catch (\Throwable $e) {
            return Helper::rvxApi(['error' => $e->getMessage()])->fails('This Action Fails', $e->getCode());
        }
    }
}

```
