upload
This commit is contained in:
30
app/Http/Controllers/AlunosController.php
Normal file
30
app/Http/Controllers/AlunosController.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\alunos;
|
||||||
|
use App\Models\turmas;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class AlunosController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$escolaId = Auth::user()->id_escola;
|
||||||
|
if ($escolaId == 0) {
|
||||||
|
$alunos = alunos::all();
|
||||||
|
} else {
|
||||||
|
$alunos = [];
|
||||||
|
$turmas = turmas::where('id_escola', $escolaId)->get();
|
||||||
|
foreach ($turmas as $turma) {
|
||||||
|
$alunosget = alunos::where('id_turma', $turma->id)->get();
|
||||||
|
|
||||||
|
foreach ($alunosget as $alunosg) {
|
||||||
|
$alunos[] = $alunosg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return view('escolas.alunos', compact('alunos'));
|
||||||
|
}
|
||||||
|
}
|
||||||
61
app/Http/Controllers/EnvioWhatsap.php
Normal file
61
app/Http/Controllers/EnvioWhatsap.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\turmas;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
|
class EnvioWhatsap extends Controller
|
||||||
|
{
|
||||||
|
public function envio(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'id_turma' => 'required|exists:turmas,id',
|
||||||
|
'tipo_envio' => 'required|in:texto,imagem',
|
||||||
|
'mensagem' => 'nullable|string',
|
||||||
|
'imagem' => 'required_if:tipo_envio,imagem|image|mimes:jpeg,png,webp|max:2048',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$turma = turmas::findOrFail($request->id_turma);
|
||||||
|
|
||||||
|
// Corrigir formatação para WhatsApp
|
||||||
|
$mensagem = $request->mensagem ?? '';
|
||||||
|
$mensagem = str_replace(['**', '__', '~~'], ['*', '_', '~'], $mensagem);
|
||||||
|
|
||||||
|
$payload = [
|
||||||
|
'chatId' => $turma->id_whatsapp,
|
||||||
|
'mensagem' => $mensagem,
|
||||||
|
];
|
||||||
|
|
||||||
|
// ✅ Se for envio com imagem
|
||||||
|
if ($request->tipo_envio === 'imagem' && $request->hasFile('imagem')) {
|
||||||
|
|
||||||
|
$file = $request->file('imagem');
|
||||||
|
|
||||||
|
$base64 = base64_encode(
|
||||||
|
file_get_contents($file->getRealPath())
|
||||||
|
);
|
||||||
|
|
||||||
|
$mime = $file->getMimeType(); // image/png, image/jpeg, etc
|
||||||
|
|
||||||
|
// 🔥 AQUI está o prefixo obrigatório
|
||||||
|
$base64Completo = "data:$mime;base64,$base64";
|
||||||
|
|
||||||
|
$payload['imagem'] = $base64Completo;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ Enviar para API
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'X-API-KEY' => 'UoCkSF4ApgADhpvDkkE5XO1fD761yOZX',
|
||||||
|
'Content-Type' => 'application/json',
|
||||||
|
])->post('https://n8n.cae.app.br/webhook/envioWpp', $payload);
|
||||||
|
|
||||||
|
// ✅ Retorno amigável
|
||||||
|
if ($response->successful()) {
|
||||||
|
return back()->with('success', 'Mensagem enviada com sucesso!');
|
||||||
|
}
|
||||||
|
|
||||||
|
return back()->with('error', 'Erro ao enviar: ' . $response->body());
|
||||||
|
}
|
||||||
|
}
|
||||||
37
app/Http/Controllers/EscolasController.php
Normal file
37
app/Http/Controllers/EscolasController.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\escolas;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class EscolasController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (Auth::user()->id_escola == 0) {
|
||||||
|
$escolas = escolas::all();
|
||||||
|
} else {
|
||||||
|
$escolas = escolas::where('id', Auth::user()->id_escola)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('escolas.index', compact('escolas'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createOrUpdate(Request $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
escolas::updateOrCreate([
|
||||||
|
'cnpj' => $request->cnpj,
|
||||||
|
],[
|
||||||
|
'nome' => $request->razaosocial,
|
||||||
|
'endereco' => json_decode($request->address, true),
|
||||||
|
]);
|
||||||
|
return redirect()->route('escolas')->with('success', 'Escola Criada|Atualizada com sucesso');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
dd($th);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/Http/Controllers/HistoricoEscolarController.php
Normal file
10
app/Http/Controllers/HistoricoEscolarController.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class HistoricoEscolarController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
52
app/Http/Controllers/TurmasController.php
Normal file
52
app/Http/Controllers/TurmasController.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\turmas;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class TurmasController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (Auth::user()->id_escola == 0) {
|
||||||
|
$turmas = turmas::all();
|
||||||
|
} else {
|
||||||
|
$turmas = turmas::where('id_escola', Auth::user()->id_escola)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('escolas.turmas', compact('turmas'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createOrUpdate(Request $request)
|
||||||
|
{
|
||||||
|
$turma = turmas::where('nome', '=', $request->turma_nome)->count();
|
||||||
|
if ($turma == 0) {
|
||||||
|
try {
|
||||||
|
$turma = new turmas();
|
||||||
|
$turma->id_escola = $request->id_escola;
|
||||||
|
$turma->nome = $request->turma_nome;
|
||||||
|
$turma->descricao = $request->turma_descricao;
|
||||||
|
$turma->id_whatsapp = $request->id_whatsapp;
|
||||||
|
$turma->save();
|
||||||
|
return redirect()->route('turmas')->with('success', 'Turma Criada|Atualizada com sucesso.');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
dd($th);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
turmas::where('nome', $request->turma_nome)->update([
|
||||||
|
'nome' => $request->turma_nome,
|
||||||
|
'descricao' => $request->turma_descricao,
|
||||||
|
'id_escola' => $request->id_escola,
|
||||||
|
'id_whatsapp' => $request->id_whatsapp,
|
||||||
|
]);
|
||||||
|
return redirect()->route('turmas')->with('success', 'Turma Criada|Atualizada com sucesso.');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
//throw $th;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
app/Models/alunos.php
Normal file
17
app/Models/alunos.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class alunos extends Model
|
||||||
|
{
|
||||||
|
public function turma()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(turmas::class, 'id_turma', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function responsaveis() {
|
||||||
|
return $this->hasMany(User::class, 'id', 'id_responsavel');
|
||||||
|
}
|
||||||
|
}
|
||||||
23
app/Models/escolas.php
Normal file
23
app/Models/escolas.php
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class escolas extends Model
|
||||||
|
{
|
||||||
|
protected $casts = [
|
||||||
|
'endereco' => 'array',
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'cnpj',
|
||||||
|
'endereco',
|
||||||
|
'nome',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function turmas()
|
||||||
|
{
|
||||||
|
return $this->hasMany(turmas::class, 'id_escola', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/Models/historico_escolar.php
Normal file
10
app/Models/historico_escolar.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class historico_escolar extends Model
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
22
app/Models/turmas.php
Normal file
22
app/Models/turmas.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class turmas extends Model
|
||||||
|
{
|
||||||
|
protected $fillable = [
|
||||||
|
'nome',
|
||||||
|
'descricao',
|
||||||
|
];
|
||||||
|
public function escola()
|
||||||
|
{
|
||||||
|
return $this->hasOne(escolas::class, 'id', 'id_escola');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function alunos()
|
||||||
|
{
|
||||||
|
return $this->hasMany(alunos::class, 'id', 'id_turma');
|
||||||
|
}
|
||||||
|
}
|
||||||
31
database/migrations/2026_02_06_145300_add_inf_users.php
Normal file
31
database/migrations/2026_02_06_145300_add_inf_users.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->integer('id_escola')->nullable();
|
||||||
|
$table->string('profile')->nullable();
|
||||||
|
$table->string('cpf')->nullable();
|
||||||
|
$table->json('endereco')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
30
database/migrations/2026_02_06_160406_change_inf_users.php
Normal file
30
database/migrations/2026_02_06_160406_change_inf_users.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->integer('id_escola')->nullable()->after('created_at')->change();
|
||||||
|
$table->string('profile')->nullable()->after('id_escola')->change();
|
||||||
|
$table->string('cpf')->nullable()->after(column: 'profile')->change();
|
||||||
|
$table->json('endereco')->nullable()->after('cpf')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('escolas', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('cnpj')->unique();
|
||||||
|
$table->string('nome');
|
||||||
|
$table->json('endereco');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('escolas');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('turmas', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('id_escola');
|
||||||
|
$table->string('nome');
|
||||||
|
$table->string('descricao');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('turmas');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('alunos', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('id_responsavel');
|
||||||
|
$table->integer('id_turma');
|
||||||
|
$table->string('nome');
|
||||||
|
$table->date('data_nascimento');
|
||||||
|
$table->date('data_inscricao');
|
||||||
|
$table->date('data_encerramento');
|
||||||
|
$table->string('cpf')->unique();
|
||||||
|
$table->json('endereco');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('alunos');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('historico_escolars', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('id_aluno');
|
||||||
|
$table->longText('historico');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('historico_escolars');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('alunos', function (Blueprint $table) {
|
||||||
|
$table->date('data_encerramento')->nullable()->change();
|
||||||
|
$table->json('endereco')->nullable()->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('alunos', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('turmas', function (Blueprint $table) {
|
||||||
|
$table->string('id_whatsapp');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('turmas', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
14
public/assets/css/bootstrap.css
vendored
14
public/assets/css/bootstrap.css
vendored
@@ -5099,6 +5099,20 @@ textarea.form-control-lg {
|
|||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown.show .gear-icon {
|
||||||
|
animation: spin 1.2s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
from {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.list-group-horizontal {
|
.list-group-horizontal {
|
||||||
-webkit-box-orient: horizontal;
|
-webkit-box-orient: horizontal;
|
||||||
-webkit-box-direction: normal;
|
-webkit-box-direction: normal;
|
||||||
|
|||||||
BIN
public/assets/images/login.jpg
Normal file
BIN
public/assets/images/login.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 188 KiB |
BIN
public/assets/images/logo3.png
Normal file
BIN
public/assets/images/logo3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 120 KiB |
@@ -12,7 +12,7 @@
|
|||||||
<meta name="author" content="pixelstrap">
|
<meta name="author" content="pixelstrap">
|
||||||
<link rel="icon" href="../assets/images/favicon.png" type="image/x-icon">
|
<link rel="icon" href="../assets/images/favicon.png" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="../assets/images/favicon.png" type="image/x-icon">
|
<link rel="shortcut icon" href="../assets/images/favicon.png" type="image/x-icon">
|
||||||
<title>Escola da Árvore - Administração de comunicação</title>
|
<title>{{ env('APP_NAME') }} - Login</title>
|
||||||
<!-- Google font-->
|
<!-- Google font-->
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
<link
|
<link
|
||||||
@@ -43,17 +43,6 @@
|
|||||||
<link id="color" rel="stylesheet" href="../assets/css/color-1.css" media="screen">
|
<link id="color" rel="stylesheet" href="../assets/css/color-1.css" media="screen">
|
||||||
<!-- Responsive css-->
|
<!-- Responsive css-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/responsive.css">
|
<link rel="stylesheet" type="text/css" href="../assets/css/responsive.css">
|
||||||
<script type="text/javascript">
|
|
||||||
window.onload = function () {
|
|
||||||
(function (d, script) {
|
|
||||||
script = d.createElement('script');
|
|
||||||
script.type = 'text/javascript';
|
|
||||||
script.async = true;
|
|
||||||
script.src = 'https://w.app/widget-v1/lNOnXt.js';
|
|
||||||
d.getElementsByTagName('head')[0].appendChild(script);
|
|
||||||
}(document));
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -69,14 +58,14 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-7"><img class="bg-img-cover bg-center"
|
<div class="col-xl-7"><img class="bg-img-cover bg-center"
|
||||||
src="https://static.wixstatic.com/media/41ee35_73bd5b9e15d344a1b7f397306f721050~mv2.jpg/v1/fill/w_665,h_620,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/41ee35_73bd5b9e15d344a1b7f397306f721050~mv2.jpg"
|
src="{{ asset('assets/images/login.jpg') }}"
|
||||||
alt="looginpage"></div>
|
alt="looginpage"></div>
|
||||||
<div class="col-xl-5 p-0">
|
<div class="col-xl-5 p-0">
|
||||||
<div class="login-card">
|
<div class="login-card">
|
||||||
<form method="POST" action="{{ route('login') }}" class="theme-form login-form">
|
<form method="POST" action="{{ route('login') }}" class="theme-form login-form">
|
||||||
@csrf
|
@csrf
|
||||||
<h4>Login</h4>
|
<h4>Login</h4>
|
||||||
<h6>Seja bem vindo(a) ao sistema de comunicação da turma Duguetia.</h6>
|
<h6>Seja bem vindo(a) ao CAE</h6>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Email</label>
|
<label>Email</label>
|
||||||
<div class="input-group"><span class="input-group-text"><i class="icon-email"></i></span>
|
<div class="input-group"><span class="input-group-text"><i class="icon-email"></i></span>
|
||||||
|
|||||||
74
resources/views/escolas/alunos.blade.php
Normal file
74
resources/views/escolas/alunos.blade.php
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
@extends('theme.default')
|
||||||
|
@section('title', 'Alunos')
|
||||||
|
@section('title.page', 'Alunos')
|
||||||
|
@section('title.page1', 'CAE')
|
||||||
|
@section('title.page2', 'Alunos')
|
||||||
|
@section('title.page3', 'Lista de alunos')
|
||||||
|
@section('content')
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block row">
|
||||||
|
<div class="col-sm-12 col-lg-12 col-xl-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table">
|
||||||
|
<thead class="bg-primary">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">#</th>
|
||||||
|
<th scope="col">Nome</th>
|
||||||
|
<th scope="col">CPF</th>
|
||||||
|
<th scope="col">Escola</th>
|
||||||
|
<th scope="col">Turma</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($alunos as $aluno)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ $aluno->id }}</th>
|
||||||
|
<td>{{ $aluno->nome }}</td>
|
||||||
|
<td>{{ $aluno->cpf }}</td>
|
||||||
|
<td>{{ $aluno->turma->escola->nome }}</td>
|
||||||
|
<td>{{ $aluno->turma->nome }}</td>
|
||||||
|
<td>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-link p-0 gear-btn" type="button"
|
||||||
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<i data-feather="settings" class="gear-icon bg-primary"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
|
<li>
|
||||||
|
<form action="editar.php" method="post">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item">
|
||||||
|
Editar
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<form action="excluir.php" method="post"
|
||||||
|
onsubmit="return confirm('Tem certeza que deseja excluir?')">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item text-danger">
|
||||||
|
Excluir
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
89
resources/views/escolas/index.blade.php
Normal file
89
resources/views/escolas/index.blade.php
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
@extends('theme.default')
|
||||||
|
@section('title', 'Escolas')
|
||||||
|
@section('title.page', 'Escolas')
|
||||||
|
@section('title.page1', 'CAE')
|
||||||
|
@section('title.page2', 'Escolas')
|
||||||
|
@section('title.page3', 'Lista de escolas')
|
||||||
|
@section('content')
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block row">
|
||||||
|
<div class="col-sm-12 col-lg-12 col-xl-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table">
|
||||||
|
<thead class="bg-primary">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">#</th>
|
||||||
|
<th scope="col">Nome</th>
|
||||||
|
<th scope="col">CNPJ</th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($escolas as $escola)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{$escola->id}}</th>
|
||||||
|
<td>{{$escola->nome}}</td>
|
||||||
|
<td>{{$escola->cnpj}}</td>
|
||||||
|
<td>
|
||||||
|
<span>Endereço:</span>
|
||||||
|
<p>{{ $escola->endereco['street'] }} {{ $escola->endereco['number'] }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>Complemento:</span>
|
||||||
|
<p>{{ $escola->endereco['details'] }} </p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>Cep:</span>
|
||||||
|
<p>{{ $escola->endereco['zip'] }}</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-link p-0 gear-btn" type="button"
|
||||||
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<i data-feather="settings" class="gear-icon bg-primary"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
|
<li>
|
||||||
|
<form action="editar.php" method="post">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item">
|
||||||
|
Editar
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<form action="excluir.php" method="post"
|
||||||
|
onsubmit="return confirm('Tem certeza que deseja excluir?')">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item text-danger">
|
||||||
|
Excluir
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
79
resources/views/escolas/turmas.blade.php
Normal file
79
resources/views/escolas/turmas.blade.php
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
@extends('theme.default')
|
||||||
|
@section('title', 'Turmas')
|
||||||
|
@section('title.page', 'Turmas')
|
||||||
|
@section('title.page1', 'CAE')
|
||||||
|
@section('title.page2', 'Turmas')
|
||||||
|
@section('title.page3', 'Lista de turmas')
|
||||||
|
@section('content')
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block row">
|
||||||
|
<div class="col-sm-12 col-lg-12 col-xl-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table">
|
||||||
|
<thead class="bg-primary">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">#</th>
|
||||||
|
<th scope="col">Escola</th>
|
||||||
|
<th scope="col">Nome</th>
|
||||||
|
<th scope="col">Descrição</th>
|
||||||
|
<th scope="col">Whatsap</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($turmas as $turma)
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ $turma->id }}</th>
|
||||||
|
<td>{{ $turma->escola->nome }}</td>
|
||||||
|
<td>{{ $turma->nome }}</td>
|
||||||
|
<td>{{ $turma->descricao }}</td>
|
||||||
|
<td>{{ $turma->id_whatsapp }}</td>
|
||||||
|
<td>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button
|
||||||
|
class="btn btn-link p-0 gear-btn"
|
||||||
|
type="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false"
|
||||||
|
>
|
||||||
|
<i data-feather="settings" class="gear-icon bg-primary"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
|
<li>
|
||||||
|
<form action="editar.php" method="post">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item">
|
||||||
|
Editar
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<form action="excluir.php" method="post"
|
||||||
|
onsubmit="return confirm('Tem certeza que deseja excluir?')">
|
||||||
|
<input type="hidden" name="id" value="123">
|
||||||
|
<button type="submit" class="dropdown-item text-danger">
|
||||||
|
Excluir
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -5,9 +5,9 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="icon" href="../assets/images/favicon.jpg" type="image/x-icon">
|
<link rel="icon" href="{{asset('assets/images/logo3.png')}}" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="../assets/images/favicon.jpg" type="image/x-icon">
|
<link rel="shortcut icon" href="{{asset('assets/images/favicon.jpg')}}" type="image/x-icon">
|
||||||
<title>Escola da Árvore - @yield('title')</title>
|
<title>{{ env('APP_NAME') }} - @yield('title')</title>
|
||||||
<!-- Google font-->
|
<!-- Google font-->
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
<link
|
<link
|
||||||
@@ -20,27 +20,44 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
||||||
rel="stylesheet">
|
rel="stylesheet">
|
||||||
<!-- Font Awesome-->
|
<!-- Font Awesome-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/fontawesome.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/fontawesome.css')}}">
|
||||||
<!-- ico-font-->
|
<!-- ico-font-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/icofont.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/icofont.css')}}">
|
||||||
<!-- Themify icon-->
|
<!-- Themify icon-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/themify.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/themify.css')}}">
|
||||||
<!-- Flag icon-->
|
<!-- Flag icon-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/flag-icon.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/flag-icon.css')}}">
|
||||||
<!-- Feather icon-->
|
<!-- Feather icon-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/feather-icon.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/feather-icon.css')}}">
|
||||||
<!-- Plugins css start-->
|
<!-- Plugins css start-->
|
||||||
<!-- Plugins css Ends-->
|
<!-- Plugins css Ends-->
|
||||||
<!-- Bootstrap css-->
|
<!-- Bootstrap css-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/bootstrap.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/bootstrap.css')}}">
|
||||||
<!-- App css-->
|
<!-- App css-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/style.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/style.css')}}">
|
||||||
<link id="color" rel="stylesheet" href="../assets/css/color-1.css" media="screen">
|
<link id="color" rel="stylesheet" href="{{ asset('assets/css/color-1.css')}}" media="screen">
|
||||||
<!-- Responsive css-->
|
<!-- Responsive css-->
|
||||||
<link rel="stylesheet" type="text/css" href="../assets/css/responsive.css">
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/responsive.css')}}">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/dropzone.css') }}">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@php
|
||||||
|
use App\Models\escolas;
|
||||||
|
use App\Models\turmas;
|
||||||
|
if (Auth::user()->id_escola == 0) {
|
||||||
|
$escolas = escolas::all();
|
||||||
|
} else {
|
||||||
|
$escolas = escolas::where('id', Auth::user()->id_escola)->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Auth::user()->id_escola == 0) {
|
||||||
|
$turmas = turmas::all();
|
||||||
|
} else {
|
||||||
|
$turmas = turmas::where('id_escola', Auth::user()->id_escola)->get();
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
<!-- Loader starts-->
|
<!-- Loader starts-->
|
||||||
<div class="loader-wrapper">
|
<div class="loader-wrapper">
|
||||||
<div class="theme-loader">
|
<div class="theme-loader">
|
||||||
@@ -54,10 +71,6 @@
|
|||||||
<div class="page-main-header">
|
<div class="page-main-header">
|
||||||
<div class="main-header-right row m-0">
|
<div class="main-header-right row m-0">
|
||||||
<div class="main-header-left">
|
<div class="main-header-left">
|
||||||
<div class="logo-wrapper"><a href="index.html"><img class="img-fluid"
|
|
||||||
src="../assets/images/logo2.png" alt=""></a></div>
|
|
||||||
<div class="dark-logo-wrapper"><a href="index.html"><img class="img-fluid"
|
|
||||||
src="../assets/images/logo2.png" alt=""></a></div>
|
|
||||||
<div class="toggle-sidebar"><i class="status_toggle middle" data-feather="align-center"
|
<div class="toggle-sidebar"><i class="status_toggle middle" data-feather="align-center"
|
||||||
id="sidebar-toggle"></i></div>
|
id="sidebar-toggle"></i></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -76,6 +89,26 @@
|
|||||||
<ul class="nav-menus">
|
<ul class="nav-menus">
|
||||||
<li><a class="text-dark" href="#!" onclick="javascript:toggleFullScreen()"><i
|
<li><a class="text-dark" href="#!" onclick="javascript:toggleFullScreen()"><i
|
||||||
data-feather="maximize"></i></a></li>
|
data-feather="maximize"></i></a></li>
|
||||||
|
<li>
|
||||||
|
<div class="dropdown-basic">
|
||||||
|
<div class="dropdown">
|
||||||
|
<div class="btn-group mb-0">
|
||||||
|
<button class="dropbtn btn-primary btn-round" type="button">
|
||||||
|
Novo <span><i class="icofont icofont-arrow-down"></i></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="dropdown-content">
|
||||||
|
<a href="#" data-bs-toggle="modal" data-bs-target="#modalEscola">Escola</a>
|
||||||
|
<a href="#" data-bs-toggle="modal" data-bs-target="#modalTurma">Turma</a>
|
||||||
|
<a href="#" data-bs-toggle="modal" data-bs-target="#modalAluno">Aluno</a>
|
||||||
|
<a href="#" data-bs-toggle="modal" data-bs-target="#modalEnvio">Envio de
|
||||||
|
Mensagem</a>
|
||||||
|
<a href="#" data-bs-toggle="modal" data-bs-target="#modalEvento">Evento</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
<li class="onhover-dropdown p-0">
|
<li class="onhover-dropdown p-0">
|
||||||
<form method="POST" action="{{ route('logout') }}">
|
<form method="POST" action="{{ route('logout') }}">
|
||||||
@csrf
|
@csrf
|
||||||
@@ -97,7 +130,7 @@
|
|||||||
<header class="main-nav">
|
<header class="main-nav">
|
||||||
<div class="sidebar-user text-center"><a class="setting-primary" href="javascript:void(0)"><i
|
<div class="sidebar-user text-center"><a class="setting-primary" href="javascript:void(0)"><i
|
||||||
data-feather="settings"></i></a><img class="img-90 rounded-circle"
|
data-feather="settings"></i></a><img class="img-90 rounded-circle"
|
||||||
src="../assets/images/dashboard/1.png" alt="">
|
src="{{ asset('assets/images/logo3.png')}}" alt="">
|
||||||
<div class="badge-bottom"><span class="badge badge-primary">Responsável</span></div><a
|
<div class="badge-bottom"><span class="badge badge-primary">Responsável</span></div><a
|
||||||
href="user-profile.html">
|
href="user-profile.html">
|
||||||
<h6 class="mt-3 f-14 f-w-600">{{ Auth::user()->name }}</h6>
|
<h6 class="mt-3 f-14 f-w-600">{{ Auth::user()->name }}</h6>
|
||||||
@@ -114,11 +147,25 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="sidebar-main-title">
|
<li class="sidebar-main-title">
|
||||||
<div>
|
<div>
|
||||||
<h6>Dashboard </h6>
|
<h6>Geral </h6>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="dropdown"><a class="nav-link menu-title link-nav" href=""><i
|
<li class="dropdown"><a class="nav-link menu-title link-nav" href=""><i
|
||||||
data-feather="git-pull-request"></i><span>Dashboard</span></a></li>
|
data-feather="git-pull-request"></i><span>Dashboard</span></a></li>
|
||||||
|
<li class="sidebar-main-title">
|
||||||
|
<div>
|
||||||
|
<h6>Administração </h6>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="dropdown"><a class="nav-link menu-title link-nav"
|
||||||
|
href="{{ route('escolas') }}"><i
|
||||||
|
data-feather="award"></i><span>Escolas</span></a></li>
|
||||||
|
<li class="dropdown"><a class="nav-link menu-title link-nav"
|
||||||
|
href="{{ route('turmas') }}"><i data-feather="award"></i><span>Turmas</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="dropdown"><a class="nav-link menu-title link-nav"
|
||||||
|
href="{{ route('alunos') }}"><i data-feather="award"></i><span>Alunos</span></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-arrow" id="right-arrow"><i data-feather="arrow-right"></i></div>
|
<div class="right-arrow" id="right-arrow"><i data-feather="arrow-right"></i></div>
|
||||||
@@ -148,24 +195,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- Container-fluid starts-->
|
<!-- Container-fluid starts-->
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
@yield('content')
|
||||||
<div class="col-sm-12">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header pb-0">
|
|
||||||
<h5>Sample Card</h5><span>lorem ipsum dolor sit amet, consectetur adipisicing
|
|
||||||
elit</span>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
|
||||||
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
|
|
||||||
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
|
||||||
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
|
|
||||||
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
|
|
||||||
culpa qui officia deserunt mollit anim id est laborum."</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Container-fluid Ends-->
|
<!-- Container-fluid Ends-->
|
||||||
</div>
|
</div>
|
||||||
@@ -183,23 +213,355 @@
|
|||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal fade" id="modalEscola" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title">Nova Escola</h4>
|
||||||
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form class="form theme-form" action="{{ route('escola.novo') }}" method="POST">
|
||||||
|
@csrf
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="cnoj">CNPJ</label>
|
||||||
|
<input class="form-control" id="cnpj" name="cnpj" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-8">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="razao_social">Razão Social</label>
|
||||||
|
<input class="form-control" id="razao_social" name="razaosocial" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="logradouro">Logradouro</label>
|
||||||
|
<input class="form-control" id="logradouro" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="numero">Número</label>
|
||||||
|
<input class="form-control" id="numero" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="cep">CEP</label>
|
||||||
|
<input class="form-control" id="cep" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="complemento">Complemento</label>
|
||||||
|
<input class="form-control" id="complemento" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="bairro">Bairro</label>
|
||||||
|
<input class="form-control" id="bairro" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-2">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="estado">Estado</label>
|
||||||
|
<input class="form-control" id="estado" type="text" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="cidade">Cidade</label>
|
||||||
|
<input class="form-control" id="cidade" type="text" disabled>
|
||||||
|
<input class="form-control" id="address" name="address" type="hidden">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
<button class="btn btn-primary" type="submit">Salvar|Atualizar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="modalTurma" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title">Nova Turma</h4>
|
||||||
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form class="form theme-form" action="{{ route('turma.novo') }}" method="POST">
|
||||||
|
@csrf
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="escolas">Escola</label>
|
||||||
|
<select class="form-select digits" id="escolas" name="id_escola">
|
||||||
|
@foreach ($escolas as $escola)
|
||||||
|
<option value="{{ $escola->id }}">{{ $escola->nome }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="turma_nome">Nome</label>
|
||||||
|
<input class="form-control" id="turma_nome" name="turma_nome" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="turma_descricao">Descrição</label>
|
||||||
|
<input class="form-control" id="turma_descricao" name="turma_descricao"
|
||||||
|
type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="id_whatsapp">Whatsap Id</label>
|
||||||
|
<input class="form-control" id="id_whatsapp" name="id_whatsapp" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
<button class="btn btn-primary" type="submit">Salvar|Atualizar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="modalAluno" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title">Novo Aluno</h4>
|
||||||
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<!-- formulário -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="modalEnvio" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
|
||||||
|
<form class="form theme-form" action="{{ route('envio.wpp') }}" method="POST"
|
||||||
|
enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title">Novo Envio</h4>
|
||||||
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<!-- ✅ NOVO DROPDOWN (primeiro item) -->
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Tipo de Envio</label>
|
||||||
|
<select class="form-select" name="tipo_envio" id="tipo_envio">
|
||||||
|
<option value="texto">Somente Texto</option>
|
||||||
|
<option value="imagem">Imagem + Texto</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Turma -->
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Turma</label>
|
||||||
|
<select class="form-select digits" name="id_turma">
|
||||||
|
@foreach ($turmas as $turma)
|
||||||
|
<option value="{{ $turma->id }}">
|
||||||
|
{{ $turma->nome }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Mensagem -->
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Mensagem</label>
|
||||||
|
<textarea id="editor" name="mensagem" class="form-control"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Upload imagem (oculto inicialmente) -->
|
||||||
|
<div class="col-12 d-none" id="campoImagem">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Imagem</label>
|
||||||
|
<input type="file" name="imagem" class="form-control"
|
||||||
|
accept="image/jpeg,image/png,image/webp">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-secondary" data-bs-dismiss="modal">
|
||||||
|
Cancelar
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-primary" type="submit">
|
||||||
|
Enviar Mensagem
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="modalEvento" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title">Novo Evento</h4>
|
||||||
|
<button class="btn-close" data-bs-dismiss="modal"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<!-- formulário -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- latest jquery-->
|
<!-- latest jquery-->
|
||||||
<script src="../assets/js/jquery-3.5.1.min.js"></script>
|
<script src="{{ asset('assets/js/jquery-3.5.1.min.js')}}"></script>
|
||||||
<!-- feather icon js-->
|
<!-- feather icon js-->
|
||||||
<script src="../assets/js/icons/feather-icon/feather.min.js"></script>
|
<script src="{{ asset('assets/js/icons/feather-icon/feather.min.js')}}"></script>
|
||||||
<script src="../assets/js/icons/feather-icon/feather-icon.js"></script>
|
<script src="{{ asset('assets/js/icons/feather-icon/feather-icon.js')}}"></script>
|
||||||
<!-- Sidebar jquery-->
|
<!-- Sidebar jquery-->
|
||||||
<script src="../assets/js/sidebar-menu.js"></script>
|
<script src="{{ asset('assets/js/sidebar-menu.js')}}"></script>
|
||||||
<script src="../assets/js/config.js"></script>
|
<script src="{{ asset('assets/js/config.js')}}"></script>
|
||||||
<!-- Bootstrap js-->
|
<!-- Bootstrap js-->
|
||||||
<script src="../assets/js/bootstrap/popper.min.js"></script>
|
<script src="{{ asset('assets/js/bootstrap/popper.min.js')}}"></script>
|
||||||
<script src="../assets/js/bootstrap/bootstrap.min.js"></script>
|
<script src="{{ asset('assets/js/bootstrap/bootstrap.min.js')}}"></script>
|
||||||
<!-- Plugins JS start-->
|
<!-- Plugins JS start-->
|
||||||
<!-- Plugins JS Ends-->
|
<!-- Plugins JS Ends-->
|
||||||
<!-- Theme js-->
|
<!-- Theme js-->
|
||||||
<script src="../assets/js/script.js"></script>
|
<script src="{{ asset('assets/js/script.js')}}"></script>
|
||||||
<!-- login js-->
|
<!-- login js-->
|
||||||
<!-- Plugin used-->
|
<!-- Plugin used-->
|
||||||
|
<script src="{{ asset('assets/js/icons/icons-notify.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/icons/icon-clipart.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/icons/feather-icon/feather-icon.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/icons/feather-icon/feather.min.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/tooltip-init.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/dropzone/dropzone.js') }}"></script>
|
||||||
|
<script src="{{ asset('assets/js/dropzone/dropzone-script.js') }}"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script>
|
||||||
|
|
||||||
|
@yield('scripts')
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let ultimoCNPJ = '';
|
||||||
|
let timeout = null;
|
||||||
|
|
||||||
|
document.getElementById('cnpj').addEventListener('input', function () {
|
||||||
|
let cnpj = this.value.replace(/\D/g, '');
|
||||||
|
|
||||||
|
clearTimeout(timeout);
|
||||||
|
|
||||||
|
if (cnpj.length !== 14 || cnpj === ultimoCNPJ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout = setTimeout(() => {
|
||||||
|
ultimoCNPJ = cnpj;
|
||||||
|
buscarCNPJ(cnpj);
|
||||||
|
}, 400);
|
||||||
|
});
|
||||||
|
|
||||||
|
function buscarCNPJ(cnpj) {
|
||||||
|
fetch(`https://open.cnpja.com/office/${cnpj}`)
|
||||||
|
.then(response => {
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error('Erro na consulta');
|
||||||
|
}
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
|
||||||
|
// ===== RAZÃO SOCIAL =====
|
||||||
|
document.getElementById('razao_social').value =
|
||||||
|
data.company?.name ?? '';
|
||||||
|
|
||||||
|
const address = data.address ?? {};
|
||||||
|
|
||||||
|
// ===== ENDEREÇO =====
|
||||||
|
document.getElementById('logradouro').value = address.street ?? '';
|
||||||
|
document.getElementById('numero').value = address.number ?? '';
|
||||||
|
document.getElementById('complemento').value = address.details ?? '';
|
||||||
|
document.getElementById('bairro').value = address.district ?? '';
|
||||||
|
document.getElementById('estado').value = address.state ?? '';
|
||||||
|
document.getElementById('cidade').value = address.city ?? '';
|
||||||
|
document.getElementById('address').value = JSON.stringify(address ?? {});
|
||||||
|
|
||||||
|
// CEP formatado
|
||||||
|
document.getElementById('cep').value = formatarCEP(address.zip);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
alert('Erro ao consultar o CNPJ');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatarCEP(cep) {
|
||||||
|
if (!cep) return '';
|
||||||
|
return cep.replace(/^(\d{5})(\d{3})$/, '$1-$2');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var simplemde = new SimpleMDE({
|
||||||
|
element: document.getElementById("editor"),
|
||||||
|
spellChecker: false,
|
||||||
|
toolbar: ["bold", "italic", "strikethrough", "|", "unordered-list", "ordered-list", "|", "preview"]
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
document.getElementById('tipo_envio').addEventListener('change', function () {
|
||||||
|
const campoImagem = document.getElementById('campoImagem');
|
||||||
|
|
||||||
|
if (this.value === 'imagem') {
|
||||||
|
campoImagem.classList.remove('d-none');
|
||||||
|
} else {
|
||||||
|
campoImagem.classList.add('d-none');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
<meta name="author" content="pixelstrap">
|
<meta name="author" content="pixelstrap">
|
||||||
<link rel="icon" href="../assets/images/favicon.png" type="image/x-icon">
|
<link rel="icon" href="../assets/images/favicon.png" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="../assets/images/favicon.png" type="image/x-icon">
|
<link rel="shortcut icon" href="../assets/images/favicon.png" type="image/x-icon">
|
||||||
<title>Escola da Árvore - Administração de comunicação</title>
|
<title>{{ env('APP_NAME') }} - LOGIN</title>
|
||||||
<!-- Google font-->
|
<!-- Google font-->
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
<link
|
<link
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\AlunosController;
|
||||||
|
use App\Http\Controllers\EnvioWhatsap;
|
||||||
|
use App\Http\Controllers\EscolasController;
|
||||||
use App\Http\Controllers\ProfileController;
|
use App\Http\Controllers\ProfileController;
|
||||||
|
use App\Http\Controllers\TurmasController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
|
||||||
// Rotas para Guest, sem necessidade de autenticação
|
// Rotas para Guest, sem necessidade de autenticação
|
||||||
Route::middleware('guest')->group(function () {
|
Route::middleware('guest')->group(function () {
|
||||||
Route::get('/', function () {
|
Route::get('/', function () {
|
||||||
return view('welcome');
|
return redirect()->route('login');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -20,6 +24,12 @@ Route::middleware('auth')->group(function () {
|
|||||||
Route::get('/dashboard', function () {
|
Route::get('/dashboard', function () {
|
||||||
return view('dashboard');
|
return view('dashboard');
|
||||||
})->name('dashboard');
|
})->name('dashboard');
|
||||||
|
Route::get('/escolas', [EscolasController::class, 'index'])->name('escolas');
|
||||||
|
Route::post('/escolas', [EscolasController::class, 'createOrUpdate'])->name('escola.novo');
|
||||||
|
Route::get('/turmas', [TurmasController::class, 'index'])->name('turmas');
|
||||||
|
Route::post('/turmas', [TurmasController::class, 'createOrUpdate'])->name('turma.novo');
|
||||||
|
Route::get('/alunos', [AlunosController::class, 'index'])->name('alunos');
|
||||||
|
Route::post('/envio-wpp', [EnvioWhatsap::class, 'envio'])->name('envio.wpp');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user