<?php

namespace Webkul\WebkulCsvImportBundle\Classes;

class OpencartClass
{
    protected $multiRows = [];
    /** @var OpencartOptionType */
    protected $opencartOptionType = [
        'pim_catalog_simpleselect' => 'select',
        'pim_catalog_date' => 'date',
        'pim_catalog_file' => 'file',
        'pim_catalog_text' => 'text',
        'pim_catalog_textarea' => 'textarea',
        
    ];
    
    /**
     * Format akeneo attribute type to opencart option type
     * @param $akeneoAttributeType
     * @return string
     */
    public function opencartOptionType($akeneoAttributeType)
    {
        if (isset($this->opencartOptionType[$akeneoAttributeType])) {
            return $this->opencartOptionType[$akeneoAttributeType];
        }
        
        return $akeneoAttributeType;
    }
    /**
     * Create multiple row for variant attribute
     * @param $code
     * @return string
     */
    public function createMultiRow($parent, $opencartVariantAttributes, $data, $headers)
    {
        for ($i = 0; $i<count($opencartVariantAttributes); $i++) {
            for ($j = 0;$j<count($data[0][$opencartVariantAttributes[0]]); $j++) {
                $multiRow = [];
                
                foreach ($data as $data_key => $data_value) {
                    foreach ($headers as $head) {
                        if ($head == $parent) {
                            $multiRow[] = $data_value[$parent];
                        }
                    }
                    $k = $i;
                    while (isset($opencartVariantAttributes[$i])) {
                        foreach ($headers as $head) {
                            if ($head == $opencartVariantAttributes[$i]) {
                                $multiRow[] = $data_value[$opencartVariantAttributes[$i]][$j];
                            }
                        }
                        $i++;
                    }
                    $i = $k;
                }
                $this->multiRows[] = $multiRow;
            }
            ;
            $newMultiCreatedRow = $this->multiRows;
            $this->multiRows = [];

            return $newMultiCreatedRow;
            break;
        }
    }
}
