Context: Home Approval data will only be saved if there is a saved amendment, the 'save' button should be disabled at first. When you save the amendment the 'save' button is disabled and your approval data will be saved. But how to do this logic?
"TestProfile" method of class "ProjectController.php"
//Cadastra os dados da aba de aprovação
public function cadastroAprovacao(Request $request)
{
$projeto = Projeto::find($request->get('id'));
/*
$emendas = DB::table('emendas_detalhes')
->where('projeto_id', $projeto->id)
->sum('valor'); */
$vlInterno = $this->formatacaoMoeda($request->get('valorInterno'));
//$vlEmenda = $this->formatacaoMoeda($emendas);
//$vlEmenda = $emendas;
$vlEmenda = $request->get('valorEmenda');
$projeto->valor_aprovado_total = 0;
$projeto->valor_aprovado_total = $vlInterno + $vlEmenda;
$projeto->valor_emendas = $vlEmenda;
$projeto->valor_interno = $vlInterno;
// $projeto->valor_contrapartida = $this->formatacaoMoeda($request->get('contrapartida'));
$projeto->valor_contrapartida = $request->get('contrapartida') == null ? 0 : $this->formatacaoMoeda($request->get('contrapartida')) ;
$projeto->nome_fiscal = $request->get('nomeFiscal');
$projeto->matricula_fiscal = $request->get('matriculaFiscal');
$projeto->dt_pag_autorizado = $request->get('dtAutPagamento');
$projeto->observacao_autorizacao = $request->get('observacaoAprovacao');
$response = $projeto->salvarAprovacao($projeto);
//Cadastro das ocorrências dos dados da aprovação
$ocorrencia = new Ocorrencia();
$ocorrencia->projeto_id = $projeto->id;
$ocorrencia->usuario_id = Auth::user()->id;
$ocorrencia->origem = 'A'; //A origem é Automática (A) pois o sistema que registra a ocorrência
$ocorrencia->tipo = 'I'; //É do tipo Informação (I), pois é feita automática
$ocorrencia->descricao = "Cadastro dos Dados da Aprovação";
$ocorrencia->dt_ocorrencia = date('Y-m-d H:i:s');
$ocorrencia->save();
if($response['success'])
{
return redirect()
->route('projeto.edita',$projeto->id)
->with('success',$response['message']);
}else
{
return redirect()
->back()
->with('error',$response['message']);
}
}
Template: Project.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use DB;
use SoftDeletes;
use Carbon\Carbon;
class Projeto extends Model
{
protected $table = "projetos";
protected $primaryKey = 'id';
//public $incrementing = false;
public $timestamps = false;
protected $fillable = ['tipo_processo','processo','dt_protocolo', 'demo','setor_origem_id','proponente_id','nome_projeto',
'dt_inicio','dt_fim','dias_intercalados','tipo_projeto_id','modalidade_apoio_id','localidade_id',
'valor_solicitado','arquivo_fisico','dt_lancamento','dt_alteracao','dt_alteracao','usu_lancamento_id',
'usu_responsavel_id'];
public function salvar(array $data)
{
$dataInsert['tipo_processo'] = $data['tipoProcesso'];
$dataInsert['processo'] = $data['numProcesso'];
$dataInsert['dt_protocolo'] = $data['dtProtocolo'];
$dataInsert['setor_origem_id'] = $data['setor'];
$dataInsert['proponente_id'] = $data['proponente'];
$dataInsert['nome_projeto'] = $data['nomeProjeto'];
$dataInsert['dt_inicio'] = $data['dtInicio'];
$dataInsert['dt_fim'] = $data['dtFim'];
$dataInsert['dias_intercalados'] = $data['diasIntercalados'];
$dataInsert['tipo_projeto_id'] = $data['tipoProjeto'];
$dataInsert['modalidade_apoio_id'] = $data['modalidadeApoio'];
$dataInsert['localidade_id'] = $data['localidade'];
$cleanPoint = str_replace('.', '', $data['vlSolicitado']);
$formatedValue = str_replace(',', '.', $cleanPoint);
$dataInsert['valor_solicitado'] = $formatedValue;
$dataInsert['arquivo_fisico'] = $data['arquivo'];
$dataInsert['dt_lancamento'] = \Carbon\Carbon::now();
$dataInsert['dt_alteracao'] = null;
$dataInsert['usu_lancamento_id'] = auth()->user()->id; //recebe o id do usuário logado
$dataInsert['usu_responsavel_id'] = auth()->user()->id; //recebe o id do usuário logado
return $this->create($dataInsert);
}
//Este método atualiza os dados do Projeto
public function alterar(Projeto $projeto) : Array
{
DB::beginTransaction();
$projeto = $this->save();
if($projeto){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao atualizar o Projeto'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao atualizar o Projeto'
];
}
}
//Este método remove os dados da Projeto
public function deletar(Projeto $projeto) : Array
{
$projeto = $this->delete();
if($projeto){
return[
'success' => true,
'message' => 'Sucesso ao excluir'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao excluir'
];
}
}
//Este método remove os dados da Notificação
public function deletarNotificacao(HistoricoNotificacao $notificacao) : Array
{
$notificacao = $this->delete();
if($notificacao){
return[
'success' => true,
'message' => 'Sucesso ao excluir a notificação'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao excluir a notificação'
];
}
}
//Este método remove os dados da Errata
public function deletarErrata(HistoricoErrata $errata) : Array
{
$errata = $this->delete();
if($errata){
return[
'success' => true,
'message' => 'Sucesso ao excluir a errata'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao excluir a errata'
];
}
}
public function salvarAprovacao(Projeto $projeto)
{
DB::beginTransaction();
$projeto = $this->save();
if($projeto){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar a Aprovação'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar a Aprovação'
];
}
}
public function salvarJuridico(Projeto $projeto)
{
DB::beginTransaction();
$projeto = $this->save();
if($projeto){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar o Jurídico'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar o Jurídico'
];
}
}
public function salvarContratosConvenios(Projeto $projeto)
{
DB::beginTransaction();
$projeto = $this->save();
if($projeto){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar Gestão de Contrato e Convênios'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar Gestão de Contrato e Convênios'
];
}
}
public function salvarFinanceiro(Projeto $projeto)
{
DB::beginTransaction();
$projeto = $this->save();
if($projeto){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar Financeiro'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar Financeiro'
];
}
}
//Salvar os dados da notificação
public function salvarNotificacao(HistoricoNotificacao $notificacao)
{
DB::beginTransaction();
$notificacao = $this->save();
if($notificacao){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar a Notificação'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar a Notificação'
];
}
}
//Salvar os dados da errata
public function salvarErrata(HistoricoErrata $errata)
{
DB::beginTransaction();
$errata = $this->save();
if($errata){
DB::commit();
return[
'success' => true,
'message' => 'Sucesso ao Salvar a Errata'
];
}
else{
DB::rollback();
return[
'success' => false,
'message' => 'Falha ao ao Salvar a Errata'
];
}
}
//Relacionamentos entre a tabela Projeto e localidades_projeto (relacionamento m:m "muitos para muitos")
public function localidades_projeto()
{
return $this->belongsToMany(Localidade::class, 'localidades_projeto', 'projeto_id', 'localidade_id');
}
}