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

namespace Magediary\ProductQuestion\Helper;

use Magento\Framework\App\Helper\AbstractHelper;
use Magediary\ProductQuestion\Model\Answer;
use Magento\Store\Model\ScopeInterface;

class Data extends AbstractHelper
{
    /**
     * Get config value
     *
     * @param string $key
     * @param int|null $store
     * @return mixed
     */
    public function getConfig($key, $store = null)
    {
        return $this->scopeConfig->getValue($key, ScopeInterface::SCOPE_STORE, $store);
    }

    /**
     * Get question statuses
     *
     * @return array
     */
    public function getQuestionStatus()
    {
        return [
            Answer::STATUS_PENDING => __('Pending'),
            Answer::STATUS_APPROVED => __('Approved'),
            Answer::STATUS_NOT_APPROVED => __('Not Approved')
        ];
    }

    /**
     * Get question statuses as option array
     *
     * @return array
     */
    public function getQuestionStatusOptionArray()
    {
        $result = [];
        foreach ($this->getQuestionStatus() as $value => $label) {
            $result[] = ['value' => $value, 'label' => $label];
        }

        return $result;
    }

    /**
     * Get answer statuses
     *
     * @return array
     */
    public function getAnswerStatus()
    {
        return [
            Answer::STATUS_PENDING => __('Pending'),
            Answer::STATUS_APPROVED => __('Approved'),
            Answer::STATUS_NOT_APPROVED => __('Not Approved')
        ];
    }

    /**
     * Get answer statuses as option array
     *
     * @return array
     */
    public function getAnswerStatusOptionArray()
    {
        $result = [];
        foreach ($this->getAnswerStatus() as $value => $label) {
            $result[] = ['value' => $value, 'label' => $label];
        }

        return $result;
    }

    /**
     * Get answer types with their codes
     *
     * @return array
     */
    public function getTypes()
    {
        return [
            Answer::TYPE_GUEST => __('Guest User'),
            Answer::TYPE_CUSTOMER => __('Registered Customer'),
            Answer::TYPE_ADMIN => __('Admin')
        ];
    }

    /**
     * Get answer types as option array
     *
     * @return array
     */
    public function getTypesOptionArray()
    {
        $result = [];
        foreach ($this->getTypes() as $value => $label) {
            $result[] = ['value' => $value, 'label' => $label];
        }

        return $result;
    }

    /**
     * Get answer anonymous statuses with their codes
     *
     * @return array
     */
    public function getAnonymousStatuses()
    {
        return [
            Answer::ANONYMOUS_YES => __('Yes'),
            Answer::ANONYMOUS_NO => __('No')
        ];
    }

    /**
     * Get answer anonymous statuses as option array
     *
     * @return array
     */
    public function getAnonymousStatusesOptionArray()
    {
        $result = [];
        foreach ($this->getAnonymousStatuses() as $value => $label) {
            $result[] = ['value' => $value, 'label' => $label];
        }

        return $result;
    }

    /**
     * Get answer certified statuses with their codes
     *
     * @return array
     */
    public function getCertifiedStatuses()
    {
        return [
            Answer::CERTIFIED_YES => __('Yes'),
            Answer::CERTIFIED_NO => __('No')
        ];
    }

    /**
     * Get answer certified statuses as option array
     *
     * @return array
     */
    public function getCertifiedStatusesOptionArray()
    {
        $result = [];
        foreach ($this->getCertifiedStatuses() as $value => $label) {
            $result[] = ['value' => $value, 'label' => $label];
        }

        return $result;
    }
}
