<?php
namespace App\Repository;
class AguilaLibre {
public static function scheduleUser($professional_id,$category_id,$date_to_search) {
$weekday = date("N", strtotime($date_to_search));
$user = $em->getRepository('AppBundle:User')->findOneBy(array("status" => 'ACTIVO', 'id' => $professional_id));
$category = $em->getRepository('AppBundle:Category')->findOneBy(array("isActive" => 1, "categoryId" => $category_id));
$user_schedule = $em->getRepository('AppBundle:UserSchedule')->findBy(array("user" => $user, 'weekday' => $weekday),array('startAt' => 'ASC'));
if(strlen($category->getAppointmentConsumeMinutes()) == 0)
{
return new JsonResponse(array('status' => "error"));
}
$time_matrix = array();
$i = 0;
foreach($user_schedule as $scheduled)
{
$start_at = $date_to_search." ".$scheduled->getStartAt()->format("H:i");
$end_at = $date_to_search." ".$scheduled->getEndAt()->format("H:i");
$appointments = $em->getRepository('AppBundle:UserSchedule')->getAppointments($professional_id, $date_to_search, $start_at, $end_at);
foreach($appointments as $appointment)
{
if($start_at == $appointment["scheduled_at"])
{
$start_at = $this->addMinutes($start_at, $appointment["appointment_consume_minutes"] );
} else {
$compare_start_at = $start_at;
$compare_end_at = $appointment["scheduled_at"];
$flag = false;
while($flag == false)
{
$tmp_start_at = $start_at;
$tmp_end_at = $this->addMinutes($start_at, $category->getAppointmentConsumeMinutes());
if($appointment["scheduled_at"] >= $tmp_end_at)
{
$time_matrix[$i]["start_date"] = $tmp_start_at;
$time_matrix[$i]["end_date"] = $tmp_end_at;
$start_at = $tmp_end_at;
$i++;
} else {
$flag = true;
}
}
//Reseteamos la hora de inicio que el usuario esta habilitado.
$start_at = $this->addMinutes($appointment["scheduled_at"], $appointment ["appointment_consume_minutes"] );
}
}
if($end_at > $start_at)
{
$flag = false;
while($flag == false)
{
$tmp_start_at = $start_at;
$tmp_end_at = $this->addMinutes($start_at, $category->getAppointmentConsumeMinutes());
if($end_at >= $tmp_end_at)
{
$time_matrix[$i]["start_date"] = $tmp_start_at;
$time_matrix[$i]["end_date"] = $tmp_end_at;
$start_at = $tmp_end_at;
$i++;
} else {
$flag = true;
}
}
}
}
$available_hours = array();
foreach($time_matrix as $info)
{
$available_hours[]= date("H:i", strtotime($info["start_date"]));
}
$available_hours_json = $available_hours;
return new JsonResponse(array('status' => "success", 'data' => $available_hours_json));
}
/**
*
* Enter description here ...
* @param unknown_type $array
*/
public static function printr($array) {
echo "<pre>";
print_r($array);
echo "</pre>";
}
public static function checkPm($moduleId, $pm = 'viewm') {
$checkModuleView = false;
foreach ($userModules as $module) {
if ($module["mcid"] == $moduleId && $pm == 1) {
$checkModuleView = true;
}
}
return $checkModuleView;
}
//YA NO SE USA EN SYMFONY 5
public static function getModulePermission($moduleId, $userModules) {
foreach ($userModules as $module) {
if ($module["mcid"] == $moduleId) {
return $module;
}
}
return false;
}
/**
*
* Enter description here ...
* @param unknown_type $files
* @param unknown_type $thumbnail
* @param unknown_type $path
* @param unknown_type $onlyThisExtensions
*/
public function uploadImages($files, $thumbnail = false, $path, $onlyThisExtensions = false)
{
try {
if (is_array($files)) {
foreach ($files as $picture) {
if (!$picture["error"]) {
// si no hay error en la subida realizar el upload de la imagen
// obtener data
$size = $picture["size"];
$type = $picture["type"];
$name = $picture["name"];
$tmp = $picture['tmp_name'];
$file_name = substr($name, 0, strlen($name) - 4);
$ext = substr($name, strlen($name) - 3, strlen($name));
$prefix = substr(md5($name . time()),0, 5);
$xpath = $path . $name . "-" . $prefix . "." . $ext;
// Validar extenciones
if ($onlyThisExtensions) {
if (!in_array($ext, $onlyThisExtensions))
return false;
}
// subir imagen
if (copy($tmp, $xpath))
$rsImages[] = $file_name . " - " . $prefix . "." . $ext;
else
$rsImages[] = "error";
if ($thumbnail) {
$thumb = new Thumbnail($xpath);
$thumb->size_width(800);
$thumb->save($xpath);
}
}
}
if (isset($rsImages))
return $rsImages;
else
return false;
}
} catch (Exception $ex) {
Doctrine::getTable('BackendErrorLog')->saveErrorLog(array(
'description' => $ex->getMessage(),
'modules' => "AguilaLibre:$modelName::uploadImages",
'backend_action_log_id' => 5,
));
return false;
}
}
/**
*
* @param string $text
* @return string
*/
static public function slugify($text)
{
$titleUrl = AguilaLibre::replaceAccents($text);
// replace all non letters or digits by -
//$xtext = preg_replace('/\W+/', '-', $titleUrl);
// trim and lowercase
$xtext = strtolower(trim($titleUrl, '-'));
return $xtext;
}
static public function replaceAccents($str) {
$a = array('Ã�', 'É', 'Ã�', 'Ó', 'Ú', 'á', 'é', 'Ã', 'ó', 'ú', ' ', ',', 'ñ', '.', ' ', '?', '¡', ';', '"', '#', '!', '¿', ':');
$b = array('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u', '-', '-', 'n', '', '', '', '', '', '', '', '', '', '-');
return str_replace($a, $b, $str);
}
static public function replaceBadWords($str) {
$bad = array("cerote", "serote", "culo", "tumadre", "tu madre", "mierda", "culero", "eshta", "huevo", "hueco", "weco", "verga", "moronga", "puta", "talega", "caca", "pija");
$good = array("&/#$%#","&/#$%#", "&/#$%#","&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#", "&/#$%#");
return str_replace($bad, $good, $str);
}
static public function base64_to_jpeg($base64_string, $output_file) {
$ifp = fopen( $output_file, 'wb' );
$data = explode( ',', $base64_string );
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
fclose( $ifp );
return true;
}
}