<?php

namespace Dao;

use Conn\MySqlConnect;

/**
 * Description of Funcoes
 *
 * @author Delio
 */
class Funcoes {

    static function displayMessage($title, $message, $redir, $type = 'green') {
        echo '
            <script src="assets/js/jquery.js"></script>
            <script type="text/javascript">
                $(function() {
                    $.alert({
                        title: "' . $title . '",
                        content: "' . $message . '",
                        type: "' . $type . '",
                        buttons: {
                            Ok: function () { 
                                location.replace("' . $redir . '"); 
                            }
                        }
                    });
                });
            </script>
        ';
    }

    static function randFileName($fileName) {
        $fileType = explode('.', $fileName);
        return uniqid(md5(time())) . '.' . $fileType[count($fileType) - 1];
    }

    static function createFileName($fileName) {
        $fileType = explode('.', $fileName);
        $newName = uniqid(md5(Funcoes::removeCharacters($fileName, '-')));
        if (strlen($newName) > 50)
            $newName = substr($newName, 0, 45);
        return $newName . '.' . $fileType[count($fileType) - 1];
    }

    static function redireciona($url) {
        echo '<script type="text/javascript">location.replace("' . $url . '");</script>';
    }

    static function getMasterKey() {
        $date = date('dm');
        $year = date('Y');
        $calc = ($date * $year);
        if (strlen($calc) > 6) {
            return substr($calc, 0, 6);
        }
        return $calc;
    }

    static function getUltimoId(MySqlConnect $conecta, $table, $field) {
        $sql = $conecta->query("SELECT $field FROM $table ORDER BY $field DESC LIMIT 1") or die($conecta->error);
        if ($sql->num_rows > 0) {
            $res = $sql->fetch_object();
            return $res->$field + 1;
        }
        return 1;
    }

    static function removeCharacters($str, $slug = null) {
        $acentuados = [
            "á", "à", "ã", "ä", "â", "é", "è", "ê", "ë", "í", "ì", "ï", "î", "ó", "ò", "õ", "ô", "ö", "ú", "ù", "ü", "û", "ç", "Á", "À", "Ã", "Ä", "Â",
            "É", "À", "Ê", "Ë", "Í", "Ì", "Ï", "Î", "Ó", "Ò", "Õ", "Ô", "Ö", "Ú", "Ù", "Ü", "Û", "Ç"
        ];
        $normais = [
            "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c", "a", "a", "a", "a", "a",
            "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
        ];
        $string = str_replace($acentuados, $normais, $str);
        $string2 = strtolower($string);
        $chars = [
            '&', 'ã ', 'ã¡', 'ã¢', 'ã£', 'ã¤', 'ã¥', 'ã¦', 'ã§', 'ã¨', 'ã©', 'ãª', 'ã«', 'ã¬', 'ã­', 'ã®', 'ã¯', 'ã°', 'ã±', 'ã²', 'ã³', 'ã´', 'ãµ', 'ã¶',
            'ã¸', 'ã¹', 'ãº', 'ã»', 'ã¼', 'ã½', 'ã¾', 'ã¿', 'ã€', 'ã', 'ã‚', 'ãƒ', 'ã"', 'ã…', 'ã†', 'ã‡', 'ãˆ', 'ã‰', 'ãŠ', 'ã‹', 'ãŒ', 'ã', 'ãŽ', 'ã',
            'ã', 'ã\'', 'ã\'', 'ã"', 'ã"', 'ã•', 'ã–', 'ã˜', 'ã™', 'ãš', 'ã›', 'ãœ', 'ã', 'ãž', 'â‚¬', '"', 'ãŸ', 'â¢', 'â£', 'â¤', 'â¥', 'â¦', 'â§',
            'â¨', 'â©', 'âª', 'â«', 'â¬', 'â­', 'â®', 'â¯', 'â°', 'â±', 'â²', 'â³', 'â´', 'âµ', 'â¶', 'â·', 'â¸', 'â¹', 'âº', 'â»', 'â¼', 'â½', 'â¾', ' ',
            ':', '!', '@', '#', '$', '%', 'â¨', '&', '*', '(', ')', '_', '+', '[', '{', '}', '\''
        ];
        $entities = [
            'e', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u',
            'y', '', 'y', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u',
            'u', 'u', 'y', '-', 'e', '-', 'b', '-', '-', 'c', 'f', 'x', 'y', '-', 's', '-', 'c', 'a', '-', '-', '-', 'r', '-', '-', '-', '2', '3', '-', 'u',
            '-', '-', '2', '1', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', ''
        ];
        $string3 = str_replace($chars, $entities, $string2);
        $string4 = preg_replace("/([^a-z0-9]+)/", "-", $string3);
        $string5 = (substr($string4, -1) == "-") ? substr($string4, 0, -1) : $string4;
        if ($slug != null && !empty($slug)) {
            $string6 = preg_replace('/[^a-z0-9]/i', $slug, $string5);
            $string7 = preg_replace('/' . $slug . '{2,}/i', $slug, $string6);
            return trim($string7, $slug);
        }
        return $string5;
    }

    static function removeAspas($str) {
        return str_replace(["'"], ["&apos;"], $str);
    }

    static function limparTelefone($fone) {
        return str_replace(['(', ')', ' ', '-'], ['', '', '', ''], $fone);
    }

    static function escreveData($data) {
        $meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
        $arr = explode('/', date('d/m/Y', strtotime($data)));
        return $arr[0] . ' de ' . $meses[((int) $arr[1]) - 1] . ' de ' . $arr[2];
    }

    static function limitText($str, $limit = 100) {
        $size = strlen($str);
        if ($size > $limit)
            return substr($str, 0, strrpos(substr($str, 0, $limit), ' ')) . '...';
        return $str;
    }
    
    static function gerarSenha() {
        $CHARS = [
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
        ];
        $password = '';
        do {
            $password .= $CHARS[rand(0, count($CHARS) - 1)];
            if (strlen($password) == 4 || strlen($password) == 9)
                $password .= '-';
        } while (strlen($password) < 14);
        return $password;
    }
}