#!/bin/bash
# ============================================================
#  DENTAL SAAS — Deploy Script
#  Execute no terminal do cPanel:
#  bash deploy.sh
# ============================================================

BASE=~/public_html/simples

echo "🚀 Iniciando deploy..."

# Controllers
echo "→ Copiando Controllers..."
cp $BASE/controllers/DashboardController.php   $BASE/app/Http/Controllers/
cp $BASE/controllers/PatientController.php     $BASE/app/Http/Controllers/
cp $BASE/controllers/AppointmentController.php $BASE/app/Http/Controllers/
cp $BASE/controllers/TransactionController.php $BASE/app/Http/Controllers/

# Models
echo "→ Copiando Models..."
cp $BASE/app/Models/Patient.php     $BASE/app/Models/
cp $BASE/app/Models/Appointment.php $BASE/app/Models/

# Cria Models faltantes
cat > $BASE/app/Models/Clinic.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Clinic extends Model {
    use SoftDeletes;
    protected $fillable = ['name','cnpj','phone','email','whatsapp_token','whatsapp_phone_id','whatsapp_active','reminder_hours_before','active'];
    protected $casts = ['working_hours'=>'array','whatsapp_active'=>'boolean','active'=>'boolean'];
}
EOF

cat > $BASE/app/Models/Professional.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Professional extends Model {
    use SoftDeletes;
    protected $fillable = ['clinic_id','user_id','name','cro','specialty','phone','color','schedule','default_appointment_duration','active'];
    protected $casts = ['schedule'=>'array','active'=>'boolean'];
    public function clinic() { return $this->belongsTo(Clinic::class); }
    public function appointments() { return $this->hasMany(Appointment::class); }
}
EOF

cat > $BASE/app/Models/Procedure.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Procedure extends Model {
    protected $fillable = ['clinic_id','name','description','default_duration','default_price','color','active'];
    protected $casts = ['active'=>'boolean','default_price'=>'decimal:2'];
}
EOF

cat > $BASE/app/Models/Chair.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Chair extends Model {
    protected $fillable = ['clinic_id','name','color','active'];
    protected $casts = ['active'=>'boolean'];
}
EOF

cat > $BASE/app/Models/Transaction.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Transaction extends Model {
    use SoftDeletes;
    protected $fillable = ['clinic_id','cash_register_id','patient_id','appointment_id','user_id','professional_id','type','category','description','amount','due_date','paid_date','payment_method','installments_count','installment_number','status','notes','batch_id'];
    protected $casts = ['amount'=>'decimal:2','due_date'=>'date','paid_date'=>'date'];
    public function patient() { return $this->belongsTo(Patient::class); }
    public function clinic()  { return $this->belongsTo(Clinic::class); }
}
EOF

cat > $BASE/app/Models/WhatsappLog.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class WhatsappLog extends Model {
    protected $fillable = ['clinic_id','patient_id','appointment_id','to_phone','message_type','message_body','external_message_id','status','error_message','attempts'];
    protected $casts = ['sent_at'=>'datetime','delivered_at'=>'datetime','read_at'=>'datetime'];
}
EOF

cat > $BASE/app/Models/Anamnesis.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Anamnesis extends Model {
    use SoftDeletes;
    protected $fillable = ['patient_id','clinic_id','anamnesis_template_id','professional_id','answers','general_notes','patient_signed','signed_at'];
    protected $casts = ['answers'=>'array','patient_signed'=>'boolean','signed_at'=>'datetime'];
}
EOF

cat > $BASE/app/Models/PatientDocument.php << 'EOF'
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class PatientDocument extends Model {
    use SoftDeletes;
    protected $fillable = ['patient_id','clinic_id','professional_id','appointment_id','type','title','content','pdf_path','issued_at'];
    protected $casts = ['issued_at'=>'datetime'];
}
EOF

# Routes
echo "→ Copiando Routes..."
cp $BASE/routes/web.php $BASE/../web.php 2>/dev/null || cp $BASE/routes/web.php $BASE/routes_web_backup.php
cat $BASE/routes/web.php > $BASE/routes/web.php.tmp && mv $BASE/routes/web.php.tmp /dev/null 2>/dev/null
cp $BASE/routes/web.php ~/public_html/simples/routes/web.php

# Views
echo "→ Copiando Views..."
mkdir -p $BASE/resources/views/{auth,patients,appointments,transactions}
cp $BASE/views/layouts/app.blade.php    $BASE/resources/views/components/app-layout.blade.php
cp $BASE/views/auth/login.blade.php     $BASE/resources/views/auth/login.blade.php
cp $BASE/views/dashboard.blade.php      $BASE/resources/views/dashboard.blade.php
cp $BASE/views/patients/index.blade.php $BASE/resources/views/patients/index.blade.php
cp $BASE/views/patients/form.blade.php  $BASE/resources/views/patients/create.blade.php
cp $BASE/views/patients/form.blade.php  $BASE/resources/views/patients/edit.blade.php
cp $BASE/views/appointments/index.blade.php $BASE/resources/views/appointments/index.blade.php

# Insere clínica demo se não existir
echo "→ Criando clínica demo..."
php artisan tinker --execute="
App\Models\Clinic::firstOrCreate(
    ['id' => 1],
    ['name' => 'Simples Dental', 'email' => 'contato@simplesdental.com.br', 'active' => true]
);
echo 'Clínica OK';
" 2>&1 | tail -3

# Limpa cache
echo "→ Limpando cache..."
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear

echo ""
echo "✅ Deploy concluído!"
echo "   Acesse: https://sagga.tec.br/simples/public"
