<?php

namespace App\Packages\v4\User\Service;

use Intervention\Image\ImageManager;

/**
 * Class ImageResizeService
 * @package App\Packages\User\Services
 */
class UserImageResizeService
{
	const IMAGE_EXT = 'jpg';
	const IMAGE_MIME = 'image/jpeg';
	const AVATAR_WIDTH = 200;
	const AVATAR_HEIGHT = 200;

	/**
	 * @var ImageManager
	 */
	private $imageManager;

	/**
	 * @param ImageManager $imageManager
	 */
	public function __construct(ImageManager $imageManager)
	{
		$this->imageManager = $imageManager;
	}

	public function normalizeOriginal($imageContent)
    {
        $imageFile = $this->imageManager
            ->make($imageContent)
            ->resize(600, 600, function ($c) {
                $c->aspectRatio();
                $c->upsize();
            })
            ->encode(static::IMAGE_EXT);

        $height = $imageFile->height();
        $width = $imageFile->width();

        return [
            'height' => $height,
            'width' => $width,
            'image' => $imageFile->getEncoded()
        ];
    }

    /**
     * @param $imageContent
     *
     * @return string
     */
	public function resizeToAvatar($imageContent)
    {
        $imageFile = $this->imageManager
            ->make($imageContent)
            ->fit(static::AVATAR_WIDTH, static::AVATAR_HEIGHT)
            ->encode(static::IMAGE_EXT);

        return $imageFile->getEncoded();
    }
}
