Files
intranet/app/Controller/Temas.php

112 lines
2.8 KiB
PHP
Raw Normal View History

2020-12-01 17:23:13 -03:00
<?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']));
}
}
?>