112 lines
2.8 KiB
PHP
112 lines
2.8 KiB
PHP
<?php
|
|
namespace App\Controller;
|
|
|
|
use App\Definition\Controller;
|
|
use Incoviba\old\Proyecto\Proyecto;
|
|
use Carbon\Carbon;
|
|
use Incoviba\nuevo\Proyecto\Tema;
|
|
|
|
class Temas
|
|
{
|
|
use Controller;
|
|
|
|
public static function add()
|
|
{
|
|
$proyectos = model(Proyecto::class)->orderByAsc('descripcion')->findMany();
|
|
return view('temas.add', compact('proyectos'));
|
|
}
|
|
public static function agregar()
|
|
{
|
|
$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
|
|
$data = [
|
|
"proyecto_id" => post('proyecto'),
|
|
"inicio" => $f->format('Y-m-d'),
|
|
"texto" => post('texto')
|
|
];
|
|
$tema = model(Tema::class)->create($data);
|
|
|
|
$tema->save();
|
|
header('Location: ' . url('', ['p' => 'temas', 'a' => 'list']));
|
|
}
|
|
public static function list()
|
|
{
|
|
$temas = model(Tema::class)->findMany();
|
|
$t = Carbon::today(config('app.timezone'));
|
|
foreach ($temas as $i => $tema) {
|
|
if ($tema->cierre()->year != -1 and $t->diff($tema->cierre())->days > 10) {
|
|
unset($temas[$i]);
|
|
}
|
|
}
|
|
$temas = array_values($temas);
|
|
usort($temas, function($a, $b) {
|
|
$p = strcmp($a->proyecto()->descripcion, $b->proyecto()->descripcion);
|
|
if ($p == 0) {
|
|
$f = $b->inicio()->diff($a->inicio())->format('%r%a');
|
|
if ($f == 0) {
|
|
return $a->id - $b->id;
|
|
}
|
|
return $f;
|
|
}
|
|
return $p;
|
|
});
|
|
|
|
return view('temas.list', compact('temas'));
|
|
}
|
|
public static function edit()
|
|
{
|
|
$id = get('tema');
|
|
$tema = model(Tema::class)->findOne($id);
|
|
$proyectos = model(Proyecto::class)->orderByAsc('descripcion')->findMany();
|
|
return view('temas.edit', compact('tema', 'proyectos'));
|
|
}
|
|
public static function editar()
|
|
{
|
|
$id = get('tema');
|
|
$tema = model(Tema::class)->findOne($id);
|
|
|
|
$proyecto = post('proyecto');
|
|
$changed = false;
|
|
if ($tema->proyecto_id != $proyecto) {
|
|
$tema->proyecto_id = $proyecto;
|
|
$changed = true;
|
|
}
|
|
$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
|
|
if ($tema->inicio() != $f) {
|
|
$tema->inicio = $f->format('Y-m-d');
|
|
$changed = true;
|
|
}
|
|
$texto = post('texto');
|
|
if ($tema->texto != $texto) {
|
|
$tema->texto = $texto;
|
|
$changed = true;
|
|
}
|
|
|
|
if ($changed) {
|
|
$tema->save();
|
|
}
|
|
header('Location: ' . url('', ['p' => 'temas', 'a' => 'list']));
|
|
}
|
|
public static function cerrar()
|
|
{
|
|
$id = get('tema');
|
|
$tema = model(Tema::class)->findOne($id);
|
|
$f = Carbon::today(config('app.timezone'));
|
|
$tema->cierre = $f->format('Y-m-d');
|
|
|
|
$tema->save();
|
|
header('Location: ' . url('', ['p' => 'temas', 'a' => 'list']));
|
|
}
|
|
public static function abrir()
|
|
{
|
|
$id = get('tema');
|
|
$tema = model(Tema::class)->findOne($id)->as_array();
|
|
unset($tema['id'], $tema['cierre'], $tema['created_at'], $tema['updated_at']);
|
|
|
|
$tema = model(Tema::class)->create($tema);
|
|
|
|
$tema->save();
|
|
header('Location: ' . url('', ['p' => 'temas', 'a' => 'list']));
|
|
}
|
|
}
|
|
?>
|