<?php

namespace App\Http\Controllers\Radiology;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Admin;
use App\Models\HcpEducation;
use App\Models\HcpLicense;
use App\Models\Hcp;    
use App\Models\Device;
use App\Models\Radiologylogin; 
use App\Models\NearLab;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
use Yajra\DataTables\DataTables;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Crypt;
 
class RadiologyController extends Controller
{ 

   public function login(){
    return view('radiology.login');
   } 
   
   
     public function register(){
    return view('radiology.register');
   } 
        public function dashboard(){
    return view('radiology.index');
   } 
   
   
public function create(Request $request)
{ 
    try {
        // Validate input data
        $validated = $request->validate([
            'first_name' => 'required|string|max:255',
            'last_name' => 'nullable|string|max:255',
            'date_of_birth' => 'required|date',
            'sex' => 'required|in:Male,Female,Other',
            'address' => 'required|string|max:500',
            'patient_phone_num_country_code' => 'required|string|max:5',
            'patient_phone_number' => 'required|string|max:15|unique:radiologylogin,phone',
            'aadhar_card_num' => 'required|string|min:4|max:4',
            'email' => 'required|email|unique:radiologylogin,email',
            'password' => 'required|min:6',
            'photo' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg',
            'cin' => 'required|string|max:21|unique:radiologylogin,cin', // CIN validation
            'gstin' => 'required|string|max:15|unique:radiologylogin,gstin', // GSTIN validation
            'pan_card' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg', // PAN Card upload validation
        ]);

        // Handle profile photo upload
        if ($request->hasFile('photo')) {
            $file = $request->file('photo');
            $fileName = time() . '_' . $file->getClientOriginalName(); 
            $file->storeAs('uploads/radiology', $fileName, 'public');
            $validated['photo'] = $fileName;
        }

        // Handle PAN Card upload
        if ($request->hasFile('pan_card')) {
            $panFile = $request->file('pan_card');
            $panFileName = time() . '_PAN_' . $panFile->getClientOriginalName();
            $panFile->storeAs('uploads/radiology', $panFileName, 'public');
            $validated['pan_card'] = $panFileName;
        }

        // Encrypt password before storing
        $validated['password'] = bcrypt($validated['password']);

        // Concatenate country code and phone number
        $validated['phone'] = $validated['patient_phone_num_country_code'] . $validated['patient_phone_number'];
        unset($validated['patient_phone_num_country_code'], $validated['patient_phone_number']);

        // Create the radiology record in the database
        $radiology = Radiologylogin::create($validated);  

        Log::info('Radiology created successfully!', ['data' => $radiology]);

        return response()->json([
            'message' => 'Radiology created successfully!',  
            'data' => $radiology
        ], 201);

    } catch (\Throwable $e) {
        Log::error('Error while creating Radiology.', [
            'error' => $e->getMessage(),
            'request_data' => $request->all()
        ]);

        return response()->json([
            'message' => 'Something went wrong while creating the Radiology.',
            'error' => $e->getMessage()
        ], 500);
    }
}

   
public function signin(Request $request)
{
    try {
        // Validate input
        $credentials = $request->validate([
            'email' => 'required|email',
            'password' => 'required|min:6',
        ]);

        // Attempt login with 'lab' guard
        if (Auth::guard('radiology')->attempt($credentials)) {
            $user = Auth::guard('radiology')->user();

            return response()->json([
                'message' => 'Login successful!',
                'user' => $user, // Return user data (without token)
            ], 200);
        }

        return response()->json(['error' => 'Invalid email or password.'], 401);

    } catch (\Throwable $e) {
        return response()->json([
            'message' => 'Something went wrong during login.',
            'error' => $e->getMessage()
        ], 500);
    }
}   
    
  public function logout(Request $request)

    { 
        Auth::guard('radiology')->logout(); 
        session()->invalidate();
        session()->regenerateToken();
        return redirect('/radiology/login');    

    }
 
   

}