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

السؤال

نشر

السلام عليكم بناء علي كود تالي كيف يتم حساب ترقية موظف 

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

 

Recommended Posts

  • 0
نشر

في المتحكم في دالة store، يتم التحقق من صحة البيانات وهي:

  •  prev_degree : رقم الدرجة الحالية للموظف.
  • date : تاريخ الاستحقاق
  • new_degree : الدرجة الجديدة.

وتفشل الترقية فى الحالات الآتية قبل الحفظ، أولاً يوجد سجل Promotion بنفس emp_id و new_degree فيعاد توجيه المستخدم برسالة خطأ،  أو جدول employees يحتوى أصلاً على نفس الدرجة المطلوبة للموظف.
والترقية العادية يجب أن تكون +1 درجة بالضبط، حيث new_degree تساوي prev_degree + 1 ما لم يكن مربع ترقية استثنائية excep مُعلم عليه حيث يتم تجاوز الشرط.

وعند النجاح يُنشأ كائن Promotion ويُملأ بالبيانات:

  • num رقم القرار
  • emp_id رقم الموظف
  • prev_degree الدرجة السابقة
  • new_degree الدرجة الجديدة
  • date تاريخ الاستحقاق
  • last_date تاريخ آخر ترقية وهو اختياري.
  • excep ترقية استثنائية = true إذا تم اختيارها
  • created_id رقم المستخدم الذى أجرى العملية

ثم تحديث درجة الموظف فى جدول employees إلى new_degree، ورفع أى ملفات مرفقة وتخزينها فى storage/app/public/PROMOTION وتسجيل مسارها بجدول files.

حاليًا، عليك  وضع شرط للتأكد من أن new_degree أكبر من prev_degree فى الترقية الاستثنائية، لأنّ المستخدم يستطيع إدخال نفس الدرجة أو أقل. 

if(request('excep') && request('new_degree') <= request('prev_degree')){
                                                       
}

 

  • 0
نشر
بتاريخ 9 دقائق مضت قال Mustafa Suleiman:

في المتحكم في دالة store، يتم التحقق من صحة البيانات وهي:

  •  prev_degree : رقم الدرجة الحالية للموظف.
  • date : تاريخ الاستحقاق
  • new_degree : الدرجة الجديدة.

وتفشل الترقية فى الحالات الآتية قبل الحفظ، أولاً يوجد سجل Promotion بنفس emp_id و new_degree فيعاد توجيه المستخدم برسالة خطأ،  أو جدول employees يحتوى أصلاً على نفس الدرجة المطلوبة للموظف.
والترقية العادية يجب أن تكون +1 درجة بالضبط، حيث new_degree تساوي prev_degree + 1 ما لم يكن مربع ترقية استثنائية excep مُعلم عليه حيث يتم تجاوز الشرط.

وعند النجاح يُنشأ كائن Promotion ويُملأ بالبيانات:

  • num رقم القرار
  • emp_id رقم الموظف
  • prev_degree الدرجة السابقة
  • new_degree الدرجة الجديدة
  • date تاريخ الاستحقاق
  • last_date تاريخ آخر ترقية وهو اختياري.
  • excep ترقية استثنائية = true إذا تم اختيارها
  • created_id رقم المستخدم الذى أجرى العملية

ثم تحديث درجة الموظف فى جدول employees إلى new_degree، ورفع أى ملفات مرفقة وتخزينها فى storage/app/public/PROMOTION وتسجيل مسارها بجدول files.

حاليًا، عليك  وضع شرط للتأكد من أن new_degree أكبر من prev_degree فى الترقية الاستثنائية، لأنّ المستخدم يستطيع إدخال نفس الدرجة أو أقل. 

if(request('excep') && request('new_degree') <= request('prev_degree')){
                                                       
}

 

قبل تصميم صفحة إدخال بيانات ماذا اعرض في صفحة عرض بناء علي دالة index

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

أولا إن الحقول التي يتم إدخالها هي :

  • رقم القرار (num).
  • الـدرجة السابقة (prev_degree) وهي درجة الموظف الحالية ويتم تعبئتها تلقائيا من درجة الموظف الحالية {{ $emp->degree }}
  • الـدرجة الجديدة (new_degree): وهي الدرجة بعد الترقية ويتم تعبئتها تلقائيا بـ الدرجة الحالية + 1 {{ $emp->degree + 1 }}
  • ترقية استثنائية (excep) وهو مدخل اختياري
  • تاريخ الاستحقاق (date)
  • تاريخ آخر ترقية (last_date) وهو اختياري
  •  الوثائق (files) وهو إختياري

وفي المتحكم عند الحفظ يتم التأكد أولا من أن الدرجة الجديدة new_degree ليست موجودة مسبقا في جدول الترقيات promotions لنفس الموظف .وأيضا يجب أن تكون الدرجة الجديدة مساوية للدرجة السابقة + 1 إذا لم تكن الترقية استثنائية.

بعد ذلك يتم حفظ الترقية من خلال إنشاء سجل جديد في جدول promotions  . وبعد ذلك يتم تحديث درجة الموظف في حقل degree  في جدول employees .

وأخيرا يتم حفظ الملفات التي تم رفعها 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد عاطف17:

وعليكم السلام ورحمة الله وبركاته.

أولا إن الحقول التي يتم إدخالها هي :

  • رقم القرار (num).
  • الـدرجة السابقة (prev_degree) وهي درجة الموظف الحالية ويتم تعبئتها تلقائيا من درجة الموظف الحالية {{ $emp->degree }}
  • الـدرجة الجديدة (new_degree): وهي الدرجة بعد الترقية ويتم تعبئتها تلقائيا بـ الدرجة الحالية + 1 {{ $emp->degree + 1 }}
  • ترقية استثنائية (excep) وهو مدخل اختياري
  • تاريخ الاستحقاق (date)
  • تاريخ آخر ترقية (last_date) وهو اختياري
  •  الوثائق (files) وهو إختياري

وفي المتحكم عند الحفظ يتم التأكد أولا من أن الدرجة الجديدة new_degree ليست موجودة مسبقا في جدول الترقيات promotions لنفس الموظف .وأيضا يجب أن تكون الدرجة الجديدة مساوية للدرجة السابقة + 1 إذا لم تكن الترقية استثنائية.

بعد ذلك يتم حفظ الترقية من خلال إنشاء سجل جديد في جدول promotions  . وبعد ذلك يتم تحديث درجة الموظف في حقل degree  في جدول employees .

وأخيرا يتم حفظ الملفات التي تم رفعها 

في صفحة العرض index  ماهي حقول التي اعرضها 

  • 0
نشر
بتاريخ الآن قال ايمن ميلاد:

في صفحة العرض index  ماهي حقول التي اعرضها 

هذا الأمر يعتمد على ما تريد عرضه .

فهل تقوم بعرض الترقيات أم الموظفين ؟ الأفضل بالطبع عرض الموظفين أو بناء على ما تريده.

إذا كان الموظفين يمكنك عرض الموظف مع الدرجة الحالية والدرجة السابقة مع تاريخ بداية الترقية .

أما لو أردت الترقيات فيمكنك عرض جميع الترقيات الحالية مع التاريخ مع إسم الموظف .

ودائما في دالة العرض هذا يعتمد على ما يتم طلبه منك أو يريده المستخدم.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد عاطف17:

هذا الأمر يعتمد على ما تريد عرضه .

فهل تقوم بعرض الترقيات أم الموظفين ؟ الأفضل بالطبع عرض الموظفين أو بناء على ما تريده.

إذا كان الموظفين يمكنك عرض الموظف مع الدرجة الحالية والدرجة السابقة مع تاريخ بداية الترقية .

أما لو أردت الترقيات فيمكنك عرض جميع الترقيات الحالية مع التاريخ مع إسم الموظف .

ودائما في دالة العرض هذا يعتمد على ما يتم طلبه منك أو يريده المستخدم.

الان كيف احول كود الذي في دالة store  الي php pure 

  • 0
نشر
بتاريخ 2 دقائق مضت قال ايمن ميلاد:

قبل تصميم صفحة إدخال بيانات ماذا اعرض في صفحة عرض بناء علي دالة index

الأفضل أن يرى المستخدم قائمة بكل الترقيات المُسجلة، مع أهم المعلومات التى تسمح له بالبحث، الفرز، والانتقال سريعاً إلى تفاصيل أو تعديل الترقية، والمعلومات التى يجب عرضها تُستخرج من جدول promotions نفسه بالإضافة إلى علاقة الموظف employee وربما المستخدم الذى أنشأ السجل created_id لو أردت.

بحيث يتواجد في جدول العرض التالي:

  • رقم تسلسل أو الـ ID.
  • رقم القرار num.
  • اسم الموظف – مع رابط لصفحة تفاصيله.
  • الرقم الوظيفى أو الـ emp_id لو أردت إظهاره.
  • الدرجة السابقة prev_degree
  • الدرجة الجديدة new_degree.
  • ترقية استثنائية؟
  • مع خيار نعم ولا أو أيقونة للضغط عليها  للضغط عليها وتصبح excep = true.
  • تاريخ الاستحقاق date.
  • تاريخ آخر ترقية last_date ويظهر فارغاً في حال null.
  • أُضيفت بواسطة، حيث تكتب اسم المستخدم من created_id.
  • تاريخ الإدخال created_at.
  • المرفقات، وتحتوي على أيقونة تحميل إن تم رفع ملف، أو عداد بعدد الملفات.
  • وأزرار للإجراءات وهي عرض – تعديل – حذف حسب صلاحيات المستخدم.

وللاستزادة تستطيع إضافة  شريط بحث أو فلاتر، للبحث باسم الموظف، رقم القرار، الدرجة، الفترة الزمنية وخلافه، بالإضافة إلى زر إضافة ترقية فى أعلى الصفحة يقود إلى create.blade.php.

وبالطبع عليك ترقيم الصفحات بواسطة الـ pagination لو القائمة طويلة.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mustafa Suleiman:

الأفضل أن يرى المستخدم قائمة بكل الترقيات المُسجلة، مع أهم المعلومات التى تسمح له بالبحث، الفرز، والانتقال سريعاً إلى تفاصيل أو تعديل الترقية، والمعلومات التى يجب عرضها تُستخرج من جدول promotions نفسه بالإضافة إلى علاقة الموظف employee وربما المستخدم الذى أنشأ السجل created_id لو أردت.

بحيث يتواجد في جدول العرض التالي:

  • رقم تسلسل أو الـ ID.
  • رقم القرار num.
  • اسم الموظف – مع رابط لصفحة تفاصيله.
  • الرقم الوظيفى أو الـ emp_id لو أردت إظهاره.
  • الدرجة السابقة prev_degree
  • الدرجة الجديدة new_degree.
  • ترقية استثنائية؟
  • مع خيار نعم ولا أو أيقونة للضغط عليها  للضغط عليها وتصبح excep = true.
  • تاريخ الاستحقاق date.
  • تاريخ آخر ترقية last_date ويظهر فارغاً في حال null.
  • أُضيفت بواسطة، حيث تكتب اسم المستخدم من created_id.
  • تاريخ الإدخال created_at.
  • المرفقات، وتحتوي على أيقونة تحميل إن تم رفع ملف، أو عداد بعدد الملفات.
  • وأزرار للإجراءات وهي عرض – تعديل – حذف حسب صلاحيات المستخدم.

وللاستزادة تستطيع إضافة  شريط بحث أو فلاتر، للبحث باسم الموظف، رقم القرار، الدرجة، الفترة الزمنية وخلافه، بالإضافة إلى زر إضافة ترقية فى أعلى الصفحة يقود إلى create.blade.php.

وبالطبع عليك ترقيم الصفحات بواسطة الـ pagination لو القائمة طويلة.

بناء علي دالة حفظ اخي مصطفي ماهيا كل شروط قبل حفظ وماهي شروط ترقية استنائية ممكن توضح لي 

  • 0
نشر
بتاريخ 7 دقائق مضت قال ايمن ميلاد:

بناء علي دالة حفظ اخي مصطفي ماهيا كل شروط قبل حفظ وماهي شروط ترقية استنائية ممكن توضح لي 

كما تم التوضيح في الإجابات السابقة لا يوجد سوى شرطين وهما هذان الشرطان.

بتاريخ 17 دقائق مضت قال محمد عاطف17:

وفي المتحكم عند الحفظ يتم التأكد أولا من أن الدرجة الجديدة new_degree ليست موجودة مسبقا في جدول الترقيات promotions لنفس الموظف .وأيضا يجب أن تكون الدرجة الجديدة مساوية للدرجة السابقة + 1 إذا لم تكن الترقية استثنائية.

 

أما الترقية الإستثنائية فقط يوجد حقل checkbox . يمكنك تحديده لتفعيل الترقية الإستثنائية وكتابة أى درجة جديدة . أى أنه يمكن فقط ترفية الموظف درجة واحدة فقط بدون ترقية إستثنائية . أما لو تم تحديد ترقية إستثنائية يمكنك كتابة أى درجة.

  • 0
نشر

ممكن برمجة كود لم اعرف كيف عند اختيار موظف يظهر درجته 

<?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');
?>

 

  • 0
نشر (معدل)

برمجة جزء من كود ممكن تكمل لي باقي جزئية ترقية استنائية 

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;
                        }
                    } 
                

 

تم التعديل في بواسطة ايمن ميلاد
  • 0
نشر
بتاريخ 23 ساعة قال محمد عاطف17:

كما تم التوضيح في الإجابات السابقة لا يوجد سوى شرطين وهما هذان الشرطان.

أما الترقية الإستثنائية فقط يوجد حقل checkbox . يمكنك تحديده لتفعيل الترقية الإستثنائية وكتابة أى درجة جديدة . أى أنه يمكن فقط ترفية الموظف درجة واحدة فقط بدون ترقية إستثنائية . أما لو تم تحديد ترقية إستثنائية يمكنك كتابة أى درجة.

يعني حقلين اثنين 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');
?>

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...