101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\PlanoEmpresa;
|
|
use App\Models\Empresa;
|
|
use App\Models\ConfiguracaoSuper;
|
|
use App\Models\FinanceiroBoleto;
|
|
|
|
class ValidaPlano
|
|
{
|
|
public function handle($request, Closure $next)
|
|
{
|
|
|
|
if(__isMaster()){
|
|
return $next($request);
|
|
}
|
|
|
|
$empresa_id = auth::user()->empresa ? auth::user()->empresa->empresa_id : null;
|
|
if($empresa_id == null){
|
|
session()->flash("flash_error", "Usuário sem empresa!");
|
|
return redirect()->route('home');
|
|
}
|
|
|
|
$emp = Empresa::findOrFail($empresa_id);
|
|
if($emp->status == 0){
|
|
session()->flash("flash_error", "Empresa desativada!");
|
|
return redirect()->route('home');
|
|
}
|
|
|
|
$plano = PlanoEmpresa::where('empresa_id', $empresa_id)
|
|
->orderBy('data_expiracao', 'desc')
|
|
->first();
|
|
|
|
if($plano == null){
|
|
session()->flash("flash_error", "Empresa sem plano atribuído!");
|
|
return redirect()->route('home');
|
|
}
|
|
|
|
if($emp->receber_com_boleto){
|
|
|
|
$config = ConfiguracaoSuper::first();
|
|
$diasAtrasoSuspender = $config->dias_atraso_suspender_boleto;
|
|
|
|
// $fatura = FinanceiroBoleto::where('empresa_id', $empresa_id)
|
|
// ->whereMonth('created_at', date('m'))
|
|
// ->where('status', 0)
|
|
// ->first();
|
|
|
|
$fatura = $this->validaFaturasAnteriores($empresa_id);
|
|
|
|
if($fatura == null){
|
|
return $next($request);
|
|
}
|
|
|
|
$diferenca = strtotime(date('Y-m-d')) - strtotime($fatura->vencimento);
|
|
$dif = (int)floor($diferenca / (60 * 60 * 24));
|
|
if($dif > $diasAtrasoSuspender){
|
|
session()->flash("flash_financeiro", 1);
|
|
session()->flash("flash_error", "Realize o pagamento da sua fatura!");
|
|
return redirect()->route('home');
|
|
}
|
|
}else{
|
|
|
|
if(date('Y-m-d') > $plano->data_expiracao){
|
|
session()->flash("flash_error", "Plano expirado!");
|
|
return redirect()->route('home');
|
|
}
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
|
|
private function validaFaturasAnteriores($empresa_id){
|
|
|
|
$fatura = FinanceiroBoleto::where('empresa_id', $empresa_id)
|
|
->where('status', 0)
|
|
->whereDate('vencimento', '<=', now())
|
|
->orderBy('vencimento', 'asc')
|
|
->first();
|
|
|
|
return $fatura;
|
|
// $mes = 1;
|
|
// $fim = (int)date('m');
|
|
// for($i=1; $i<=$fim; $i++){
|
|
// $fatura = FinanceiroBoleto::where('empresa_id', $empresa_id)
|
|
// ->whereMonth('vencimento', $mes)
|
|
// ->where('status', 0)
|
|
// ->first();
|
|
|
|
// if($fatura != null) return $fatura;
|
|
// $mes++;
|
|
// }
|
|
}
|
|
|
|
}
|