<?php
/**
 * Post action of Submit Controller Badges module
 *
 * @module Autogedal_Badges
 * @author Malith Priyashan
 * @package Autogedal\Badges\Controller\Submit
 * @licence OSL 3.0
 *
 * @TODO The feature is under construction!
 */

namespace Autogedal\Badges\Controller\Submit;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
use Autogedal\Badges\Helper\Data as BadgesHelper;

/**
 * Class Post
 */
class Post extends Action
{
    /**
     * @var BadgesHelper
     */
    protected $badgesHelper;

    /**
     * Post constructor.
     *
     * @param BadgesHelper $badgesHelper
     * @param Context $context
     */
    public function __construct(
        BadgesHelper $badgesHelper,
        Context $context
    ) {
        $this->badgesHelper = $badgesHelper;

        parent::__construct($context);
    }

    /**
     * Badge submit action.
     *
     * @TODO Not implemented yet, need to finish
     *
     * @return PageFactory
     */
    public function execute()
    {
        $post = $this->getRequest()->getPostValue();

        if (!$post) {
            $this->_redirect('*/*/');
        }

        try {
            $data = $this->getRequest()->getPostValue();
            $resultRedirect = $this->resultRedirectFactory->create();
            $error = false;

            if (!\Laminas\Validator\StaticValidator::execute(trim($post['title']), 'NotEmpty')) {
                $error = true;
            }
            if (!\Laminas\Validator\StaticValidator::execute(trim($post['badge-content']), 'NotEmpty')) {
                $error = true;
            }
            if (!\Laminas\Validator\StaticValidator::execute(trim($post['info']), 'NotEmpty')) {
                $error = true;
            }
            if (!\Laminas\Validator\StaticValidator::execute(trim($post['email']), 'EmailAddress')) {
                $error = true;
            }

            if ($error) {
                throw new \Exception();
            }


            $badgeModel = $this->_objectManager->create('Autogedal\Badges\Model\Badge');
            $badgeModel->setTitle(trim($post['title']));
            //$badgeModel->setId('12');

            /*
             * TODO Image Uploader
             * */
            //$Image = $this->_dataHelper->uploadImage();

            $badgeModel->setUrlKey(trim($post['title']));
            $badgeModel->setImage('default.jpg');
            $badgeModel->setInfo(trim($post['info']));
            $badgeModel->setCreationTime('2016-02-25 09:51:19');
            $badgeModel->setUpdateTime('2016-02-25 09:51:19');
            $badgeModel->setIsActive('0');
            $badgeModel->setContent(trim($post['badge-content']));
            $badgeModel->save();

            $this->messageManager->addSuccess(
                __('Thanks For The Badge. Will be approved soon.')
            );
            $this->_redirect('badges');
        } catch (\Exception $e) {
            $this->messageManager->addError(
                __('We can\'t process your request right now. Sorry, that\'s all we know.')
            );

            $this->_redirect('badges/submit');
        }
    }
}
