ايمن ميلاد نشر 12 مايو أرسل تقرير نشر 12 مايو السلام عليكم اخواني الكرام لدي كود لارافيل تالي ممكن شرحها لي ماهي حقول ادخال لتقارير الكفاية للموظف <?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', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } } هادي حقول قاعدة البيانات 2 اقتباس
0 محمد_عاطف نشر 12 مايو أرسل تقرير نشر 12 مايو وعليكم السلام ورحمة الله وبركاته. لمعرفة الحقول التي يتم إدخالها في تقارير الموظف يمكننا النظر إلى الدالة store والمسؤولة عن حفظ البيانات . ستجد أنه هناك ثلاث حقول إلزامية وهي الموجودة في الدالة validate وهم : text_grade وهو تقرير الكفاية اللفظي. grade وهي درجة تقرير الكفاية وهي رقم. year وهو سنة التقرير. بعد ذلك نأتي إلى الحقول الإضافية التي يتم حفظها في التقرير وهي ليست إلزامية حيث لم يتم وضعها والتحقق منها في الدالة validate وهم : grade11. grade12. grade13 وهذا الحقل يتم وضعه في textGrade1 في قاعدة البيانات . grade21 grade22 grade23 وهذا الحقل يتم وضعه في textGrade1 في قاعدة البيانات . grade31 grade32 grade33 وهذا الحقل يتم وضعه في textGrade1 في قاعدة البيانات . grade41 grade42 grade43 وهذا الحقل يتم وضعه في textGrade1 في قاعدة البيانات . وأيضا يوجد ملفات مرفقة اختيارية بإسم حقل files . ولكن يرجى الإنتباه إلى أنه توجد مشكلة أو هذا ما تقوم بتصميمه . حيث يتم حفظ الحقل grade13 و grade23 و grade33 و grade43 في قاعدة البيانات في عمود textGrade1 . ولهذا فإنه يتم إضافة أخر حقل موجود فلو كانت جميع الحقول موجودة سيتم وضع grade43 حتى لو لم يكن موجودا . اقتباس
0 Mustafa Suleiman نشر 12 مايو أرسل تقرير نشر 12 مايو ذلك ملف FeedbackController أي متحكم مسؤول عن إدارة تقارير الكفاية للموظفين، الحقول الرئيسية للتقرير: text_grade: تقرير الكفاية اللفظي وهو وصف نصي للتقييم. grade: الدرجة النهائية للتقرير وهي قيمة رقمية لتقييم الأداء. year: السنة التي يغطيها التقرير يجب أن تكون فريدة لكل موظف في السنة الواحدة، أي لا يجوز تكرار تقرير لنفس السنة. emp_id إجباري فقط لو استخدمت المسار createAll أو أرسلت $id=0 حيث يحدد الموظف الذي سيسجل له التقرير. وبقية الحقول إختيارية: $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'); وكل تلك الحقول هي درجة فرعية وحقل نصي لها للتعليق وإضافة ملاحظة، بمعنى text_grade هو التقرير اللفظي أو الوصف العام لتقييم الكفاية العام للموظف مثلاً ممتاز، جيد جداً، جيد، ضعيف. وgrade هي الدرجة الإجمالية الرقمية لتقرير الكفاية مثلاً 95, 80, 60. بالتالي يوجد نظام لتقييم الموظف بناءًا على عدة معايير، وكل معيار له درجة رقمية وملاحظة نصية، ويوجد أربع مجموعات من الحقول: المجموعة الأولى: grade11: درجة رقمية للمعيار الأول أو جزء منه. grade12: درجة رقمية للمعيار الأول أو جزء آخر منه. grade13 مخزنة في $feed->textGrade1 ملاحظة نصية للمعيار الأول. ونفس الأمر بالنسبة بالنسبة لباقي المجموعات. لكن يوجد مشكلة هنا: $feed->textGrade1 = request('grade13'); $feed->textGrade1 = request('grade23'); $feed->textGrade1 = request('grade43'); كل سطر يقوم بتغيير نفس الخاصية textGrade1، بالتالي لن يتم الاحتفاظ إلا بآخر قيمة grade43. ويوجد أيضًا حقل الملفات files[] وهو اختياري من أجل مرفقات ملفات pdf أو صور وخلافه. اقتباس
0 بلال زيادة نشر 13 مايو أرسل تقرير نشر 13 مايو الحقول المستخدمة في إدخال تقارير الكفاية من خلال تحليل الكود، يمكننا استخراج الحقول المطلوبة لإدخال تقرير الكفاية في النظام. هذه الحقول تُحدد في عمليتي الإنشاء (store) والتعديل (update)، وتظهر في قواعد التحقق من الصحة (validation) وفي عملية حفظ البيانات. الحقول الأساسية (الإلزامية): يتم التحقق من هذه الحقول في قواعد التحقق (validate)، وهي مطلوبة دائمًا عند إنشاء أو تعديل تقرير الكفاية: text_grade (تقرير الكفاية اللفظي): الوصف: حقل نصي يحتوي على تقييم لفظي لأداء الموظف (مثل "ممتاز"، "جيد"، إلخ). grade (درجة تقرير الكفاية): الوصف: درجة عددية تُعبر عن تقييم أداء الموظف (مثل 90، 85، إلخ). year (سنة تقرير الكفاية): الوصف: السنة التي ينطبق عليها التقرير (مثل 2023، 2024). رسائل الخطأ: يجب إدخال سنة تقرير الكفاية. يجب إدخال سنة تقرير الكفاية بالأرقام. التقرير لهذا الموظف في هذه السنة موجود بالفعل. ملخص الحقول text_grade يُستخدم لوصف الأداء بشكل عام. grade يُمثل تقييمًا كميًا للأداء. yearسنة التقرير يجب أن تكون فريدة لكل موظف. grade11, grade12, grade13 درجات/تقييم يُستخدم لتقييم معيار معين. grade21, grade22, grade23درجات/تقييم لمعيار آخر. grade31, grade32, grade33درجات/تقييم لمعيار آخر. grade41, grade42, grade43درجات/تقييم لمعيار آخر. filesملفات مرفقة يُخزن في مجلد FEEDBACK. emp_idمعرف الموظف يتم تعيينه تلقائيًا بناءً على الموظف المحدد. user_idمعرف المستخدم الذي أضاف التقرير يتم تعيينه تلقائيًا بناءً على المستخدم المسجل. اقتباس
السؤال
ايمن ميلاد
السلام عليكم اخواني الكرام لدي كود لارافيل تالي ممكن شرحها لي ماهي حقول ادخال لتقارير الكفاية للموظف
هادي حقول قاعدة البيانات
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.