<?php

use Illuminate\Support\Arr;

if (!function_exists('convertBackofficeUrl')) {
    function convertBackofficeUrl($url, $metadata, $rowId = null, $parentRowId = null)
    {
        $completeUrl = str_ireplace("{LIST_ID}", $metadata["type"], $url);
        $completeUrl = str_ireplace("{PARENT_ID}", (empty($parentRowId) ? '' : $parentRowId), $completeUrl);
        $completeUrl = str_ireplace("{ID}", (empty($rowId) ? '' : $rowId), $completeUrl);

        return $completeUrl;
    }
}

if (!function_exists('getBackofficeReorderField')) {
    function getBackofficeReorderField($fields)
    {
        foreach ($fields as $field) {
            if ($field["fieldType"] == "reorder") {
                return $field;
            }
        }

        return false;
    }
}

if (!function_exists('getBackofficeDisplayField')) {
    function getBackofficeDisplayField($fields)
    {
        foreach ($fields as $field) {
            if (!empty($field["fieldType"]) && !empty($field["displayField"])) {
                return $field;
            }
        }

        return false;
    }
}

if (!function_exists('getBackofficeParentField')) {
    function getBackofficeParentField($fields)
    {
        foreach ($fields as $field) {
            if ($field["fieldType"] == "parent") {
                return $field;
            }
        }

        return false;
    }
}

if (!function_exists('getBackofficeFilterField')) {
    function getBackofficeFilterField($fields)
    {
        foreach ($fields as $field) {
            if ($field["fieldType"] == "filter") {
                return $field;
            }
        }

        return false;
    }
}

if (!function_exists('getBackofficeFileFields')) {
    function getBackofficeFileFields($fields)
    {
        $fields = Arr::where($fields, function ($value, $key) {
            return $value["fieldType"] == "file";
        });

        return $fields;
    }
}

if (!function_exists('getBackofficeImageFields')) {
    function getBackofficeImageFields($fields)
    {
        $fields = Arr::where($fields, function ($value, $key) {
            return $value["fieldType"] == "image";
        });

        return $fields;
    }
}

if (!function_exists('getBackofficeImageFileFields')) {
    function getBackofficeImageFileFields($fields)
    {
        $fields = Arr::where($fields, function ($value, $key) {
            return $value["fieldType"] == "file" || $value["fieldType"] == "image";
        });

        return $fields;
    }
}

if (!function_exists('getBackofficeFieldByName')) {
    function getBackofficeFieldByName($fields, $name)
    {
        foreach ($fields as $field) {
            if ($field["name"] == $name) {
                return $field;
            }
        }

        return false;
    }
}

if (!function_exists('gridFileThumb')) {
    function gridFileThumb($fileName, $field)
    {


        if (!empty($field["keepOriginal"])) {
            return '<a href="'.getMediaFileUrl($field['urlPath'], $fileName).'" target="_blank">
                        <img src="'.getMediaFileUrl($field['urlPath'], $fileName).'" style="width:50px;height:50px" />
                    </a>';

        } else {
            $firstSize = head($field["sizes"]);
            return '<a href="'.getMediaFileUrl($field['urlPath'], $fileName, $firstSize["name"]).'" target="_blank">
                        <img src="'.getMediaFileUrl($field['urlPath'], $fileName, $firstSize["name"]).'" style="width:50px;height:50px" />
                    </a>';
        }
    }
}

if (!function_exists('gridFileImage')) {
    function gridFileImage($fileName, $field)
    {
        if (!empty($field["keepOriginal"])) {
            return '<img src="'.getMediaFileUrl($field['urlPath'], $fileName).'" style="width:50px;height:50px" />';

        } else {
            $firstSize = head($field["sizes"]);
            return '<img src="'.getMediaFileUrl($field['urlPath'], $fileName,
                    $firstSize["name"]).'" style="width:50px;height:50px" />';
        }
    }
}

if (!function_exists('gridFileLink')) {
    function gridFileLink($fileName, $field)
    {
        return '<a href="'.getMediaFileUrl($field['urlPath'], $fileName).'" target="_blank">'.translation("common.link",
                "link").'</a>';
    }
}
