<?php

namespace Autogedal\FbReviews\Model;

use Autogedal\FbReviews\Api\Data\FbReviewInterface;
use Autogedal\FbReviews\Model\ResourceModel\FbReview as FbReviewResource;
use Magento\Framework\Model\AbstractModel;
use \Magento\Backend\Model\Auth\Session;

/**
 * @method FbReviewResource getResource()
 * @method \Autogedal\FbReviews\Model\ResourceModel\FbReview\Collection getCollection()
 */
class FbReview extends AbstractModel implements FbReviewInterface
{
    protected $authSession;

    /**
     * @var string
     */
    protected $_eventPrefix = 'autogedal_fbreviews_custom';

    public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        Session $authSession,
        \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
        array $data = []
    ) {
        parent::__construct(
            $context,
            $registry,
            $resource,
            $resourceCollection,
            $data
        );
        $this->authSession = $authSession;
    }

    protected function _construct()
    {
        $this->_init(FbReviewResource::class);
    }

    /**
     * @inheritdoc
     */
    public function getEntityId()
    {
        return $this->_getData(FbReviewInterface::ENTITY_ID);
    }

    /**
     * @inheritdoc
     */
    public function setEntityId($entityId)
    {
        $this->setData(FbReviewInterface::ENTITY_ID, $entityId);

        return $this;
    }


    public function getStatus()
    {
        return $this->_getData(FbReviewInterface::STATUS);
    }

    /**
     * @inheritdoc
     */
    public function setStatus($status)
    {
        return $this->setData(FbReviewInterface::STATUS, $status);
    }

    public function getFacebookName()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_NAME);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookName($facebookName)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_NAME, $facebookName);
    }

    public function getFacebookReviewDate()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_REVIEW_DATE);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookReviewDate($facebookRevDate)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_REVIEW_DATE, $facebookRevDate);
    }

    public function getFacebookImage()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_IMAGE);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookImage($facebookImage)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_IMAGE, $facebookImage);
    }

    public function getFacebookUrl()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_URL);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookUrl($facebookUrl)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_URL, $facebookUrl);
    }

    public function getFacebookRating()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_RATING);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookRating($facebookRating)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_RATING, $facebookRating);
    }

    public function getFacebookReview()
    {
        return $this->_getData(FbReviewInterface::FACEBOOK_REVIEW);
    }

    /**
     * @inheritdoc
     */
    public function setFacebookReview($facebookReview)
    {
        return $this->setData(FbReviewInterface::FACEBOOK_REVIEW, $facebookReview);
    }

    /**
     * @inheritdoc
     */
    public function getAdminUserId()
    {
        return $this->authSession->getUser() ? $this->authSession->getUser()->getId() : null;
    }
}
