1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
namespace App\Models\Tabelas\Extensao;
use App\Models\Planejamento;
use App\Models\Tabelas\Constants;
use App\Queries\Tabelas\Extensao\ExtensaoOrientacaoQuery;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Rule;
class ExtensaoOrientacao extends Model
{
/**
* References table ensino_aulas
*
* @var string
*/
protected $table = 'extensao_orientacao';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['orientacao_id', 'user_pad_id', 'dimensao', 'cod_atividade', 'titulo_projeto', 'discente', 'funcao', 'ch_semanal', 'cod_dimensao'];
// Array de strings para preenchimento de campos de avaliação
public $avaliable_attributes = ['Título do Projeto:' => 'titulo_projeto', 'Discente:' => 'discente', 'Carga Horária:' => 'ch_semanal'];
// public function orientacao()
// {
// return $this->hasOne(Orientacao::class);
// }
public static function rules()
{
return [
'cod_atividade' => ['required', 'string', 'max:255'],
'titulo_projeto' => ['required', 'string', 'max:255'],
'discente' => ['required', 'string', 'max:255'],
'funcao' => ['required', 'integer', Rule::in(array_keys(Constants::listFuncaoOrientador()))],
'cod_dimensao' => ['required', 'string', Rule::in(array_keys(self::listPlanejamentos()))],
];
}
public static function messages()
{
return [
//cod_atividade
'cod_atividade.required' => 'O campo "Cód. Atividade" é obrigatório!',
//titulo_projeto
'titulo_projeto.required' => 'O campo "Título do Projeto" é obrigatório!',
//discente
'discente.required' => 'O campo "Nome do Orientando" é obrigatório!',
//funcao
'funcao.required' => 'O campo "Função" é obrigatório!',
'funcao.in' => 'Selecione uma opção da lista de "Função"!',
'funcao.integer' => 'O campo "Função" deve ser um inteiro!',
//'cod_dimensao'
'cod_dimensao.required' => 'O campo "Resolução" é obrigatório',
'cod_dimensao.in' => 'Selecione uma opção da lista de "Resolução"',
];
}
/**
* @return array
*/
public static function getPlanejamentos()
{
$codes = ['X-10', 'X-11', 'X-12', 'X-13', 'X-14', 'X-15'];
return Planejamento::initQuery()->whereInCodDimensao($codes)->get();
}
/**
* @return array
*/
public static function listPlanejamentos($cod_dimensao = null)
{
$planejamentos = self::getPlanejamentos();
$values = [];
foreach($planejamentos as $planejamento) {
$values[$planejamento->cod_dimensao] = $planejamento->descricao;
}
return $cod_dimensao !== null? $values[$cod_dimensao] : $values;
}
/**
* @return string
*/
public function funcaoAsString()
{
return Constants::listFuncaoOrientador($this->funcao);
}
public function userPad() {
return $this->belongsTo(UserPad::class);
}
public static function initQuery()
{
return new ExtensaoOrientacaoQuery(get_called_class());
}
}