Skip to content

Commit

Permalink
Agora chamados e users são n to n
Browse files Browse the repository at this point in the history
está quebrado:
 - app/Mail/ComentarioMail.php
 - resources/views/chamados/devolver.blade.php

provavelmente melhorar consultas no ChamadosController

talvez precisemos revisar as policies
  • Loading branch information
wgnann committed Oct 15, 2020
1 parent 5112a74 commit 54b5181
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 23 deletions.
18 changes: 10 additions & 8 deletions app/Http/Controllers/ChamadoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ public function index()
if (Gate::allows('admin')) {
$chamados = Chamado::all();
} else {
$user = \Auth::user();
$chamados = Chamado::where('user_id', '=', $user->id)->orderBy('created_at', 'desc')->get();
/* precisa melhorar isto */
$chamados = Chamado::whereHas('users', function ($pivot) {
$user = \Auth::user();
$pivot->where('user_id', $user->id);
})->orderBy('created_at', 'desc')->get();
}

return view('chamados/index', compact('chamados'));
Expand Down Expand Up @@ -170,10 +173,10 @@ public function show(Chamado $chamado)
if (empty($template)) {
$template = [];
}
#dd($template);
$autor = $chamado->users()->wherePivot('funcao', 'Autor')->first();
$complexidades = $this->complexidades;

return view('chamados/show', compact('chamado', 'extras', 'template', 'complexidades'));
return view('chamados/show', compact('autor', 'chamado', 'extras', 'template', 'complexidades'));
}

/**
Expand All @@ -189,8 +192,9 @@ public function edit(Chamado $chamado)
$predios = $this->predios;
$atendentes = $this->atendentes;
$complexidades = $this->complexidades;
$autor = $chamado->users()->wherePivot('funcao', 'Autor')->first();
$form = JSONForms::generateForm($fila, $chamado);
return view('chamados/edit', compact('fila', 'chamado', 'predios', 'atendentes', 'complexidades', 'form'));
return view('chamados/edit', compact('autor', 'fila', 'chamado', 'predios', 'atendentes', 'complexidades', 'form'));
}

/**
Expand Down Expand Up @@ -240,7 +244,6 @@ private function grava(Chamado $chamado, Request $request)
$chamado->atribuido_em = null;
$chamado->complexidade = null;
$user = \Auth::user();
$chamado->user_id = $user->id;
} else {
$request->validate([
'telefone' => ['required'],
Expand Down Expand Up @@ -294,10 +297,9 @@ private function grava(Chamado $chamado, Request $request)
/* Atualiza telefone da pessoa */
$user->telefone = $request->telefone;
$user->save();

$chamado->user_id = $user->id;
}
$chamado->save();
$chamado->users()->attach($user->id, ['funcao' => 'Autor']);
return $chamado;
}

Expand Down
6 changes: 4 additions & 2 deletions app/Models/Chamado.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ class Chamado extends Model
{
use HasFactory;

public function user(){
return $this->belongsTo(User::class);
public function users()
{
return $this->belongsToMany('App\Models\User', 'user_chamado')
->withPivot('funcao')->withTimestamps();
}

public function comentarios()
Expand Down
13 changes: 12 additions & 1 deletion app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,14 +100,25 @@ public static function getByCodpes($codpes) {
return User::where('codpes',$codpes)->first();
}


/**
* Relacionamento n:n com fila, atributo funcao: Gerente, Atendente
* TODO: não deveria ser filas?
*/
public function fila()
{
return $this->belongsToMany('App\Models\Fila')
->withPivot('funcao')
->withTimestamps();
}

/**
* Relacionamento n:n com chamado, atributo funcao:
- Atendente, Atribuidor, Autor, Observador
*/
public function chamados()
{
return $this->belongsToMany('App\Models\Chamado')
->withPivot('funcao')
->withTimestamps();
}
}
12 changes: 8 additions & 4 deletions app/Policies/ChamadoPolicy.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ public function viewAny(User $user)
public function view(User $user, Chamado $chamado)
{
// Quem pode ver: o autor, atendentes ou admin
if($user->codpes == $chamado->user->codpes){
return true;
foreach ($chamado->users as $u) {
if ($user->codpes == $u->codpes) {
return true;
}
}
if(Gate::allows('admin')){
return true;
Expand Down Expand Up @@ -67,8 +69,10 @@ public function create(User $user)
public function update(User $user, Chamado $chamado)
{
// Quem pode ver: o autor, atendentes ou admin
if($user->codpes == $chamado->user->codpes){
return true;
foreach ($chamado->users as $u) {
if ($user->codpes == $u->codpes) {
return true;
}
}
if(Gate::allows('admin')){
return true;
Expand Down
1 change: 0 additions & 1 deletion database/factories/ChamadoFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ public function definition()
'patrimonio' => $this->faker->unique()->numberBetween(10000, 999999),
'status' => $status,
'complexidade' => $complexidades[array_rand($complexidades)],
'user_id' => User::inRandomOrder()->first()->id,
'fila_id' => Fila::inRandomOrder()->first()->id,
'fechado_em' => $fechado_em,
'atribuido_em' => $atribuido_em,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ public function up()
$table->json('extras')->nullable();

/* Relacionamentos */
$table->foreignId('user_id')->nullable()->constrained('users')->onDelete('set null');
$table->foreignId('fila_id')->constrained('filas');

$table->timestamps();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUserChamadoTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_chamado', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->nullable()->constrained('users');
$table->foreignId('chamado_id')->constrained('chamados')->onDelete('cascade');

$funcoes = ['Atendente', 'Atribuidor', 'Autor', 'Observador'];
$table->enum('funcao', $funcoes)
;
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_chamado');
}
}
9 changes: 5 additions & 4 deletions database/seeders/ChamadoSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ public function run()
"dia" : "1951-07-22",
"obs" : "Fonte queimada. Precisa trocar."
}',
'user_id' => 1,
'fila_id' => 1
];

Chamado::create($chamado);
Chamado::factory(10)->create();

$cht = Chamado::create($chamado);
$cht->users()->attach(User::first()->id, ['funcao' => 'Autor']);
Chamado::factory(10)->create()->each(function ($chamado) {
$chamado->users()->attach(User::inRandomOrder()->first()->id, ['funcao' => 'Autor']);
});
}
}
2 changes: 1 addition & 1 deletion resources/views/chamados/form.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

<div class="col-sm form-group">
<label for="nome"><b>Número USP do(a) requisitante:</b></label>
<input class="form-control" id="codpes" name="codpes" value="{{ $chamado->user->codpes ?? old('codpes') }}">
<input class="form-control" id="codpes" name="codpes" value="{{ $autor->codpes ?? old('codpes') }}">
<small id="codpesHelp" class="form-text text-muted">Exemplo: 123456</small>
</div>

Expand Down
2 changes: 1 addition & 1 deletion resources/views/chamados/show.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<div class="col-md-4">

{{-- Painel direito --}}
<span class="text-muted">Criado por:</span> {{ $chamado->user->name}}<br>
<span class="text-muted">Criado por:</span> {{ $autor->name }}<br>
<span class="text-muted">Criado em:</span> {{ Carbon\Carbon::parse($chamado->created_at)->format('d/m/Y H:i') }}<br>

@if(!is_null($chamado->fechado_em))
Expand Down

0 comments on commit 54b5181

Please sign in to comment.