-
المساهمات
386 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو ايمن ميلاد
-
هل كود صحيح الان بالنسبة للاجازة السنوية الذي عمره فوق 50 ياخد 45 يوم والذي اقل 30 يوم في السنة <?php include('header.php'); error_reporting(0); ini_set('display_errors', 0); function calculateVacationBalance($startDate, $usedDays) { $start = new DateTime($startDate); $now = new DateTime(); $totalAccruedDays = 0; if ($start->format('n') > 6) { $start->setDate($start->format('Y') + 1, 1, 1); } elseif ($start->format('n') < 6 || ($start->format('n') == 6 && $start->format('j') > 1)) { $start->setDate($start->format('Y'), 6, 1); } elseif ($start->format('n') == 1 && $start->format('j') > 1) { $start->setDate($start->format('Y'), 6, 1); } while ($start <= $now) { $totalAccruedDays =$totalAccruedDays+ 15; $start->modify('+6 months'); } $totalAccruedDays =$totalAccruedDays- $usedDays; return $totalAccruedDays; } ?> <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> <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="vacations.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=""> <?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> <select name="type" id=""> <option value="اجازة مرضية">اجازة مرضية</option> <option value="اجازة وضع">اجازة وضع</option> <option value="اجازة بدون مرتب">اجازة بدون مرتب</option> <option value="اجازة زواج">اجازة زواج</option> <option value="اجازة سنوية">اجازة سنوية</option> </select> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label>تاريخ البداية</label> <input name="start_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="end_date" type="date" class="form-control"> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label>سبب الاجازة</label> <input name="reason" type="text" class="form-control" placeholder="ادخل سبب الاجازة"> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label>الموافقة مسبقا</label> <input name="companion" type="checkbox" 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> </div> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $type =$_POST['type']; $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = $_POST['companion'] ? 1 : 0; $created_at = date('Y-m-d H:i:s'); $start = new DateTime($start_date); $end = new DateTime($end_date); $interval = $start->diff($end); $years=$interval->y; $months=$interval->m; $days=$interval->d; $errors = []; if (empty($type)) { $errors[] = 'يجب تحديد نوع الإجازة'; } if (empty($start_date)) { $errors[] = 'يجب إدخال تاريخ بداية الإجازة'; } if (empty($end_date)) { $errors[] = 'يجب إدخال تاريخ المباشرة'; } if (!empty($errors)) { echo implode('<br>', $errors); exit; } mysqli_begin_transaction($con); try { $stmt = $con->prepare("SELECT * FROM employees WHERE person_id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $employee = $stmt->get_result()->fetch_assoc(); $stmt->close(); if (!$employee) { echo "لم يتم العثور على بيانات الموظف"; } // التحقق من وجود إجازة قيد الإجراء $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND accept = 0"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "عذرًا، هنالك إجازة قيد الإجراء للموظف الحالي، الرجاء التحقق."; exit(); } $stmt = $con->prepare("SELECT * FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $people = $stmt->get_result()->fetch_assoc(); $stmt->close(); if ($type == "اجازة وضع" && $people['gender'] == "ذكر") { echo "عذرًا، لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار."; exit(); } // التحقق من إجازة زواج if ($type == "اجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ? "); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "عذرًا، الموظف المختار قد حصل على إجازة زواج مسبقًا."; exit(); } $stmt = $con->prepare("SELECT start_date, end_date FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($start_date, $end_date); $stmt->fetch(); $stmt->close(); if ($start_date && $end_date) { // حساب المدة بالأيام باستخدام الفرق بين التواريخ $days = (new DateTime($end_date))->diff(new DateTime($start_date))->days; if ($days > 14) { echo "عذرًا، إجازة الزواج لا يمكن أن تتجاوز أسبوعين."; exit(); } } } // معالجة عدد الأيام $vacation_days = null; if ($type == "اجازة سنوية") { $stmt = $con->prepare("SELECT birth_date FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($birth_date); $stmt->fetch(); $stmt->close(); $birth_date = new DateTime($birth_date); $current_date = new DateTime(); $age = $current_date->diff($birth_date)->y; if ($age >= 50) { $vacation_days = 45; } else { $vacation_days = 30; } // حساب رصيد الإجازة $start_date_calc = new DateTime($employee['start_date']); $start_date_calc->modify('+1 year'); $start_date_calc = $start_date_calc->format('Y-m-d'); $stmt = $con->prepare("SELECT SUM(days) as total_days FROM vacations WHERE emp_id = ? AND accept = 1"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $used_days = $row['total_days'] ? $row['total_days'] : 0; $stmt->close(); $vacation_balance = calculateVacationBalance($start_date_calc, $used_days); if ($vacation_balance < $vacation_days) { echo "عذرًا، لا يمكن إنشاء إجازة وذلك لعدم توفر الرصيد الكافي."; exit(); } } elseif ($type == "اجازة بدون مرتب" ) { $days = 365; } $stmt = $con->prepare("INSERT INTO vacations (emp_id, years,months,days, reason, companion, type, start_date,end_date, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $start_date_formatted = $start->format('Y-m-d'); $end_date_formatted = $end->format('Y-m-d'); $stmt->bind_param("iiiisissss", $emp_id, $years, $months, $days, $reason, $companion, $type, $start_date_formatted, $end_date_formatted, $created_at ); if ($stmt->execute()) { echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات اجازة موظف بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=vacations.php" />'; } $stmt->close(); mysqli_commit($con); } catch (Exception $e) { mysqli_rollback($con); echo "خطأ: " . $e->getMessage(); exit; } } ?> </div> </div> </div> </div> <?php include('footer.php'); ?>
- 28 اجابة
-
- 1
-
-
اخي الكود الان يدخل بيانات لكن لماذا في اجازة سنوية يقبله مرتين لنفس موظف بمعني دخلت موظف مرة اولي ثم اذا اردت ان ادخل له مرة تانيه يقبله if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $type =$_POST['type']; $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = $_POST['companion'] ? 1 : 0; $created_at = date('Y-m-d H:i:s'); $start = new DateTime($start_date); $end = new DateTime($end_date); $interval = $start->diff($end); $years=$interval->y; $months=$interval->m; $days=$interval->d; $errors = []; if (empty($type)) { $errors[] = 'يجب تحديد نوع الإجازة'; } if (empty($start_date)) { $errors[] = 'يجب إدخال تاريخ بداية الإجازة'; } if (empty($end_date)) { $errors[] = 'يجب إدخال تاريخ المباشرة'; } if (!empty($errors)) { echo implode('<br>', $errors); exit; } mysqli_begin_transaction($con); try { $stmt = $con->prepare("SELECT * FROM employees WHERE person_id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $employee = $stmt->get_result()->fetch_assoc(); $stmt->close(); if (!$employee) { echo "لم يتم العثور على بيانات الموظف"; } // التحقق من وجود إجازة قيد الإجراء $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND accept = 0"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "عذرًا، هنالك إجازة قيد الإجراء للموظف الحالي، الرجاء التحقق."; exit(); } $stmt = $con->prepare("SELECT * FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $people = $stmt->get_result()->fetch_assoc(); $stmt->close(); if ($type == "اجازة وضع" && $people['gender'] == "ذكر") { echo "عذرًا، لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار."; exit(); } // التحقق من إجازة زواج if ($type == "اجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0 && $people['accept'] == 0) { echo "عذرًا، الموظف المختار قد حصل على إجازة زواج مسبقًا."; exit(); } } // معالجة عدد الأيام $vacation_days = null; if ($type == "اجازة سنوية") { $vacation_days = $days; // حساب رصيد الإجازة $start_date_calc = new DateTime($employee['start_date']); $start_date_calc->modify('+1 year'); $start_date_calc = $start_date_calc->format('Y-m-d'); $stmt = $con->prepare("SELECT SUM(days) as total_days FROM vacations WHERE emp_id = ? AND accept = 1"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $used_days = $row['total_days'] ? $row['total_days'] : 0; $stmt->close(); $vacation_balance = calculateVacationBalance($start_date_calc, $used_days); if ($vacation_balance < $vacation_days) { echo "عذرًا، لا يمكن إنشاء إجازة وذلك لعدم توفر الرصيد الكافي."; exit(); } } elseif ($type == "اجازة بدون مرتب" ) { $days = 365; } $stmt = $con->prepare("INSERT INTO vacations (emp_id, years,months,days, reason, companion, type, start_date,end_date, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $start_date_formatted = $start->format('Y-m-d'); $end_date_formatted = $end->format('Y-m-d'); $stmt->bind_param("iiiisissss", $emp_id, $years, $months, $days, $reason, $companion, $type, $start_date_formatted, $end_date_formatted, $created_at ); if ($stmt->execute()) { echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات اجازة موظف بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=vacations.php" />'; } $stmt->close(); mysqli_commit($con); } catch (Exception $e) { mysqli_rollback($con); echo "خطأ: " . $e->getMessage(); exit; } } اخي مثلا موظف تاريخ تعينه 12-1-1999 اريد منحه اجازتين سنوية اوله من 1-1-2023 الي 1-1-2024 وتانيه من 1-1-2024 الي 1-1-2025 تاريخ بداية حساب الرصيد: سيكون بعد مرور سنة من تاريخ التعيين، أي في 12 يناير 2000. كل 6 أشهر، يتم إضافة 15 يومًا. من 12 يناير 2000 إلى 1 يناير 2023: عدد السنوات = 22 سنة. عدد فترات 6 أشهر = 22 × 2 = 44 فترة. الإجمالي = 44 × 15 = 660 يومًا. رصيد الاجازة الاولي 660-0=660 يوما الإجازة الثانية: من 1 يناير 2024 إلى 1 يناير 2025 تاريخ بداية حساب الرصيد: بعد 1 يناير 2024. من 12 يناير 2000 إلى 1 يناير 2024: عدد السنوات = 24 سنة. عدد فترات 6 أشهر = 24 × 2 = 48 فترة. الإجمالي = 48 × 15 = 720 يومًا. كيف يتم قبول اجازة تانية ممكن توضح لي بناء علي الكود المذكور
- 28 اجابة
-
- 1
-
-
اتصال صحيح عند عمل var_dump تظهر بيانات
- 28 اجابة
-
- 1
-
-
اخدت من الكود الذي اريده فقط لماذا لايتم تخزين بيانات <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = isset($_POST['emp_id']) ? (int)$_POST['emp_id'] : 0; $type = isset($_POST['type']) ? $_POST['type'] : ''; $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : ''; $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : ''; $reason = isset($_POST['reason']) ? $_POST['reason'] : ''; $companion = isset($_POST['person']) ? 1 : 0; $years = isset($_POST['years']) ? $_POST['years'] : ''; $months = isset($_POST['months']) ? $_POST['months'] : ''; $days = isset($_POST['days']) ? (int)$_POST['days'] : 0; $created_at = date('Y-m-d H:i:s'); $errors = []; if (empty($type)) { $errors[] = 'يجب تحديد نوع الإجازة'; } if (empty($start_date)) { $errors[] = 'يجب إدخال تاريخ بداية الإجازة'; } if (empty($end_date)) { $errors[] = 'يجب إدخال تاريخ المباشرة'; } if (!empty($errors)) { echo implode('<br>', $errors); exit; } mysqli_begin_transaction($con); try { // التحقق من وجود إجازة قيد الإجراء $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND accept = 0"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { throw new Exception("عذرًا، هنالك إجازة قيد الإجراء للموظف الحالي، الرجاء التحقق."); } // التحقق من إجازة وضع if ($type == "إجازة وضع" && $employee['gender'] == 1 && $employee['status'] == 1) { throw new Exception("عذرًا، لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار."); } // التحقق من إجازة زواج if ($type == "إجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0 && $employee['status'] == 0) { throw new Exception("عذرًا، الموظف المختار قد حصل على إجازة زواج مسبقًا."); } } // معالجة عدد الأيام $vacation_days = null; if ($type == "إجازة سنوية") { $vacation_days = $days; // حساب رصيد الإجازة $start_date_calc = new DateTime($employee['start_date']); $start_date_calc->modify('+1 year'); $start_date_calc = $start_date_calc->format('Y-m-d'); $stmt = $con->prepare("SELECT SUM(days) as total_days FROM vacations WHERE emp_id = ? AND accept = 1"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $used_days = $row['total_days'] ? $row['total_days'] : 0; $stmt->close(); $vacation_balance = calculateVacationBalance($start_date_calc, $used_days); if ($vacation_balance < $vacation_days) { throw new Exception("عذرًا، لا يمكن إنشاء إجازة وذلك لعدم توفر الرصيد الكافي."); } elseif ($type == "إجازة بدون مرتب" && !isset($_POST['person'])) { $vacation_days = 365; } // إدخال بيانات الإجازة $stmt = $con->prepare("INSERT INTO vacations (emp_id, type, days, start_date, end_date, reason, companion, accept, created_id, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("isisssiiis", $emp_id, $type, $vacation_days, $start_date, $end_date, $reason, $companion, $approve, $user_id, $created_at); if (!$stmt->execute()) { throw new Exception("خطأ أثناء إنشاء الإجازة."); } $stmt->close(); // تحديث حالة الموظف إذا كانت إجازة زواج if ($type == "إجازة زواج") { $stmt = $con->prepare("UPDATE employees SET status = 1 WHERE person_id = ?"); $stmt->bind_param("i", $emp_id); if (!$stmt->execute()) { throw new Exception("خطأ أثناء تحديث حالة الموظف."); } $stmt->close(); } mysqli_commit($con); echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة بيانات الدورة بنجاح!', icon: 'success', customClass: 'rak', }); </script>"; echo '<meta http-equiv="refresh" content="2;url=vacations.php" />'; exit() ; } }catch (Exception $e) { mysqli_rollback($con); echo "خطأ: " . $e->getMessage(); exit; } }
-
لماذا لم يتم تخزين بيانات if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; // يتم تخزين id موظف $type = $_POST['type']; // يتم تخزين نوع الإجازة $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = isset($_POST['companion']) ? 1 : 0; $created_at = date('Y-m-d H:i:s'); } if (empty($start_date) || empty($end_date)) { echo "يرجى اختيار تاريخ بداية وتاريخ نهاية."; exit(); } $stmt = $con->prepare("SELECT * FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $gender = $row['gender']; } if ($type == "اجازة وضع" && $gender == "ذكر") { echo "عذرآ ولكن لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار لأنه ذكر."; exit(); } if ($type == "اجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "لديك إجازة زواج مسبقًا، لا يمكنك أخذها مرة أخرى."; exit(); } } if ($type == "اجازة سنوية") { $startDate = new DateTime($start_date); $endDate = new DateTime($end_date); $interval = $startDate->diff($endDate); $daysDiff = $interval->days+1; //عدد ايام بين تاريخ بداية اجازة وتاريخ نهاية اجازة $stmt = $con->prepare("SELECT * FROM employees WHERE person_id= ?"); //جلب تاريخ مباشرة موظف $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $s_date = new DateTime($row['start_date']); $s_date->modify('+1 year'); $s_date->format('Y-m-d'); } $stmt = $con->prepare("SELECT SUM(days) as total_days FROM vacations WHERE emp_id = ? AND accept = 1"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $used_days = $row['total_days'] ? $row['total_days'] : 0; $vacation_balance = calculateVacationBalance($s_date, $used_days); if ($vacation_balance < $daysDiff) { echo "عذرًا، لا يمكن إنشاء إجازة وذلك لعدم توفر الرصيد الكافي."; exit(); } } elseif($type == "اجازة بدون راتب") { $stmt->bind_param("isisssis", $emp_id, $type, $daysDiff, $start_date, $end_date, $reason, $companion, $created_at); $daysDiff = 365; } else { $daysDiff = NULL; } $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $start_date = new DateTime($_POST['start_date']); $end_date = new DateTime($_POST['end_date']); $interval = $start_date->diff($end_date); $years = $interval->y; $months = $interval->m; $days = $interval->d; $stmt = $con->prepare("INSERT INTO vacations (emp_id,years,months,days, reason, companion,type,start_date, end_date, created_at) VALUES (?, ?,?,?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("iiiissssss", $emp_id,$years,$months,$days, $reason, $companion, $type, $start_date,$end_date, $created_at); if (!$stmt->execute()) { echo "خطأ أثناء إنشاء الإجازة."; exit(); } else { echo "تم إنشاء الإجازة بنجاح."; }
-
<?php namespace App\Http\Controllers; use Carbon\Carbon; use App\Models\Log; use App\Models\File; use App\Models\Employee; use App\Models\Vacation; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Storage; class VacationController extends Controller { function __construct() { $this->middleware('permission:vacation-list', ['only' => ['index','show','search']]); $this->middleware('permission:vacation-create', ['only' => ['create','createAll','store']]); $this->middleware('permission:vacation-edit', ['only' => ['edit','update','endVecation']]); $this->middleware('permission:vacation-delete', ['only' => ['destroy']]); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $vacations = Vacation::paginate(25); return view('admin.Vacation.index',compact('vacations')); } public function print(Request $request) { $vacations = Vacation::all(); return view('admin.Vacation.print', compact('vacations')); } function calculateVacationBalance($startDate, $usedDays) { $start = Carbon::parse($startDate); $now = Carbon::now(); $totalAccruedDays = 0; // ضبط تاريخ البداية ليتوافق مع أول فترة نصف سنوية بعد التاريخ المحدد if ($start->month > 6) { $start->month(1)->addYear()->day(1); // الانتقال إلى 1 يناير من العام التالي } elseif ($start->month < 6 || ($start->month == 6 && $start->day > 1)) { $start->month(6)->day(1); // الانتقال إلى 1 يونيو من نفس العام } else if ($start->month == 1 && $start->day > 1) { $start->month(6)->day(1); // إذا كان بعد 1 يناير، ننتقل إلى 1 يونيو } // حساب عدد الفترات نصف السنوية المؤهلة حتى الآن while ($start->lessThanOrEqualTo($now)) { $totalAccruedDays += 15; // إضافة 15 يوم لكل فترة نصف سنوية $start->addMonths(6); // الانتقال إلى الفترة نصف السنوية التالية } $totalAccruedDays -= $usedDays; // طرح الأيام المستخدمة return $totalAccruedDays; } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create($id) { $employee = Employee::find($id); $date = Carbon::createFromFormat('Y-m-d', $employee->start_date); $date = $date->addYear(); $date = $date->toDateString(); if($employee->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $employee->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } return view('admin.Vacation.create',compact('employee','vacationBalance')); } public function createAll() { $employees = Employee::where('startout_data', NULL)->get(); return view('admin.Vacation.createAll',compact('employees')); } public function endVecation($id) { $vac = Vacation::find($id); if($vac->start_date == $vac->end_date){ $vac->end_date = now()->format('Y-m-d'); $vac->days = now()->diffInDays($vac->start_date); $vac->update(); return redirect()->back()->with('success','تم إنهاء الإجازة بنجاح'); }else{ return redirect()->back()->with('error','عذرآ هذا الإجراء غير مسموح به حاليآ'); } } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request,$id) { request()->validate( [ 'type' => "required", 'start_date' => "required", 'end_date' => 'required', ], [ 'type.required' => 'يجب تحديد نوع الاجازة', 'start_date.required' => 'يجب إدخال تاريخ بداية الإجازة', 'end_date.required' => 'يجب ادخال تاريخ المباشرة', ]); DB::beginTransaction(); try { $vac = new Vacation; if($id == 0){ $emp = Employee::find(request('emp_id')); }else{ $emp = Employee::find($id); } if(Vacation::where([['emp_id', $emp->id],['accept', false]])->exists()){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن هنالك أجازة قيد الاجراء للموظف الحالي الرجاء التحقق'); } if(!request('years') && !request('months') && !request('days')){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن يجب تعبئة إحدي الخانات علي الاقل (السنوات ,الاشهر ,الايام)'); } if(request('type') == "إجازة وضع" && $emp->gender == 1 && $emp->status == 1){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن لا يمكن أعطاء هذا النوع من الاجازة للموظف المختار'); } if(request('type') == "إجازة زواج" && $emp->vacations()->where("type", "إجازة زواج")->count() != 0 && $emp->status == 0 ){ DB::rollback(); return redirect()->back()->with('error','عذرآ الموظف المختار قد تحصل علي أجاة زواج مسبقآ'); } $vac->emp_id = $emp->id; $vac->type = request('type'); if(request('type') == "إجازة سنوية"){ $vac->days = request('days'); $date = Carbon::createFromFormat('Y-m-d', $emp->start_date); $date = $date->addYear(); $date = $date->toDateString(); if($emp->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $emp->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } if($vacationBalance < $vac->days){ DB::rollback(); return redirect()->back()->with('error','عذرآ لايمكن أنشاء إجازة وذلك لعدم توفر الرصيد الكافي...'); } }elseif(request('type') == "إجازة بدون مرتب" && !$request->has('person')){ $vac->days = 365; }else{ $vac->days = NULL; } $vac->created_id = auth()->user()->id; $start_date = request('start_date'); $vac->start_date = $start_date; $end_date = request('end_date'); $vac->end_date = $end_date; if($request->has('person')){ $vac->companion = true; }else{ $vac->companion = false; } if($request->has('approve')){ $vac->accept = true; } $vac->reason = request('reason'); $vac->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('VACATION', $fileName, 'public'); // Store the file $filePath = 'VACATION/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'vacation', 'procedure_id' => $vac->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 7; $log->emp_id = $emp->id; $log->title = " اضافة إجازة جديدة (".request('type').")"; $log->log = " تمت إضافة إجازة جديدة (".request('type').")"; $log->save(); if(request('type') =="إجازة زواج") { $emp->status=1; $emp->save(); } DB::commit(); return redirect()->route('vacations.show',[$emp->id])->with('success','تــمــت إضــافــة إجــازة الــموظــف بــنــجــاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $employee = Employee::find($id); $vacations = Vacation::where('emp_id', $id)->paginate(20); $date = Carbon::createFromFormat('Y-m-d', $employee->start_date); $date = $date->addYear(); $date = $date->toDateString(); if($employee->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $employee->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } return view('admin.Vacation.show',compact('employee','vacations','vacationBalance')); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $vac = Vacation::find($id); return view('admin.Vacation.edit',compact('vac')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request) { DB::beginTransaction(); try { $vac = Vacation::find(request('id')); $vac->accept = true; $vac->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('VACATION', $fileName, 'public'); // Store the file $filePath = 'VACATION/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'vacation', 'procedure_id' => $vac->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 7; $log->emp_id = $vac->emp_id; $log->title = " الموافقة علي الإجازة (".request('type').")"; $log->log = " تمت الموافقة علي الإجازة (".request('type').")"; $log->save(); DB::commit(); return redirect()->back()->with('success','تــمــت الــمـوافــقـة عـلـي إجــازة الــموظــف بــنــجــاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } public function destroy($id) { DB::beginTransaction(); try { $files = File::where('procedure_id', $id) ->where('type', 'vacation') ->update(['delete_at'=> now()]); $abs = Vacation::find($id); $abs->delete_at = now(); $abs->delete(); $log = new Log; $log->user_id = auth()->user()->id; $log->type = 11; $log->emp_id = $abs->emp_id; $log->title = " حذف بيانات إجــازة (".$abs->type.")"; $log->log = " تم حذف بيانات إجــازة (".$abs->type.")"; $log->save(); DB::commit(); return redirect()->back()->with('success','تـم حـذفـ إجــازة الـمـوظـف بـنـجـاح'); // all good } catch (\Exception $e) { DB::rollback(); return redirect()->back()->with('error', 'للاسف حدث خطأ ما الرجاء اعادة المحاولة'); } } } انا اريد عمل كود مثله لحفظ اجازة موظف انا حاولت فيه لكن هل هو صحيح لماذا لم يحفظ بيانات ممكن تعدل عليه ليصبح مثله if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; // يتم تخزين id موظف $type = $_POST['type']; // يتم تخزين نوع الإجازة $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = isset($_POST['companion']) ? 1 : 0; $created_at = date('Y-m-d H:i:s'); } if (empty($start_date) || empty($end_date)) { echo "يرجى اختيار تاريخ بداية وتاريخ نهاية."; exit(); } $stmt = $con->prepare("SELECT * FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $gender = $row['gender']; } if ($type == "اجازة وضع" && $gender == "ذكر") { echo "عذرآ ولكن لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار لأنه ذكر."; exit(); } if ($type == "اجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "لديك إجازة زواج مسبقًا، لا يمكنك أخذها مرة أخرى."; exit(); } } if ($type == "اجازة سنوية") { $startDate = new DateTime($start_date); $endDate = new DateTime($end_date); $interval = $startDate->diff($endDate); $daysDiff = $interval->days+1; //عدد ايام بين تاريخ بداية اجازة وتاريخ نهاية اجازة $stmt = $con->prepare("SELECT * FROM employees WHERE person_id= ?"); //جلب تاريخ مباشرة موظف $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $s_date = new DateTime($row['start_date']); $s_date->modify('+1 year'); $s_date->format('Y-m-d'); } $stmt = $con->prepare("SELECT SUM(days) as total_days FROM vacations WHERE emp_id = ? AND accept = 1"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $used_days = $row['total_days'] ? $row['total_days'] : 0; $vacation_balance = calculateVacationBalance($s_date, $used_days); if ($vacation_balance < $daysDiff) { echo "عذرًا، لا يمكن إنشاء إجازة وذلك لعدم توفر الرصيد الكافي."; exit(); } } elseif($type == "اجازة بدون راتب") { $days = 365; } else { $days = NULL; } $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $stmt = $con->prepare("INSERT INTO vacations (emp_id, type, days, start_date, end_date, reason, companion, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("isisssis", $emp_id, $type, $daysDiff, $start_date, $end_date, $reason, $companion, $created_at); if (!$stmt->execute()) { echo "خطأ أثناء إنشاء الإجازة."; exit(); } else { echo "تم إنشاء الإجازة بنجاح."; } كودي لايخزن عدد ايام لماذا
- 28 اجابة
-
- 1
-
-
اخي تبقي جزئية اجازة بدون مرتب elseif(request('type') == "إجازة بدون مرتب" && !$request->has('person')){ $vac->days = 365; }else{ $vac->days = NULL; } $vac->created_id = auth()->user()->id; $start_date = request('start_date'); $vac->start_date = $start_date; $end_date = request('end_date'); $vac->end_date = $end_date; if($request->has('person')){ $vac->companion = true; }else{ $vac->companion = false; } if($request->has('approve')){ $vac->accept = true; } $vac->reason = request('reason'); $vac->save();
-
اخي انا اعمل علي تحويل كود حفظ اجازة موظف من laravel الي php بعض جزئيات لم افهم في كود
- 28 اجابة
-
- 2
-
-
public function store(Request $request,$id) { request()->validate( [ 'type' => "required", 'start_date' => "required", 'end_date' => 'required', ], [ 'type.required' => 'يجب تحديد نوع الاجازة', 'start_date.required' => 'يجب إدخال تاريخ بداية الإجازة', 'end_date.required' => 'يجب ادخال تاريخ المباشرة', ]); DB::beginTransaction(); try { $vac = new Vacation; if($id == 0){ $emp = Employee::find(request('emp_id')); }else{ $emp = Employee::find($id); } if(Vacation::where([['emp_id', $emp->id],['accept', false]])->exists()){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن هنالك أجازة قيد الاجراء للموظف الحالي الرجاء التحقق'); } if(!request('years') && !request('months') && !request('days')){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن يجب تعبئة إحدي الخانات علي الاقل (السنوات ,الاشهر ,الايام)'); } if(request('type') == "إجازة وضع" && $emp->gender == 1 && $emp->status == 1){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن لا يمكن أعطاء هذا النوع من الاجازة للموظف المختار'); } if(request('type') == "إجازة زواج" && $emp->vacations()->where("type", "إجازة زواج")->count() != 0 && $emp->status == 0 ){ DB::rollback(); return redirect()->back()->with('error','عذرآ الموظف المختار قد تحصل علي أجاة زواج مسبقآ'); } $vac->emp_id = $emp->id; $vac->type = request('type'); if(request('type') == "إجازة سنوية"){ $vac->days = request('days'); $date = Carbon::createFromFormat('Y-m-d', $emp->start_date); $date = $date->addYear(); $date = $date->toDateString(); if($emp->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $emp->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } if($vacationBalance < $vac->days){ DB::rollback(); return redirect()->back()->with('error','عذرآ لايمكن أنشاء إجازة وذلك لعدم توفر الرصيد الكافي...'); } }elseif(request('type') == "إجازة بدون مرتب" && !$request->has('person')){ $vac->days = 365; }else{ $vac->days = NULL; } $vac->created_id = auth()->user()->id; $start_date = request('start_date'); $vac->start_date = $start_date; $end_date = request('end_date'); $vac->end_date = $end_date; if($request->has('person')){ $vac->companion = true; }else{ $vac->companion = false; } if($request->has('approve')){ $vac->accept = true; } $vac->reason = request('reason'); $vac->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('VACATION', $fileName, 'public'); // Store the file $filePath = 'VACATION/' . $fileName; // Generate the file path $finalArray[] = [ 'type' => 'vacation', 'procedure_id' => $vac->id, 'path' => $filePath, ]; } if (!empty($finalArray)) { File::insert($finalArray); // Insert the file references } } $log = new Log; $log->user_id = auth()->user()->id; $log->type = 7; $log->emp_id = $emp->id; $log->title = " اضافة إجازة جديدة (".request('type').")"; $log->log = " تمت إضافة إجازة جديدة (".request('type').")"; $log->save(); اخي هذا كود دالة قمت بتحويله لي php pure بدون جزئية logs
- 28 اجابة
-
- 1
-
-
هادي دالة function calculateVacationBalance($startDate, $usedDays) { $start = new DateTime($startDate); $now = new DateTime(); $totalAccruedDays = 0; if ($start->format('n') > 6) { $start->setDate($start->format('Y') + 1, 1, 1); } elseif ($start->format('n') < 6 || ($start->format('n') == 6 && $start->format('j') > 1)) { $start->setDate($start->format('Y'), 6, 1); } elseif ($start->format('n') == 1 && $start->format('j') > 1) { $start->setDate($start->format('Y'), 6, 1); } while ($start <= $now) { $totalAccruedDays =$totalAccruedDays+ 15; $start->modify('+6 months'); } $totalAccruedDays =$totalAccruedDays- $usedDays; return $totalAccruedDays; }
- 28 اجابة
-
- 1
-
-
السلام عليكم انا اقوم بتحويل كود داخل دالة store الي php pure ممكن مساعدة في باقي request()->validate( [ 'type' => "required", 'start_date' => "required", 'end_date' => 'required', ], [ 'type.required' => 'يجب تحديد نوع الاجازة', 'start_date.required' => 'يجب إدخال تاريخ بداية الإجازة', 'end_date.required' => 'يجب ادخال تاريخ المباشرة', ]); DB::beginTransaction(); try { $vac = new Vacation; if($id == 0){ $emp = Employee::find(request('emp_id')); }else{ $emp = Employee::find($id); } if(Vacation::where([['emp_id', $emp->id],['accept', false]])->exists()){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن هنالك أجازة قيد الاجراء للموظف الحالي الرجاء التحقق'); } if(!request('years') && !request('months') && !request('days')){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن يجب تعبئة إحدي الخانات علي الاقل (السنوات ,الاشهر ,الايام)'); } if(request('type') == "إجازة وضع" && $emp->gender == 1 && $emp->status == 1){ DB::rollback(); return redirect()->back()->with('error','عذرآ ولكن لا يمكن أعطاء هذا النوع من الاجازة للموظف المختار'); } if(request('type') == "إجازة زواج" && $emp->vacations()->where("type", "إجازة زواج")->count() != 0 && $emp->status == 0 ){ DB::rollback(); return redirect()->back()->with('error','عذرآ الموظف المختار قد تحصل علي أجاة زواج مسبقآ'); } $vac->emp_id = $emp->id; $vac->type = request('type'); if(request('type') == "إجازة سنوية"){ $vac->days = request('days'); $date = Carbon::createFromFormat('Y-m-d', $emp->start_date); $date = $date->addYear(); $date = $date->toDateString(); if($emp->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $emp->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } if($vacationBalance < $vac->days){ DB::rollback(); return redirect()->back()->with('error','عذرآ لايمكن أنشاء إجازة وذلك لعدم توفر الرصيد الكافي...'); } هذا كودي انا if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; // يتم تخزين id موظف $type = $_POST['type']; // يتم تخزين نوع الإجازة $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = isset($_POST['companion']) ? 1 : 0; $created_at = date('Y-m-d H:i:s'); } $stmt = $con->prepare("SELECT * FROM people WHERE id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $gender = $row['gender']; } if ($type == "اجازة وضع" && $gender == "ذكر") { echo "عذرآ ولكن لا يمكن إعطاء هذا النوع من الإجازة للموظف المختار لأنه ذكر."; } if ($type == "اجازة زواج") { $stmt = $con->prepare("SELECT COUNT(*) FROM vacations WHERE emp_id = ? AND type = ?"); $stmt->bind_param("is", $emp_id, $type); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); $stmt->close(); if ($count > 0) { echo "لديك إجازة زواج مسبقًا، لا يمكنك أخذها مرة أخرى."; exit(); } } if ($type == "اجازة سنوية") { $startDate = new DateTime($start_date); $endDate = new DateTime($end_date); $interval = $startDate->diff($endDate); $daysDiff = $interval->days+1; //عدد ايام بين تاريخ بداية اجازة وتاريخ نهاية اجازة $stmt = $con->prepare("SELECT * FROM employees WHERE person_id= ?"); //جلب تاريخ مباشرة موظف $stmt->bind_param("i", $emp_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $s_date = new DateTime($row['start_date']); $s_date->modify('+1 year'); $s_date->format('Y-m-d'); } } ممكن شرح جزئية باقية اخواني الكرام if($emp->vacations){ $vacationBalance = $this->calculateVacationBalance($date, $emp->vacations->where('accept', true)->sum("days")); }else{ $vacationBalance = $this->calculateVacationBalance($date, 0); } if($vacationBalance < $vac->days){ DB::rollback(); return redirect()->back()->with('error','عذرآ لايمكن أنشاء إجازة وذلك لعدم توفر الرصيد الكافي...'); }
- 28 اجابة
-
- 2
-
-
-
سؤال لماذا لا يمكن طباعة تاريخ علي طول بعد اخد object من كلاس datetime وهل $now يسمي اوبجكت من كلاس datetime لماذا نستخدم format وهل هيا دالة ام احد خصائص كلاس $now = new DateTime(); echo $now;
-
اريد درس يشرح التعامل معا التاريخ في php بالتفصيل
- 3 اجابة
-
- 2
-
-
هذا الذي فعلتها
-
السلام عليكم قمت بتحميل برنامج لارغون 6 عند الضغط علي start all ثم الضغط علي phpmyadmin يفتح لي برنامج heidisql انا اريد يفتح داخل متصفح قمت بحل مشكلة عن طريق دخول للقائمة ثم mysql ثم تحديث اصدار phpmyadmin
- 4 اجابة
-
- 2
-
-
هذا ايضا يؤكد وجود نظامين تم حل مشكلة بارك الله فيكم اخي مصطفي ومحمد عاطف شهادة لله في كل سؤال ماتقصروا معاي الله يرحم والديك تم حل مشكلة بارك الله فيكم اخي مصطفي ومحمد عاطف شهادة لله في كل سؤال ماتقصروا معاي الله يرحم والديك كيف اقسم قرص سي كما موضح في الصورة اريد ابقاء قرص سي وقرص اخر فقط كما موضح في صورة قرص ssd الذي حجمه 476 يعمل بينما قرص النظام حجمه 237 جيجا لايظهر في هذا كمبيوتر الشخصي
-
السلام عليكم قمت بتحميل ويندوز 11 نسخة home من موقع ميكرسوفت ووضعته في فلاش usb ثم عن طريق boot قمت بتثبيته علي بان النظام السابق ايضا ويندوز 11 هوم كل ما اعمل اعادة تشغيل او افتح كمبيوتر تظهر صورة انا اريد ويندوز اول فقط اصبح لدي اثنين كيف احل مشكلة
- 3 اجابة
-
- 2
-
-
- 6 اجابة
-
- 1
-
-
كيف استغل منطق سابق في كودي <?php include('header.php'); function calculateVacationBalance($startDate, $usedDays) { $start = new DateTime($startDate); $now = new DateTime(); $totalAccruedDays = 0; // ضبط تاريخ البداية ليتوافق مع أول فترة نصف سنوية بعد التاريخ المحدد if ($start->format('n') > 6) { $start->setDate($start->format('Y') + 1, 1, 1); // الانتقال إلى 1 يناير من العام التالي } elseif ($start->format('n') < 6 || ($start->format('n') == 6 && $start->format('j') > 1)) { $start->setDate($start->format('Y'), 6, 1); // الانتقال إلى 1 يونيو من نفس العام } elseif ($start->format('n') == 1 && $start->format('j') > 1) { $start->setDate($start->format('Y'), 6, 1); // إذا كان بعد 1 يناير، ننتقل إلى 1 يونيو } // حساب عدد الفترات نصف السنوية المؤهلة حتى الآن while ($start <= $now) { $totalAccruedDays += 15; // إضافة 15 يوم لكل فترة نصف سنوية $start->modify('+6 months'); // الانتقال إلى الفترة نصف السنوية التالية } $totalAccruedDays -= $usedDays; // طرح الأيام المستخدمة return $totalAccruedDays; } ?> <!--------------------------------------------------------------------------------> <!------------------------------------header--------------------------------------> <!--------------------------------------------------------------------------------> <head> <!-- مكتبة SweetAlert2 --> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <!-- مكتبة Select2 --> <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> <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="vacations.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=""> <?php // استعلام لجلب أسماء الموظفين $sql = "SELECT id, name FROM people"; $result = $con->query($sql); while ($row = $result->fetch_assoc()) { echo "<option value='{$row['id']}'>{$row['name']}</option>"; } ?> </select> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> نوع الاجازة </label> <select name="type" id=""> <option value="اجازة مرضية">اجازة مرضية</option> <option value="اجازة وضع">اجازة وضع</option> <option value="اجازة بدون مرتب">اجازة بدون مرتب</option> <option value="اجازة بدون زواج">اجازة زواج </option> <option value="اجازة سنوية">اجازة سنوية </option> </select> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> تاريخ البداية </label> <input name="start_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="end_date" type="date" class="form-control" > </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> سبب الاجازة </label> <input name="reason" type="text" class="form-control" placeholder="ادخل سبب الاجازة "> </div> </div> <div class="col-md-4"> <div class="form-group" style="margin-top:10px;"> <label> الموافقة مسبقا </label> <input name="companion" type="checkbox" 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> </div> </div> </div> </div> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $emp_id = $_POST['emp_id']; $type = $_POST['type']; $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $reason = $_POST['reason']; $companion = isset($_POST['companion']) ? 1 : 0; $created_at=date('Y-m-d H:i:s'); // حساب عدد أيام الإجازة $start = new DateTime($start_date); $end = new DateTime($end_date); $interval = $start->diff($end); $days = $interval->days; $months = $interval->m + ($interval->y * 12); // حساب عدد الأشهر $years = $interval->y; // عدد السنوات $sql = "INSERT INTO vacations (emp_id, type, start_date, end_date,years,months, days, reason, companion, created_at) VALUES (?, ?,?,?, ?, ?, ?, ?, ?, ?)"; $stmt = $con->prepare($sql); $stmt->bind_param("isssiiisss", $emp_id, $type, $start_date, $end_date,$years,$months, $days, $reason, $companion, $created_at); if ($stmt->execute()) { echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم إضافة الإجازة بنجاح!', icon: 'success' }); </script>"; } else { echo "خطأ في إدخال البيانات: " . $stmt->error; } } ?> </div> </div> </div> </div> <!--------------------------------------------------------------------------------> <!------------------------------------Footer--------------------------------------> <!--------------------------------------------------------------------------------> <?php include('footer.php'); ?>
-
لدي موظفين كثر ايهم افضل استخدام برايك
- 17 اجابة
-
- 1
-
-
في صفحة اضافة اجازة اقصد هل افضل جلب جميع موظفين داخل تاق select واختيار موظف منه عن طريق استعمال مكتبة select2 javascript
- 17 اجابة
-
- 1
-
-
- 17 اجابة
-
- 1
-
-
بناء علي كود سابق هل حقول ادخال تكون كالصورة مرفقه
- 17 اجابة
-
- 2
-