اذهب إلى المحتوى

السؤال

نشر

السلام عليكم اقوم بارسال رسالة الي طالب بعد قبول مقترح 

اريد ارفاق معا رسالة صورة qrcode  به معلومات المقترح كيف يمكنني عمل ذلك 

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Notification; // هذا مهم
use App\Models\Department;
use App\Models\Project;
use App\Models\Teacher;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;
use App\Mail\ProjectAcceptedMail;
use App\Mail\ProjectRejectedMail;
use App\Models\User;
use App\Notifications\sendproject;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use Illuminate\Queue\SerializesModels;
use BaconQrCode\Writer;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
class ProjectController extends Controller 
{
    

   public function __construct()
    {
       
    }



    public function index()
    {
       $projects = Project::with(['user', 'Teacher', 'department'])
                   ->orderBy('created_at', 'desc')
                   ->paginate(4);
return view('admin.projects.index', compact('projects'));
 
    }

 
    public function create()
    {
        $user = Auth::user(); 
    $department = $user->department; 

    $teachers = Teacher::all(); 
  

    return view('admin.projects.create', compact('department', 'teachers'));
    }

   
    public function store(Request $request)
    {
        $request->validate([
    'title' => 'required|string|max:255',
    'summary' => 'required|string',
    'problem' => 'required|string',
    'proposed_solution' => 'required|string',
    'goals' => 'required|string',
    'id_dept' => 'required|exists:departments,id',
    'id_tech' => 'nullable|exists:teachers,id', 
]);
     $project = Project::create([
            'title' => $request->title,
            'summary' => $request->summary,
            'problem' => $request->problem,
            'proposed_solution' => $request->proposed_solution,
            'goals' => $request->goals,
            'id_dept' => $request->id_dept,
            'id_tech' => $request->id_tech,
             'id_user'=> Auth::id(),
        ]);

 return redirect()->route('admin.projects.create')
                     ->with('success', 'تم إضافة مقترح بنجاح وفي انتظار رد اللجنة');


    }

    
    public function show(string $id)
    {
        //
    }

   
    public function edit(string $id)
    {
        //
    }

   
    public function update(Request $request, string $id)
    {
        //
    }

    
    public function destroy(string $id)
    {
        //
    }
 public function accept($id)
{
    $project = Project::findOrFail($id);

    // إذا المشروع تم اتخاذ قرار سابقًا
    if ($project->status !== 0) {
        return redirect()->back()->with('error', 'تم اتخاذ قرار مسبقًا لهذا المشروع.');
    }

    $project->status = 1; // الموافقة
    $project->save();

   
    $project->user->notify(new sendproject($project, Auth::user()));
    Mail::to($project->user->email)->send(new ProjectAcceptedMail($project));

    return redirect()->back()->with('success', 'تم قبول المشروع.');
}




















public function reject(Request $request, $id)
{
    $project = Project::findOrFail($id);

    if ($project->status !== 0) {
        return redirect()->back()->with('error', 'تم اتخاذ قرار مسبقًا لهذا المشروع.');
    }

    $project->status = 2; // 2 = مرفوض
    $project->rejection_reason = $request->reason; // حفظ سبب الرفض
    $project->save();

     Mail::to($project->user->email)->send(new ProjectRejectedMail($project,$request->reason));

    return redirect()->back()->with('success', 'تم رفض المشروع.');
}
}

 

Recommended Posts

  • 0
نشر

لتوليد QR Code يحتوي على بيانات المشروع مثلا بصيغة JSON نستخدم كود كالتالي:

$data = [
    'title' => $project->title,
    'student' => $project->user->name,
    'department' => $project->department->name,
];

$qrCode = QrCode::format('png')->size(200)->generate(json_encode($data));

بعد ذلك نحفظ الصورة مؤقتا حتى نستطيع إرسالها في البريد:

$fileName = 'qrcode_' . $project->id . '.png';
$path = storage_path('app/public/' . $fileName);

file_put_contents($path, $qrCode);

بعد ذلك تمرير الصورة إلى ال Mail من خلال تعديل استدعاء الإيميل:

Mail::to($project->user->email)->send(
    new ProjectAcceptedMail($project, $path)
);

بعد ذلك قم بفتح ProjectAcceptedMail.php وقم بتعديله ليكون كالتالي :

public $project;
public $qrPath;

public function __construct($project, $qrPath)
{
    $this->project = $project;
    $this->qrPath = $qrPath;
}

بعد ذلك في نفس الملف نقوم بكتابة :

public function build()
{
    return $this->view('emails.project_accepted')
        ->subject('تم قبول مشروعك')
        ->with([
            'qrPath' => $this->qrPath
        ]);
}

وأخيرا عرض QR داخل Blade في ملف emails/project_accepted.blade.php استخدم :

<p>تم قبول مشروعك</p>

<p>QR Code الخاص بالمشروع:</p>

<img src="{{ $message->embed($qrPath) }}">

 

  • 0
نشر
بتاريخ On 22‏/3‏/2026 at 09:34 قال ايمن ميلاد:

يظهر خط احمر اسفل QrCode كيف يمكن تنزليه 

يمكنك تثبيت الحزمة Simple QrCode عبر Composer عن طريق تنفيذ الأمر التالي

composer require simplesoftwareio/simple-qrcode

بعد انتهاء التثبيت. اذهب إلى أعلى الملف الذي وضعت فيه الكود، وأضف السطر التالي 

use SimpleSoftwareIO\QrCode\Facades\QrCode;

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...