<?php

namespace App\Http\Controllers;

use App\DataTables\SubscriberDataTable;
use App\DataTables\SubscriberNewDataTable;
use App\Models\Helpers\General;
use App\Models\Subscriber;
use Illuminate\Http\Request;

class SubscriberController extends Controller
{
    public function __construct()
    {
        return $this->middleware('auth');
    }


    public function index(SubscriberNewDataTable $dataTable)
    {
        return $dataTable->render('subscriber.index');
    }


    public function edit_subscriber_page($id)
    {
        General::logError('SUBSCRIBER EDIT PAGE', 'Subscriber ID: ' . $id, 'edit_subscriber_page in SubscriberController');

        if (is_numeric($id)) {
            $subscriber = Subscriber::find($id) ?? null;
            if ($subscriber !== null) {
                return view('subscriber.edit', compact('subscriber'));
            } else {
                return back()->with('error', 'Subscriber cannot be found');
            }
        } else {
            return back()->with('error', 'Subscriber id should be an integer');
        }
    }

    public function edit_subscriber(Request $request, $id)
    {
        $request->validate([
            'status' => 'required|string'
        ]);

        if (is_numeric($id)) {
            $subscriber = Subscriber::find($id) ?? null;
            if ($subscriber !== null) {
                $subscriber->update([
                    'status' => $request->status
                ]);
                return back()->with('success', 'Subscriber has been updated successfully');
            } else {
                return back()->with('error', 'Failed to update subscriber information');
            }
            
        } else {
            return back()->with('error', 'Subscriber id should be a number');
        }
        
    }

    public function delete_subscriber($id)
    {
        General::logError('DELETING SUBSCRIBER', 'Subscriber ID: ' . $id, 'delete_subscriber in SubscriberController');

        if (is_numeric($id)) {
            $subscriber = Subscriber::find($id) ?? null;
            if ($subscriber !== null) {
                $subscriber->delete();
                return back()->with('success', 'Subscriber has been deleted successfully');
            } else {
                return back()->with('error', 'Subscriber cannot be found');
            }
        } else {
            return back()->with('error', 'Subscriber id should an integer');
        }
    }
}
