File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/UtilController.php
<?php
namespace App\Http\Controllers;
use DB;
use App\SystemLog;
use Carbon\Carbon;
use NumberFormatter;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Response;
use App\Core\CorporateIdentity\Application\CorporateIdentityService;
class UtilController extends Controller
{
private $corporateIdentityService;
public function __construct()
{
$this->corporateIdentityService = new CorporateIdentityService();
}
public function generateEmptyImageColumn()
{
return '<div class="media-left">
<p>Sin imagen</p>
</div>';
}
public function generateCarouselImagesProducts($images, $prefix, $name, $id)
{
$indicators = '';
$inners = '';
foreach ($images as $key => $value) {
$src = $prefix . $value;
$src .= '?_dc=' . time();
if ($key == 0) {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" class="active" aria-current="true" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= '<div class="carousel-item active">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
</div>';
} else {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= '<div class="carousel-item">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
</div>';
}
}
$src = $prefix . $images[0];
$src .= '?_dc=' . time();
return '<div class="media-left media-center">
' . (count($images) > 1 ? '<span class="badge badge-primary product-badge">' . count($images) . '</span>' : '') .
'<img src="' . $src . '" class="media-object-small view_photo adaptCellImage" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade" id="modal' . $id . '" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id="carouselExampleIndicators' . $id . '" class="carousel slide" data-bs-ride="carousel">
<!--
<div class="carousel-indicators">' . $indicators . '</div>
-->
<div class="carousel-inner">' . $inners . '</div>
<!--
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
-->
</div>
</div>
</div>
</div>
</div>
</div>';
}
public function generateImageColumn($src, $name, $id)
{
$src .= '?_dc=' . time();
return '<div class="media-left media-center">
<img src="' . $src . '" class="media-object-small view_photo adaptCellImage" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade"
id="modal' . $id . '" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<img style="max-width:100%; max-height:100%;" src="' . $src . '" />
</div>
</div>
</div>
</div>
</div>';
}
public function generateImageColumnRound($src, $name, $id)
{
$src .= '?_dc=' . time();
return '<div class="media-left media-center">
<img src="' . $src . '" class="media-object view_photo" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade"
id="modal' . $id . '" tabindex="-1">
<div class="modal-dialog role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<img style="max-width:100%; max-height:100%;" src="' . $src . '" />
</div>
</div>
</div>
</div>
</div>';
}
public function generateImageColumnLarge($src, $name, $id)
{
$src .= '?_dc=' . time();
return '<div class="media-left media-center" style="min-width: 500px;">
<img src="' . $src . '" class="view_photo adaptCellImage" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade"
id="modal' . $id . '" tabindex="-1">
<div class="modal-dialog role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<img style="max-width:100%; max-height:100%;" src="' . $src . '" />
</div>
</div>
</div>
</div>
</div>';
}
public function export($name)
{
$path = public_path('storage/') . $name;
if (file_exists($path)) {
return Response::download($path);
}
$path = storage_path('app/public/') . $name;
if (file_exists($path)) {
return Response::download($path);
}
}
public function logFile($data, $origin = null)
{
$log = new SystemLog();
$log->data = $data;
$log->origin = $origin;
if (Auth::user())
$log->user_id = Auth::user()->id;
$log->save();
}
public function getFullSexText($sex)
{
$gender = '';
switch ($sex) {
case 'M':
$gender = __('messages.sex_types.male');
break;
case 'F':
$gender = __('messages.sex_types.female');
break;
case 'I':
$gender = __('messages.sex_types.indeterminate');
break;
}
return $gender;
}
public function getGenericData($sql, $bindings)
{
ini_set('memory_limit', '-1');
$sql = $this->getSql($sql, $bindings);
DB::statement("SET sql_mode = ''");
$results = DB::select(DB::raw($sql));
DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
return $results;
}
private function getSql($sql, $bindings)
{
if ($bindings != null)
foreach (explode(',', $bindings) as $binding) {
$value = $this->toBoolean($binding);
if ($value == null) {
$value = is_numeric($binding) ? $binding : "'" . $binding . "'";
}
$sql = preg_replace('/\?/', $value, $sql, 1);
}
return $sql;
}
private function toBoolean($booleable)
{
return filter_var($booleable, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
}
public function generateEncrypData($user_data, $code_ticket, $key)
{
$cryptoString = Crypt::encryptString($key . '|' . $user_data->id . '|' . $code_ticket . '|ticket');
return $cryptoString;
}
public function shorterUrl($url)
{
$shortener = url()->shortener();
return $shortener->shorten($url);
}
public function completeLeadingZeros($consecutive, $length)
{
if (strlen($consecutive) == $length) {
return $consecutive;
}
do {
$consecutive = "0" . $consecutive;
} while (strlen($consecutive) < $length);
return $consecutive;
}
public function getNextWorkingDay($weekendDays, $date)
{
$newDate = $date->addDays(1);
if (in_array($newDate->dayOfWeek, $weekendDays)) {
return $this->getNextWorkingDay($weekendDays, $newDate);
}
$client = new \GuzzleHttp\Client();
$response = $client->get('https://date.nager.at/api/v3/PublicHolidays/' . $newDate->year . '/CO');
$holidays = json_decode($response->getBody()->getContents(), true);
$holiday = array_filter($holidays, function ($item) use ($newDate) {
return $item['date'] == $newDate->format('Y-m-d');
}, ARRAY_FILTER_USE_BOTH);
if (count($holiday)) {
return $this->getNextWorkingDay($weekendDays, $newDate);
}
$now = \Carbon\Carbon::now();
if ($newDate <= $now) {
$newDate = $now->addDays(1);
}
return $newDate;
}
public function generateCarouselImagesPhotosClub($images, $name, $id)
{
$indicators = '';
$inners = '';
foreach ($images as $key => $value) {
$src = $value;
$src .= '?_dc=' . time();
if ($key == 0) {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" class="active" aria-current="true" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= '<div class="carousel-item active">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
</div>';
} else {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= '<div class="carousel-item">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
</div>';
}
}
$src = $images[0];
$src .= '?_dc=' . time();
return '<div class="media-left media-center">
' . (count($images) > 1 ? '<span class="badge badge-primary product-badge">' . count($images) . '</span>' : '') .
'<img src="' . $src . '" class="media-object-small view_photo adaptCellImage" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade" id="modal' . $id . '" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id="carouselExampleIndicators' . $id . '" class="carousel slide" data-bs-ride="carousel">
<!--
<div class="carousel-indicators">' . $indicators . '</div>
-->
<div class="carousel-inner">' . $inners . '</div>
<!--
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
-->
</div>
</div>
</div>
</div>
</div>
</div>';
}
public function generateCarouselVideosClub($videos, $name, $id)
{
return view('videos_club.galeryVideos', compact('videos', 'name', 'id'));
$indicators = '';
$inners = '';
foreach ($videos as $key => $value) {
$idVideo = $this->getIdVimeoFromUrl($value);
// $src ="https://player.vimeo.com/video/".$idVideo;
$src = $value;
// $src ="https://vumbnail.com/".$idVideo ."_large.jpg";
// $src .= '?_dc=' . time();
if ($key == 0) {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" class="active" aria-current="true" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= ' class="carousel-item active">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<iframe src="' . $src . '" width="640" height="1141"
frameborder="0"
allow="fullscreen; picture-in-picture"
allowfullscreen
class="d-block w-100"
style="max-width:100%; max-height:100%; min-width: -webkit-fill-available; width: 640px;
aspect-ratio: 16 / 9;
height: auto;"
></iframe>
<!--
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
-->
</div>';
} else {
$indicators .= '<button type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide-to="' . $key . '" aria-label="Slide ' . ($key + 1) . '"></button>';
$inners .= '<div class="carousel-item">
<span class="badge badge-danger product-delete-badge" onClick="clickDeleteProductImage(' . $id . ', \'' . $value . '\')">Eliminar</span>
<iframe src="' . $src . '" width="640" height="1141"
frameborder="0"
allow="fullscreen; picture-in-picture"
allowfullscreen
class="d-block w-100"
style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;
width: 640px;
aspect-ratio: 16 / 9;
height: auto;"
></iframe>
<!--
<img style="max-width:100%; max-height:100%; min-width: -webkit-fill-available;" src="' . $src . '" class="d-block w-100" alt="' . $value . '">
-->
</div>';
}
}
$idVideo = self::getIdVimeoFromUrl($videos[0]);
$src = "https://vumbnail.com/" . $idVideo . "_large.jpg";
// $src =$videos[0];
// $src .= '?_dc=' . time();
return '<div class="media-left media-center">
' . (count($videos) > 1 ? '<span class="badge badge-primary product-badge">' . count($videos) . '</span>' : '') .
'<img src="' . $src . '" class="media-object-small view_photo adaptCellImage" alt="User Image" data-toggle="modal" data-target="#modal' . $id . '" onerror="this.onerror=null; this.remove();">
<div class="modal fade" id="modal' . $id . '" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">' . $name . '</h2>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="position: absolute; top: 20px; right: 20px;">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div id="carouselExampleIndicators' . $id . '" class="carousel slide" data-bs-ride="carousel">
<!--
<div class="carousel-indicators">' . $indicators . '</div>
-->
<div class="carousel-inner">' . $inners . '</div>
<!--
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators' . $id . '" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
-->
</div>
</div>
</div>
</div>
</div>
</div>';
}
public static function getIdVimeoFromUrl($url)
{
$pattern = '/(?:player\.)?vimeo\.com\/(?:video\/)?(\d+)/';
if (preg_match($pattern, $url, $matches)) {
return $matches[1];
}
return $url;
}
public function generateEmptyVideoColumn()
{
return '<div class="media-left">
<p>Sin video</p>
</div>';
}
public function findValueByKey($jsonObject, $searchKey)
{
// Check if the key exists at the top level
if (array_key_exists($searchKey, $jsonObject)) {
return $jsonObject[$searchKey];
}
// Iterate through the object/array and search recursively
foreach ($jsonObject as $key => $value) {
if (is_array($value)) {
$result = $this->findValueByKey($value, $searchKey);
if ($result !== null) {
return $result;
}
}
}
return null; // Return null if the key is not found
}
public function getTextMonth($date = null)
{
// Set locale to Spanish
Carbon::setLocale(config('app.locale'));
// Get the current month name in Spanish
if ($date) {
$monthName = Carbon::parse($date)->translatedFormat('F');
} else {
$monthName = Carbon::now()->translatedFormat('F');
}
return $monthName;
}
public function removeStrAccent($string)
{
return strtr($string, [
'á' => 'a',
'é' => 'e',
'í' => 'i',
'ó' => 'o',
'ú' => 'u',
'Á' => 'A',
'É' => 'E',
'Í' => 'I',
'Ó' => 'O',
'Ú' => 'U',
'ñ' => 'n',
'Ñ' => 'N'
]);
}
public function getCurrencyFormat($value)
{
$formatter = new NumberFormatter('es_CO', NumberFormatter::CURRENCY);
return $formatter->formatCurrency($value, $this->corporateIdentityService->getCurrency());
}
public static function removeSpaces($string)
{
return preg_replace('/\s+/', '', $string);
}
}