      1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:
                 16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:
                 30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:
                 62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:
                 82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100:

    <?php

    /*
     * This file is part of the affilinet Product Data PHP SDK.
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */

    namespace Affilinet\ProductData\Requests\Traits;

    trait LogoTrait
    {

        /**
         * @return $this
         */
        public function addAllShopLogos()
        {
            $this->addShopLogoWithSize50px()
                ->addShopLogoWithSize90px()
                ->addShopLogoWithSize150px()
                ->addShopLogoWithSize468px();

            return $this;
        }

        /**
         * @return $this
         */
        public function addShopLogoWithSize50px()
        {
            $this->addLogoScale('Logo50');

            return $this;
        }

        /**
         * @param $scale
         * @return $this
         */
        private function addLogoScale($scale)
        {
            if (!isset(
                $this->queryParams['LogoScales']
            )
            ) {
                $scales = [];
            } else {
                $scales = explode(',', $this->queryParams['LogoScales']);
            }
            if (!in_array($scale, $scales)) {
                $scales[] = $scale;
            }
            $this->queryParams['LogoScales'] = implode(',', $scales);

            return $this;
        }

        /**
         * @return $this
         */
        public function addShopLogoWithSize90px()
        {
            $this->addLogoScale('Logo90');

            return $this;
        }

        /**
         * @return $this
         */
        public function addShopLogoWithSize120px()
        {
            $this->addLogoScale('Logo120');

            return $this;
        }

        /**
         * @return $this
         */
        public function addShopLogoWithSize150px()
        {
            $this->addLogoScale('Logo150');

            return $this;
        }

        /**
         * @return $this
         */
        public function addShopLogoWithSize468px()
        {
            $this->addLogoScale('Logo468');

            return $this;
        }
    }