<?php
/**
 * @author  Magediary
 * @package Magediary_ProductQuestion
 */

namespace Magediary\ProductQuestion\Observer;

use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
use Magediary\ProductQuestion\Model\Answer;

class AnswerSaveAfter extends ModelSaveAfter implements ObserverInterface
{
    /**
     * Send mail to customer who asked the question
     *
     * Refresh product(s) cache assigned to the question
     *
     * @param EventObserver $observer
     * @return void
     */
    public function execute(EventObserver $observer)
    {
        /** @var $answer Answer */
        $answer = $observer->getEvent()->getObject();

        if ($answer->isObjectNew()) {
            $this->sendAdminEmail($answer);
        }

        if ($answer->dataHasChangedFor('status')) {
            if ($answer->getStatus() == Answer::STATUS_APPROVED) {
                $this->sendCustomerEmail($answer);
            }
        }

        $this->refreshProductCache($answer->getQuestionId());
    }

    /**
     * Send notification email to the customer
     *
     * @param object $answer
     * @return void
     */
    private function sendCustomerEmail($answer)
    {
        $this->mailAnswer->sendCustomer($answer);
    }

    /**
     * Send notification email to the admin on submit a new answer
     *
     * @param object $answer
     * @return void
     */
    private function sendAdminEmail($answer)
    {
        $this->mailAnswer->sendAdmin($answer);
    }
}
