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

namespace Magediary\ProductQuestion\Block\Adminhtml\Answer\Add;

use Magento\Backend\Block\Widget\Form\Generic;

/**
 * Adminhtml add product answer form
 */
class Form extends Generic
{
    /**
     * ProductQuestion data
     *
     * @var \Magediary\ProductQuestion\Helper\Data
     */
    protected $_helperData = null;

    /**
     * Core system store model
     *
     * @var \Magento\Store\Model\System\Store
     */
    protected $_systemStore;

    /**
     * Form constructor.
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Registry $registry
     * @param \Magento\Framework\Data\FormFactory $formFactory
     * @param \Magento\Store\Model\System\Store $systemStore
     * @param \Magediary\ProductQuestion\Helper\Data $helperData
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\Framework\Data\FormFactory $formFactory,
        \Magento\Store\Model\System\Store $systemStore,
        \Magediary\ProductQuestion\Helper\Data $helperData,
        array $data = []
    ) {
        $this->_helperData = $helperData;
        $this->_systemStore = $systemStore;
        parent::__construct($context, $registry, $formFactory, $data);
    }

    /**
     * Prepare add answer form
     *
     * @return void
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
     */
    protected function _prepareForm()
    {
        /** @var \Magento\Framework\Data\Form $form */
        $form = $this->_formFactory->create();

        $fieldset = $form->addFieldset('add_answer_form', ['legend' => __('Answer Details')]);

        $fieldset->addField('question_detail', 'note', ['label' => __('Question'), 'text' => 'question_detail']);

        $fieldset->addField(
            'status',
            'select',
            [
                'label' => __('Status'),
                'name' => 'status',
                'values' => $this->_helperData->getAnswerStatusOptionArray(),
                'value' => 1
            ]
        );

        $fieldset->addField(
            'type',
            'select',
            [
                'label' => __('Type'),
                'name' => 'type',
                'values' => $this->_helperData->getTypesOptionArray()
            ]
        );

        $fieldset->addField(
            'nickname',
            'text',
            [
                'name' => 'nickname',
                'title' => __('Nickname'),
                'label' => __('Nickname'),
                'maxlength' => '50'
            ]
        );

        $fieldset->addField(
            'email',
            'text',
            [
                'name' => 'email',
                'title' => __('Email'),
                'label' => __('Email'),
                'maxlength' => '50',
                'required' => false,
                'class'     => 'validate-email'
            ]
        );

        $fieldset->addField(
            'is_anonymous',
            'select',
            [
                'label' => __('Is Anonymous'),
                'name' => 'is_anonymous',
                'values' => $this->_helperData->getAnonymousStatusesOptionArray(),
                'value' => 1
            ]
        );

        $fieldset->addField(
            'is_certified',
            'select',
            [
                'label' => __('Is Certified'),
                'name' => 'is_certified',
                'values' => $this->_helperData->getCertifiedStatusesOptionArray()
            ]
        );

        $fieldset->addField(
            'likes',
            'text',
            [
                'name' => 'likes',
                'title' => __('Likes'),
                'label' => __('Likes'),
                'disabled' => true,
                'readonly' => true
            ]
        );

        $fieldset->addField(
            'dislikes',
            'text',
            [
                'name' => 'dislikes',
                'title' => __('Dislikes'),
                'label' => __('Dislikes'),
                'disabled' => true,
                'readonly' => true
            ]
        );

        $fieldset->addField(
            'abuses',
            'text',
            [
                'name' => 'abuses',
                'title' => __('Abuses'),
                'label' => __('Abuses'),
                'disabled' => true,
                'readonly' => true
            ]
        );

        $fieldset->addField(
            'detail',
            'textarea',
            [
                'name' => 'detail',
                'title' => __('Detail'),
                'label' => __('Detail'),
                'required' => true
            ]
        );

        $fieldset->addField('question_id', 'hidden', ['name' => 'question_id']);

        $form->setMethod('post');
        $form->setUseContainer(true);
        $form->setId('edit_form');
        $form->setAction($this->getUrl('*/*/save'));

        $this->setForm($form);
    }
}
