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

ايمن ميلاد

الأعضاء
  • المساهمات

    425
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    1

كل منشورات العضو ايمن ميلاد

  1. نعم حساب قديم وايميل Gmail عملت تسجيل الخروج ونزلت تلقرام في تلفون اخر
  2. السلام عليكم ورحمة الله وبركاته لماذا عند تنزيل تطبيق تلقرام اكتب رقم هاتف ثم بريد إلكتروني يصل عليه رقم اقوم بكتابته ثم يقول لي email not allowed
  3. السلام عليكم ورحمة الله وبركاته كل عام وانتم بخير بمناسبة عيد الأضحى المبارك اعاده الله علينا وعليكم بالخير واليمن والبركات لماذا لم يتم وضع كود داخل دالة store التي تحفظ بيانات في جدول likes ممكن توضيح
  4. اخي محمد في لارافيل بسهولة يمكن عمل اشعارات وتظهر بدون تحديث صفحة ممكن توضيح كيف يمكن عمله في php وتظهر وقتي
  5. اخي محمد سؤال هل انا في خلال تعلم لارافيل ملزم بمعرفة كل مجلد ماذا يعمل او لا
  6. اقصد أليس route facades ممكن شرح كيف يعمل
  7. ممكن مثال بسيط علي router بما انه facades ممكن شرح علي services container و services provider كل شي ماذا استفيد ممكن شرح بالعامية
  8. انا تفرجت علي كورس تطوير تطبيقات الويب بلغة php تشرحون DB و eloquent ولكن تشرحون ماهي Facades ممكن توضيح ماهي معا ذكر مثال بسيط لكي اعرف ماذا استخدم وماهو بالضبط
  9. في كورس تطبيقات الويب بلغة php في اي درس تم شرح تعامل معا التاريخ
  10. السلام عليكم لدي مشكلة في برنامج فيجوال ستديو كود لدي خيار ملفات علي يسار اقل حجم من اكود علي اليمين في مكان كتابة الكود ممكن حل مشكلة
  11. السلام عليكم اخواني الكرام لدي كود لارافيل تالي ممكن شرحها لي ماهي حقول ادخال لتقارير الكفاية للموظف <?php namespace App\Http\Controllers; use App\Models\Log; use App\Models\File; use App\Models\Person; use App\Models\Employee; use App\Models\Feedback; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; class FeedbackController extends Controller { function __construct() { $this->middleware('permission:feedback-list', ['only' => ['index','show','show1','search']]); $this->middleware('permission:feedback-create', ['only' => ['create','createAll','store']]); $this->middleware('permission:feedback-edit', ['only' => ['edit','update']]); $this->middleware('permission:feedback-delete', ['only' => ['destroy']]); } public function index() { $feed = Feedback::with('emp','user')->paginate(25); return view('admin.Feedback.index',compact('feed')); } public function create($id) { $emp=Employee::find($id); return view('admin.Feedback.create',compact('emp')); } public function createAll() { $employees = Employee::where('startout_data', NULL)->get(); return view('admin.Feedback.createAll',compact('employees')); } public function store(Request $request, $id = null) { $empId = $id ?: $request->input('emp_id'); request()->validate( [ 'text_grade' => "required|string", 'grade' => "required|numeric", 'year' => [ 'required', 'numeric', 'integer', Rule::unique('feedback')->where(function ($query) use($empId) { return $query->where('emp_id', $empId); }) // Unique validation for year with emp_id ], ], [ 'text_grade.required' => 'يجب إدخال تقرير الكفاية اللفظي', 'grade.required' => 'يجب إدخال درجة تقرير الكفاية ', 'year.required' => 'يجب إدخال سنة تقرير الكفاية ', 'year.integer' => 'يجب إدخال سنة تقرير الكفاية بالارقام ', 'year.numeric' => 'يجب إدخال سنة تقرير الكفاية بالارقام ', 'year.unique' => 'التقرير لهذا الموظف في هذه السنة موجود بالفعل', ]); DB::beginTransaction(); try { if(Feedback::where([['emp_id', $id],['year', request('year')]])->exists()){ DB::rollback(); return redirect()->back()->with('error', 'للآسـف لـقـد تـم إدخـال تقرير الكفاية الـمـوظـف لـهـذة الـسـنـة'); } if($id == 0){ $emp = Employee::find(request('emp_id')); }else{ $emp = Employee::find($id); } $feed = new Feedback; $feed->emp_id = $emp->id; $feed->user_id=Auth()->user()->id; $feed->text_grade=request('text_grade'); $feed->grade11 = request('grade11'); $feed->grade12 = request('grade12'); $feed->textGrade1 = request('grade13'); $feed->grade21 = request('grade21'); $feed->grade22 = request('grade22'); $feed->textGrade1 = request('grade23'); $feed->grade31 = request('grade31'); $feed->grade32 = request('grade32'); $feed->textGrade1 = request('grade33'); $feed->grade41 = request('grade41'); $feed->grade42 = request('grade42'); $feed->textGrade1 = request('grade43'); $feed->grade=request('grade'); $feed->year=request('year'); $feed->save(); if (request()->hasFile('files')) { $files = request()->file('files'); // Get the files $finalArray = []; foreach ($files as $file) { // Use foreach for simpler syntax $fileName = time() . '.' . $file->getClientOriginalExtension(); $file->storeAs('FEEDBACK', $fileName, 'public'); // Store the file $filePath = 'FEEDBACK/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'feedback', 'procedure_id' => $feed->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 5; $log->emp_id = $emp->id; $log->title = " اضافة تقرير الكفاية جديد (".request('year').")"; $log->log = " تمت إضافة تقرير الكفاية جديد (".request('year').")"; $log->save(); DB::commit(); return redirect()->route('feedback.index')->with('success','تــمــت إضــافــة تقرير الكفاية بــنــجــاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } public function show($id) { $emp=Employee::find($id); $feed = Feedback::where('emp_id', $id)->with('emp','user')->paginate(25); return view('admin.Feedback.show',compact('emp','feed')); } public function edit($id) { $feed = Feedback::with('emp','user')->find($id); return view('admin.Feedback.edit',compact('feed')); } public function update(Request $request, $id) { request()->validate( [ 'text_grade' => "required|string", 'grade' => "required|numeric", 'year' => [ 'required', 'numeric', 'integer' ], ], [ 'text_grade.required' => 'يجب إدخال تقرير الكفاية اللفظي', 'grade.required' => 'يجب إدخال درجة تقرير الكفاية ', 'year.required' => 'يجب إدخال سنة تقرير الكفاية ', 'year.integer' => 'يجب إدخال سنة تقرير الكفاية بالارقام ', 'year.numeric' => 'يجب إدخال سنة تقرير الكفاية بالارقام ', ]); DB::beginTransaction(); try { $feed=Feedback::find($id); if($feed->year != request('year') && Feedback::where([['emp_id', $id],['year', request('year')]])->exists()){ DB::rollback(); return redirect()->back()->with('error', 'للآسـف لـقـد تـم إدخـال تقرير الكفاية الـمـوظـف لـهـذة الـسـنـة'); } $feed->text_grade=request('text_grade'); $feed->grade=request('grade'); $feed->year=request('year'); $feed->grade11 = request('grade11'); $feed->grade12 = request('grade12'); $feed->textGrade1 = request('grade13'); $feed->grade21 = request('grade21'); $feed->grade22 = request('grade22'); $feed->textGrade1 = request('grade23'); $feed->grade31 = request('grade31'); $feed->grade32 = request('grade32'); $feed->textGrade1 = request('grade33'); $feed->grade41 = request('grade41'); $feed->grade42 = request('grade42'); $feed->textGrade1 = request('grade43'); $feed->update(); if (request()->hasFile('files')) { $files = File::where('procedure_id', $feed->id) ->where('type', 'feedback') ->get(); foreach ($files as $file) { if (Storage::disk('public')->exists($file->path)) { Storage::disk('public')->delete($file->path); } } File::where('procedure_id', $feed->id) ->where('type', 'feedback') ->delete(); $files = request()->file('files'); // Get the files $finalArray = []; foreach ($files as $file) { // Use foreach for simpler syntax $fileName = time() . '.' . $file->getClientOriginalExtension(); $file->storeAs('FEEDBACK', $fileName, 'public'); // Store the file $filePath = 'FEEDBACK/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'feedback', 'procedure_id' => $feed->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 5; $log->emp_id = $feed->emp_id; $log->title = " تعديل بيانات التقرير الكفاية (".request('year').")"; $log->log = " تم تعديل بيانات التقرير الكفاية (".request('year').")"; $log->save(); DB::commit(); return redirect()->route('feedback.index')->with('success','تــمــت تــعــديــل بـيـانــات التقرير الكفاية بــنــجــاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } public function show1(Request $request) { if (!empty($request)) { $query = $request->all(); } if (!request('name')) { return redirect()->back()->with('error', 'الرجاء تعبئة احدي الخانات علي الاقل'); } $persons = Person::where('name', 'LIKE', '%' . request('name') . '%')->pluck('id'); $emps = Employee::whereIn('person_id', $persons->toArray())->pluck('id'); $feed = Feedback::whereIn('emp_id', $emps->toArray())->with('emp')->latest()->paginate(25); if($feed->count() == 0){ return redirect()->back()->with('error', 'الـمـوظـف الــذي تبــحث عنــها غيــر موجــود'); } return view('admin.feedback.index',compact('feed','query')); } public function destroy($id) { DB::beginTransaction(); try { $files = File::where('procedure_id', $id) ->where('type', 'feedback') ->update(['delete_at', now()]); $abs = Feedback::find($id); $abs->delete_at = now(); $abs->update(); $log = new Log; $log->user_id = auth()->user()->id; $log->type = 11; $log->emp_id = $abs->emp_id; $log->title = " حذف بيانات التقرير الكفاية (".$abs->year.")"; $log->log = " تم حذف بيانات التقرير الكفاية (".$abs->year.")"; $log->save(); DB::commit(); return redirect()->back()->with('success','تـم حـذفـ التقرير الكفاية الـمـوظـف بـنـجـاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } } هادي حقول قاعدة البيانات
  12. في حالة استخدمت مكتبة axios بدلا من رابط موجود في صورة وضعت رابط صفحة localhost/users هل سيتم عرض بيانات مستخدمين
  13. اخي محمد عاطف من خلال خبرتك كيف أقيم نفسي في مجال البرمجة مثلا هل ضروري من جافا سكربت قبل php مثل مشروع شؤون الموظفين في قائمة select ضروري من Javascript لإظهار الدرجة الجديدة للموظف كم تمنيت أن أشاهد لكم كورس علي أكاديمية
  14. فهمت منك اذا هل في تطبيقات طقس يوميا في اشخاص يدخلون درجات حرارة ونحن عندما نطلب رابط تظهر لنا ما دخلو وكدلك في مواقع كورة يوميا يدخلون مواعيد مباريات ونحن نطلب رابط تظهر لنا
  15. ايمن ميلاد

    ماهو api

    السلام عليكم ورحمة الله وبركاته شاهدت عديد من مواقع تشرح api فهمت منهم سؤال الذي أريد إجابة له هل هو طريقة للتواصل معا قاعدة بيانات بمعني مجرد نجهز روابط وهو يتواصل معا قاعدة بيانات مثلا انا ادخل بيانات او صفحة عرض يجلب عن طريق api ('Route.get('/users تجلب كل مستخدمين من قاعدة بيانات وطريقة رجوع بي بيانات عن طريق json هيا key او value ممكن توضيح اخواني كيف انشء api خاص بي
  16. يعني حقلين اثنين enbled في حالة ضغط ترقية استنائية يتفعل حقل درجة جديدة لكي يكتب به درجة ماذا ينقصه كود الان لكي يكون مثل السابق <?php include('header.php'); // Fetch existing course data from the database ?> <!--------------------------------------------------------------------------------> <!------------------------------------header--------------------------------------> <!--------------------------------------------------------------------------------> <head> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script> <!-- مكتبة SweetAlert2 --> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <style> .rak { width: 400px; height: 300px; font-size: 14px !important; } </style> </head> <div class="col-md-9 pan1"> <ol class="breadcrumb" style="background-color: #fff;padding-top:8px;padding-bottom:8px;color:#000;font-size:16px;"> <li><a href="student.php">الترقيات</a></li> <li class="active">اضافة ترقية جديدة</li> </ol> </div> </div> <div class="row"> <div class="col-md-9 pan1"> <div class="panel" style="color:#000;"> <div class="panel-body" style="font-size:14px; padding-left:40px;padding-right:40px;padding-bottom:25px;padding-top:25px;"> <form method="POST" enctype="multipart/form-data"> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label>اختار الموظف</label> <select name="emp_id" id="emp_id" class="form-control" onchange="updateDegree()"> <?php $sql = "SELECT e.person_id, p.name,e.degree FROM employees e JOIN people p ON e.person_id = p.id;"; $result = $con->query($sql); while ($row = $result->fetch_assoc()) { echo "<option value='{$row['person_id']}' data-degree='{$row['degree']}'>{$row['name']}</option>"; } ?> </select> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> رقم القرار </label> <input name="num" type="text" class="form-control" placeholder="ادخل رقم القرار "> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> الدرجة السابقة </label> <input id='prev_degree' name='prev_degree' type='text' class='form-control' disabled > </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> الدرجة الجديدة </label> <input name="new_degree" id="new_degree" type="text" class="form-control" disabled> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> ترقية استنائية </label> <input name="excep" type="checkbox" class="form-control" onclick="toggleInputs(this)"> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> تاريخ الاستحقاق </label> <input name="date" type="date" class="form-control" > </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> تاريخ اخر ترقية </label> <input name="last_date" type="date" class="form-control" > </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <button name="submit" type="submit" class="btn btn-primary"> إضافة <span class="ion-android-add"></span></button> <button type="reset" class="btn btn-danger"> إلغاء <span class="ion-android-delete"></span></button> </div> </div> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $num = $_POST['num']; $prev_degree = $_POST['prev_degree']; $new_degree = $_POST['new_degree']; $date = $_POST['date']; $last_date = $_POST['last_date']; $excep = isset($_POST['excep']) ? 1 : 0; $created_at= date('Y-m-d H:i:s'); if ($new_degree != $prev_degree + 1) { echo "<script> Swal.fire({ title: 'تنبيه', text: 'يجب أن تكون الدرجة الجديدة درجة قديمة +1!', icon: 'warning', customClass: 'rak', }); </script>"; exit; } $check_sql = "SELECT COUNT(*) FROM promotions WHERE emp_id = ? AND new_degree = ?"; $stmt = $con->prepare($check_sql); $stmt->bind_param("is", $emp_id, $new_degree); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "<script> Swal.fire({ title: 'تنبيه', text: 'هذا الموظف لديه درجة جديدة مسجلة بالفعل!', icon: 'warning', customClass: 'rak', }); </script>"; exit; } $sql = "INSERT INTO promotions (emp_id,num,prev_degree,new_degree,date,last_date,excep, created_at) VALUES (?,?,?,?,?,?,?, ?)"; $stmt = $con->prepare($sql); $stmt->bind_param("iiiissss", $emp_id,$num,$prev_degree,$new_degree,$date,$last_date,$excep, $created_at); if ($stmt->execute()) { $update_sql = "UPDATE employees SET degree = ? WHERE person_id = ?"; $update_stmt = $con->prepare($update_sql); $update_stmt->bind_param("si", $new_degree, $emp_id); $update_stmt->execute(); $update_stmt->close(); echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات الترقية للموظف بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=promotions.php" />'; } else { echo "خطأ في إدخال بيانات الترقية: " . $stmt->error; } } ?> </div> </div> </div> </div> <!--------------------------------------------------------------------------------> <!------------------------------------Footer--------------------------------------> <!--------------------------------------------------------------------------------> <script> function updateDegree() { var select = document.getElementById("emp_id"); var selectedOption = select.options[select.selectedIndex]; var degree = selectedOption.getAttribute('data-degree'); var prevDegreeInput = document.getElementById('prev_degree'); prevDegreeInput.value = degree ? degree : ''; var newDegreeValue = parseInt(prevDegreeInput.value) + 1; document.getElementsByName('new_degree')[0].value = newDegreeValue; } function toggleInputs(checkbox) { const new_degreeInput = document.getElementById('new_degree'); new_degreeInput.disabled = !checkbox.checked; } </script> <?php include('footer.php'); ?>
  17. برمجة جزء من كود ممكن تكمل لي باقي جزئية ترقية استنائية if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $num = $_POST['num']; $prev_degree = $_POST['prev_degree']; $new_degree = $_POST['new_degree']; $date = $_POST['date']; $last_date = $_POST['last_date']; $excep = $_POST['excep']; $created_at= date('Y-m-d H:i:s'); $check_sql = "SELECT COUNT(*) FROM promotions WHERE emp_id = ? AND new_degree = ?"; $stmt = $con->prepare($check_sql); $stmt->bind_param("is", $emp_id, $new_degree); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "<script> Swal.fire({ title: 'تنبيه', text: 'هذا الموظف لديه درجة جديدة مسجلة بالفعل!', icon: 'warning', customClass: 'rak', }); </script>"; exit; } $sql = "INSERT INTO promotions (emp_id,num,prev_degree,new_degree,date,last_date, created_at) VALUES (?,?,?,?,?,?, ?)"; $stmt = $con->prepare($sql); $stmt->bind_param("iiiisss", $emp_id,$num,$prev_degree,$new_degree,$date,$last_date, $created_at); if ($stmt->execute()) { $update_sql = "UPDATE employees SET degree = ? WHERE person_id = ?"; $update_stmt = $con->prepare($update_sql); $update_stmt->bind_param("si", $new_degree, $emp_id); $update_stmt->execute(); $update_stmt->close(); echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات الترقية للموظف بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=promotions.php" />'; } else { echo "خطأ في إدخال بيانات الترقية: " . $stmt->error; } }
  18. ممكن برمجة كود لم اعرف كيف عند اختيار موظف يظهر درجته <?php include('header.php'); // Fetch existing course data from the database ?> <!--------------------------------------------------------------------------------> <!------------------------------------header--------------------------------------> <!--------------------------------------------------------------------------------> <head> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script> <!-- مكتبة SweetAlert2 --> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <style> .rak { width: 400px; height: 300px; font-size: 14px !important; } </style> </head> <div class="col-md-9 pan1"> <ol class="breadcrumb" style="background-color: #fff;padding-top:8px;padding-bottom:8px;color:#000;font-size:16px;"> <li><a href="student.php">الترقيات</a></li> <li class="active">اضافة ترقية جديدة</li> </ol> </div> </div> <div class="row"> <div class="col-md-9 pan1"> <div class="panel" style="color:#000;"> <div class="panel-body" style="font-size:14px; padding-left:40px;padding-right:40px;padding-bottom:25px;padding-top:25px;"> <form method="POST" enctype="multipart/form-data"> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label>اختار الموظف</label> <select name="emp_id" id="" class="form-control"> <?php $sql = "SELECT e.person_id, p.name FROM employees e JOIN people p ON e.person_id = p.id;"; $result = $con->query($sql); while ($row = $result->fetch_assoc()) { echo "<option value='{$row['person_id']}'>{$row['name']}</option>"; } ?> </select> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> رقم القرار </label> <input name="num" type="text" class="form-control" placeholder="ادخل رقم القرار "> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> الدرجة السابقة </label> <input id='prev_degree' name='prev_degree' type='text' class='form-control' disabled> </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> الدرجة الجديدة </label> <input name="new_degree" type="text" class="form-control" disabled> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> ترقية استنائية </label> <input name="excep" type="checkbox" class="form-control" > </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> تاريخ الاستحقاق </label> <input name="date" type="date" class="form-control" > </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> تاريخ اخر ترقية </label> <input name="last_date" type="date" class="form-control" > </div> </div> </div> <div class="row"> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <button name="submit" type="submit" class="btn btn-primary"> إضافة <span class="ion-android-add"></span></button> <button type="reset" class="btn btn-danger"> إلغاء <span class="ion-android-delete"></span></button> </div> </div> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $num = $_POST['num']; $prev_degree = $_POST['prev_degree']; $new_degree = $_POST['new_degree']; $date = $_POST['date']; $last_date = $_POST['last_date']; $excep = $_POST['excep']; $created_at= date('Y-m-d H:i:s'); if(empty($name)) { echo "<div class='alert alert-danger '> الرجاء ادخال كافة البيانات </div>"; exit() ; } $sql = "INSERT INTO promotions (name, created_at) VALUES (?, ?)"; $stmt = $con->prepare($sql); $stmt->bind_param("ss", $name, $created_at); if ($stmt->execute()) { echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات المصرف بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=banks.php" />'; } else { echo "خطأ في إدخال بيانات المصرف: " . $stmt->error; } } ?> </div> </div> </div> </div> <!--------------------------------------------------------------------------------> <!------------------------------------Footer--------------------------------------> <!--------------------------------------------------------------------------------> <?php include('footer.php'); ?>
  19. تم تصميم واجهات
  20. بناء علي دالة حفظ اخي مصطفي ماهيا كل شروط قبل حفظ وماهي شروط ترقية استنائية ممكن توضح لي
  21. الان كيف احول كود الذي في دالة store الي php pure
  22. في صفحة العرض index ماهي حقول التي اعرضها
  23. قبل تصميم صفحة إدخال بيانات ماذا اعرض في صفحة عرض بناء علي دالة index
  24. السلام عليكم بناء علي كود تالي كيف يتم حساب ترقية موظف public function store(Request $request, $id = null) { $empId = $id ?: $request->input('emp_id'); request()->validate( [ 'prev_degree' => "required|numeric", 'date' => "required", 'new_degree' => [ 'required', 'numeric', 'integer', Rule::unique('promotions')->where(function ($query) use($empId) { return $query->where('emp_id', $empId); }) // Unique validation for year with emp_id ], ], [ 'prev_degree.required' => 'يجب إدخال الدرجة السابقة للموظف', 'prev_degree.numeric' => 'يجب إدخال ان تكون الدرجة السابقة للموظف رقم', 'date.required' => 'يجب إدخال تاريخ الاستحقاق ', 'new_degree.required' => 'يجب إدخال الدرجة الجديدة للموظف ', 'new_degree.integer' => 'يجب إدخال ان تكون الدرجة الجديدة رقم ', 'new_degree.numeric' => 'يجب إدخال ان تكون الدرجة الجديدة رقم ', 'new_degree.unique' => 'الترقية لهذا الموظف موجودة مسبقآ', ]); DB::beginTransaction(); try { if(Promotion::where([['emp_id', $empId],['new_degree', request('new_degree')]])->exists()){ DB::rollback(); return redirect()->back()->with('error', 'للآسـف لـقـد تـم إدخـال تـرقـيـة الـمـوظـف لـهـذة الـدرجـة'); } if((request('new_degree') != request('prev_degree')+1 && !request('excep')) || Employee::where([['id', $empId],['degree', request('new_degree')]])->exists()){ DB::rollback(); return redirect()->back()->with('error', 'للآسـف يجب ان تكون الدرجة الجديدة اعلي من الدرجة السابقة بدرجة واحدة'); } if($id == 0){ $emp = Employee::find(request('emp_id')); }else{ $emp = Employee::find($id); } $promotion = new Promotion; if(request('excep')){ $promotion->excep = true; } $promotion->num = request('num'); $promotion->emp_id = $emp->id; $promotion->created_id=Auth()->user()->id; $promotion->prev_degree=request('prev_degree'); $promotion->new_degree = request('new_degree'); $date = request('date'); $promotion->date = $date; $last_date = request('last_date'); $promotion->last_date = $last_date; $promotion->save(); $emp->degree = $promotion->new_degree; $emp->update(); if (request()->hasFile('files')) { $files = request()->file('files'); // Get the files $finalArray = []; foreach ($files as $file) { // Use foreach for simpler syntax $fileName = time() . '.' . $file->getClientOriginalExtension(); $file->storeAs('PROMOTION', $fileName, 'public'); // Store the file $filePath = 'PROMOTION/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'promotion', 'procedure_id' => $promotion->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 5; $log->emp_id = $emp->id; $log->title = " اضافة ترقية جديدة بالدرجة (".request('new_degree').")"; $log->log = " تمت إضافة ترقية جديدة بالدرجة (".request('new_degree').")"; $log->save(); DB::commit(); return redirect()->route('promotion.index')->with('success','تــمــت إضــافــة الـتـرقـيـة بــنــجــاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } ما هما حقول ادخال بناء علي صفحة create.blade.php هل هما رقم القرار درجة السابقة الدرجة الجديدة ترقية استنائية تاريخ اخر ترقية @extends('admin.layout.master') @section('title') <title>تقـيـيـم جـديـد</title> @endsection @section('content') <div class="pc-container"> <div class="pc-content"> <!-- [ breadcrumb ] start --> <div class="page-header"> <div class="page-block"> <div class="row align-items-center"> <div class="col-md-12"> <ul class="breadcrumb"> <li class="breadcrumb-item"><a href="{{ route('home') }}">لوحة التحكم</a></li> <li class="breadcrumb-item">اضـافـة الترقية للـمـوظـف <a href="{{ route('EmployeeDetails', [$emp->id]) }}"><span style="color: blue;">{{$emp->person->name}}</span></a> </li> </ul> </div> <div class="col-md-6"> <div class="page-header-title"> <h2 class="mb-0">اضـافـة الترقية للـمـوظـف <a href="{{ route('EmployeeDetails', [$emp->id]) }}"><span style="color: blue;">{{$emp->person->name}}</span></a> </h2> </div> </div> </div> </div> </div> <!-- [ breadcrumb ] end --> @include('admin.layout.validation-messages') <!-- [ Main Content ] start --> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-body"> <h4 class="card-title">بـيـانـات الـمـوظـف</h4> <!-- <p class="card-title-desc">Fill all information below</p> --> <div class="row"> <div class="col-sm-4"> <div class="mb-3"> <label for="fullname">اســم الــموظــف</label> @if($emp->person->image) <h4> <img src="{{ asset(Storage::url($emp->person->image)) }}" class="me-1 rounded-circle avatar-sm" alt="user-pic"> {{$emp->person->name}}</h4> @else <h4> <img src="{{asset('assets/images/user.png')}}" class="me-1 rounded-circle avatar-sm" alt="user-pic"> {{ $emp->person->name }}</h4> @endif </div> </div> @if ($emp->person->N_id) <div class="col-sm-4"> <div class="mb-3"> <label for="email">الرقــم الوطــني</label> <h4>{{$emp->person->N_id}}</h4> </div> </div> @else <div class="col-sm-4"> <div class="mb-3"> <label for="email">رقم الإقامة او الجواز لغير الليبين</label> <h4>{{$emp->person->non_citizen_ref_no}}</h4> </div> </div> @endif <div class="col-sm-4"> <div class="mb-3"> <label for="email">المؤهــل في القرار</label> <h4>{{$emp->qualification}}</h4> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">التــخــصص</label> @if($emp->specialty) <h4>{{$emp->specialty->name}}</h4> @else <h4> - </h4> @endif </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">تاريــخ الاستــحقاق</label> <h4>{{$emp->due}}</h4> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">الدرجــة الحــالية</label> <h4>{{$emp->degree}}</h4> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">تاريــخ المبــاشرة</label> <h4 id ="earnDate">{{$emp->start_date}}</h4> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">رقــم القــرار</label> <h4>{{$emp->res_num}}</h4> </div> </div> <div class="col-sm-4 mb-3"> <label class="control-label">الإدارة</label> @if($emp->subSection) <h4>{{$emp->section->name}} - {{ $emp->subSection->name }}</h4> @else <h4>{{$emp->section->name}}</h4> @endif </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">الـجـنـس </label> <h4>{{$emp->person->gender}}</h4> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">الحالة الاجتماعية </label> <h4>{{$emp->person->marital_status}}</h4> </div> </div> </div> </div> </div> <div class="card"> <div class="card-body"> <h4 class="card-title">تـقـديـم بـيـانـات الترقية</h4> <form action="{{route('storePromotion',[$emp->id])}}" method="post" enctype="multipart/form-data" id="form"> @csrf <div class="row mt-3"> <div class="col-sm-4"> <div class="mb-3"> <label for="email">رقـم الـقـرار</label> <input id="earnNum" name="num" type="text" class="form-control" placeholder="رقـم الـقـرار" required oninvalid="this.setCustomValidity('الرجاء ادخال رقـم الـقـرار')" oninput="this.setCustomValidity('')"> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">الـدرجـة الـسـابـقـة</label> <input id="earnDate" name="prev_degree" value="{{ $emp->degree }}" type="number" class="form-control" placeholder="الـدرجـة الـسـابـقـة" required oninvalid="this.setCustomValidity('الرجاء ادخال الدرجة السابقة')" oninput="this.setCustomValidity('')"> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">الـدرجـة الـجـديـدة</label> <input id="earnDate" name="new_degree" type="number" value="{{ $emp->degree+1 }}" class="form-control" placeholder="الـدرجـة الـجـديـدة" required oninvalid="this.setCustomValidity('الرجاء ادخال الدرجة الجديدة')" oninput="this.setCustomValidity('')"> </div> </div> <div class="col-md-12"> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="excep" id="invalidCheck"> <label class="form-check-label" for="invalidCheck">تـرقـيـة اسـتـثـنـائـيـة</label> </div> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">تـاريـخ الاسـتـحـقـاق</label> <input id="earnDate" name="date" type="date" class="form-control" oninput="dateValidation(this)" placeholder="YYYY-MM-DD" required oninvalid="this.setCustomValidity('الرجاء ادخال تاريخ الاستحقاق')" oninput="this.setCustomValidity('')"> </div> </div> <div class="col-sm-4"> <div class="mb-3"> <label for="email">تـاريـخ اخـر تـرقـيـة</label> @if ($emp->promotions->last()) <input id="earnDate" name="last_date" value="{{ $emp->promotions->last()->last_date }}" type="date" class="form-control" oninput="dateValidation(this)" placeholder="YYYY-MM-DD"> @else <input id="earnDate" name="last_date" type="date" class="form-control" oninput="dateValidation(this)" placeholder="YYYY-MM-DD"> @endif </div> </div> <div class="col-sm-4"> <div class="mb-3 "> <label for="email">وثـيـقـة (إختياري) </label> <input name="files[]" type="file" class="form-control" multiple> </div> </div> </div> <br> <div class="d-flex flex-wrap gap-2"> <button type="submit" class="btn btn-success waves-effect waves-light">إضــافـة الـتـرقـيـة</button> </div> </form> </div> </div> </div> </div> <!-- end row --> </div> <!-- container-fluid --> </div> <!-- End Page-content --> @endSection @section('script') <script> function dateValidation(inputElement) { var dateRegex = /^\d{1,2}-\d{1,2}-\d{4}$/; // Regex for date format DD-MM-YYYY var dateRegex2 = /^\d{1,2}\/\d{1,2}\/\d{4}$/; // Regex for date format DD/MM/YYYY var dateRegex3 = /^\d{4}-\d{1,2}-\d{1,2}$/; // Regex for date format DD-MM-YYYY var dateRegex4 = /^\d{4}\/\d{1,2}\/\d{1,2}$/; // Regex for date format DD/MM/YYYY // Check if the input matches either of the date formats if (dateRegex.test(inputElement.value) || dateRegex2.test(inputElement.value) || dateRegex3.test(inputElement.value) || dateRegex4.test(inputElement.value)) { // If the date does not match the format, show a custom validity message inputElement.setCustomValidity(''); } else { inputElement.setCustomValidity('الرجاء إدخال التاريخ بالتنسيق DD-MM-YYYY أو DD/MM/YYYY'); // If the date matches one of the formats, clear any custom validity message } } </script> @endSection علما بأن جدول موظف يحتوي علي حقل درجة الوظيفية degree وتاريخ حصول علي درجة date_degree وجدول promotions ترقيات يحتوي علي رقم موظف مفتاح اجنبي ,رقم القرار, الدرجة السابقة, الدرجة الجديدة ,تاريخ الاستحقاق , تاريخ اخر ترقية, حالة القبول ,هل ترقية استنائية هدا كود صفحة index ماذا اعرض فيها @extends('admin.layout.master') @section('title') <title> الـتـرقـيـة الـمـوظــفــيــن </title> @endsection @section('css') <style> .onlyTable { counter-reset: rowNumber; } .onlyTable tr { counter-increment: rowNumber; } .onlyTable tr td:first-child::before { content: counter(rowNumber); min-width: 1em; margin-right: 0.5em; } </style> @endsection @section('content') <div class="pc-container"> <div class="pc-content"> <!-- [ breadcrumb ] start --> <div class="page-header"> <div class="page-block"> <div class="row align-items-center"> <div class="col-md-12"> <ul class="breadcrumb"> <li class="breadcrumb-item"><a href="{{ route('home') }}">لوحة التحكم</a></li> <li class="breadcrumb-item"><a href="#">الـتـرقـيـة الـمـوظــفــيــن </a></li> </ul> </div> <div class="col-md-12"> <div class="page-header-title"> <h2 class="mb-0">الـتـرقـيـة الـمـوظــفــيــن </h2> </div> </div> </div> </div> </div> <!-- [ breadcrumb ] end --> @include('admin.layout.validation-messages') <!-- [ Main Content ] start --> @if ($promotions->count() > 0) <div class="row"> <div class="col-lg-12"> <div class="card"> <div class="card-body"> <div class="card-body" id="print2"> <div class="table-responsive"> <table class="table align-middle table-nowrap table-hover" id="tab1"> <!-- <div class="row"> <div class="col-12"> <div class="page-title-box d-sm-flex align-items-center justify-content-between"> </div> </div> </div> --> <thead class="table-light"> <tr> <th class="text-center" scope="col" style="width: 70px;">#</th> <th class="text-center" scope="col">اســم الــموظــف</th> <th class="text-center" scope="col">رقـم الـقـرار</th> <th class="text-center" scope="col"> الـدرجـة الـسـابـقـة</th> <th class="text-center" scope="col">الـدرجـة الـجـديـدة</th> <th class="text-center" scope="col">تـاريـخ الاسـتـحـقـاق</th> <th scope="col" class="text-center">تـاريـخ آخـر تـرقـيـة</th> <th scope="col" class="text-center">الـوثـيـقـة</th> <th class="text-center" scope="col">مـنـشـئ الـتـقيـيم</th> <th scope="col"class="lastR text-center" id="ch">الاجراءات </th> </tr> </thead> <tbody class="onlyTable"> @foreach ($promotions as $index => $fe) <tr> <td class="text-center">{{ $index + 1 }} </td> <td class="text-center"> <!-- <a href="#"> --> <h5 class="font-size-14 mb-1">{{ $fe->emp->person->name }}</h5> </a> </td> <td class="text-center">{{ $fe->num }} <br> @if ($fe->excep) ترقية استثنائية @endif </td> <td class="text-center">{{ $fe->prev_degree }}</td> <td class="text-center">{{ $fe->new_degree }}</td> <td class="text-center">{{ $fe->date }}</td> <td class="text-center">{{ $fe->last_date }}</td> @if ($fe->files->count() > 0) <td class="text-center"> <a href=".showFile" data-bs-toggle="modal" onclick="showItem({{ $fe->files }})" class="text-success"><i class="bx bx-file" style="font-size:25px;margin-top:5px"></i></a> </td class="text-center"> @else <td class="text-center"> - </td> @endif <td class="text-center">{{ $fe->user->name }}</td> <td class="text-center col-lg-2"> <ul class="list-inline font-size-20 contact-links mb-0 text-center"> <li class="list-inline-item px-2 " id="edit"> <a href="{{ route('promotion.edit', [$fe->id]) }}" class="text-success mr-3"><i class="mdi mdi-pencil font-size-18 "></i></a> </li> <li class="list-inline-item px-2" id="delete"> <form method="POST" action="{{ route('promotion.destroy', [$fe->id]) }}"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="text-danger" style="border: none; background: none;"><i class="mdi mdi-delete font-size-18"></i></button> </form> </li> </ul> </td> </tr> @endforeach </tbody> </table> </div> <ul class="pagination pagination-rounded justify-content-center mb-2"> @if (isset($query)) {{ $promotions->appends($query)->links('pagination::bootstrap-4') }} @else {{ $promotions->links('pagination::bootstrap-4') }} @endif </ul> </ul> </div> </div> </div> </div> @else <div class="row"> <div class="col-lg-12"> <h4 class="mb-sm-0 text-center font-size-18">لا يــوجــد تـرقـيـات</h4> </div> </div> @endif </div> <!-- container-fluid --> </div> <!-- End Page-content --> <div class="row" dir="rtl"> <div class="col-12"> <div class="modal fade showPromotion" tabindex="-1" role="dialog" aria-labelledby="orderdetailsModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 style="color: black;" class="modal-title" id="orderdetailsModalLabel">الـتـقـيـيـمـات</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="row" dir="rtl" id="print22"> <div class="col-12"> <h5 style="color: black;" class="mb-2" dir="rtl">إسم الزبون : <span style="color: blue;" dir="rtl" id="orderName"></span></h5> </div> </div> <div dir="rtl"> <div class="table-responsive" dir="rtl"> <table class="table align-middle table-nowrap table-check"> <thead class="table-light"> <tr style="color: black;"> <th class="text-center">كفائة الاداء والصفات الشخصية</th> <th class="text-center">درجة النهاية العظمي </th> <th class="text-center">درجة كفاية الموظف</th> <th class="text-center">درجة الكفاية المعدلة</th> <th class="text-center">مبررات تعديل درجة كفاية الموظف</th> </tr> </thead> <tbody id="bodyrow23"> </tbody> </table> </div> <div class="row mt-2"> <div class="col-12 text-start"> <button type="button" class="btn btn-light me-1" data-bs-dismiss="modal">إغلاق</button> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="row" dir="rtl"> <div class="col-12"> <div class="modal fade showFile" tabindex="-1" role="dialog" aria-labelledby="orderdetailsModalLabel" aria-hidden="true"> {{-- <div class="modal-dialog modal-dialog-centered modal-lg" role="document"> --}} <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="orderdetailsModalLabel" dir="rtl"> صورة من الوثيقة <span id="arrName"></span> </h5> <button type="button" class="btn-close" data-bs-dismiss="modal" dir="rtl" aria-label="Close"></button> </div> <div class="modal-body" id="print"> <div dir="rtl"> <div class="table-responsive" dir="rtl"> <table class="table table-hover table-center"> <thead class="table-light"> <tr> <th class="text-center">#</th> <th class="text-center"> عرض</th> <th class="text-center">تنزيل </th> </tr> </thead> <tbody> </tbody> <tbody id="bodyrow"> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> @endsection @section('script') <script> function printDiv() { $('#print2 tr').find('th:last-child, td:last-child').remove(); // $('#print2 tr').find('th:last-child, td:last-child').remove(); var printContent = document.getElementById("print2").innerHTML; var originalContent = document.body.innerHTML; document.body.innerHTML = printContent; window.print(); document.body.innerHTML = originalContent; window.location.reload(); } function showItem(images) { var table = document.getElementById("bodyrow"); console.log(images); table.innerHTML = ""; for (var i = 0; i < images.length; i++) { if (top) { var row = table.insertRow(-1); } else { var row = table.insertRow(); } // (B3) INSERT CELLS var cell = row.insertCell(); cell.innerHTML = " ملف " + (i + 1); cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = "<a href='/storage/" + images[i]['path'] + "' target='_blank' class='text-success'><i class='bx bx-show' style='font-size:25px;margin-top:5px'></i></a>"; cell.style.textAlign = "center"; cell = row.insertCell(); var idd = images[i]['id']; cell.innerHTML = "<a href='/downloadFile/" + idd + "' class='text-success'><i class='bx bx-download' style='font-size:25px;margin-top:5px'></i></a>"; var idd = images[i]['id']; cell.style.color = "green"; cell.style.textAlign = "center"; } } $(document).on("click", "#showPromotion", function() { var result = $(this).data('result'); var name = $(this).data('name'); console.log(name); console.log(result); document.getElementById("orderName").innerHTML = name; var table = document.getElementById("bodyrow23"); table.innerHTML = ""; if (top) { var row = table.insertRow(-1); } else { var row = table.insertRow(); } cell = row.insertCell(); cell.innerHTML = "أداء الواجب"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = "45"; cell.style.textAlign = "center"; cell.style.fontWeight = "bold"; cell = row.insertCell(); cell.innerHTML = result["grade11"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade12"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["textGrade1"]; cell.style.textAlign = "center"; if (top) { var row = table.insertRow(-1); } else { var row = table.insertRow(); } cell = row.insertCell(); cell.innerHTML = "المواظبة علي العمل"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = "15"; cell.style.fontWeight = "bold"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade21"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade22"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["textGrade2"]; cell.style.textAlign = "center"; if (top) { var row = table.insertRow(-1); } else { var row = table.insertRow(); } cell = row.insertCell(); cell.innerHTML = "القدرات والأستعداد الذاتي"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = "20"; cell.style.fontWeight = "bold"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade31"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade32"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["textGrade3"]; cell.style.textAlign = "center"; if (top) { var row = table.insertRow(-1); } else { var row = table.insertRow(); } cell = row.insertCell(); cell.innerHTML = "العلاقات الأنسانية"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = "20"; cell.style.fontWeight = "bold"; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade41"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["grade42"]; cell.style.textAlign = "center"; cell = row.insertCell(); cell.innerHTML = result["textGrade4"]; cell.style.textAlign = "center"; }); </script> @endsection
×
×
  • أضف...