« Back to History
beam_life_cycle_edit_old.php
|
20260721_154032.php
Initial Bulk Import
Copy Code
<?php error_reporting(E_ALL); ini_set('display_errors', 1); require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('beam_life_cycle_edit'); $pdo = $ctx['pdo']; $company_id = (int)$ctx['company_id']; require_once __DIR__ . '/helpers/beam_life_helpers.php'; require_once __DIR__ . '/helpers/activity_helper.php'; function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } $beam_no = (int)($_GET['beam_no'] ?? 0); if ($beam_no <= 0) { die('Invalid Beam No'); } /* ================= LOAD ================= */ $stmt = $pdo->prepare(" SELECT life_events FROM beam_life_cycle WHERE company_id=? AND beam_no=? "); $stmt->execute([$company_id, $beam_no]); $events = json_decode($stmt->fetchColumn(), true); if (!is_array($events)) $events = []; /* ================= SAVE ================= */ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $pdo->beginTransaction(); try { $new_events = []; foreach ($_POST['events'] as $e) { if (!empty($e['_delete'])) continue; if (empty($e['machine_no']) || empty($e['action'])) continue; $row = [ 'machine_no' => (string)$e['machine_no'], 'machine_id' => (string)$e['machine_no'], 'slot' => $e['slot'], // FIXED 'load_date' => $e['load_date'], 'action' => $e['action'], ]; if ($e['action'] === 'cut' && !empty($e['cut_date'])) { $row['cut_date'] = $e['cut_date']; } if ($e['action'] === 'finish' && !empty($e['finish_date'])) { $row['finish_date'] = $e['finish_date']; } $new_events[] = $row; } // 1️⃣ master update $pdo->prepare(" UPDATE beam_life_cycle SET life_events=? WHERE company_id=? AND beam_no=? ")->execute([ json_encode($new_events, JSON_UNESCAPED_SLASHES), $company_id, $beam_no ]); // 2️⃣ rebuild derived tables rebuild_machine_beam_status($pdo, $company_id, $beam_no, $new_events); $pdo->commit(); activity_update('beam', 'beam_life_cycle_edit_update', $beam_no, 'Updated beam life cycle'); header("Location: beam_life_cycle_edit.php?beam_no={$beam_no}&ok=1"); exit; } catch (Throwable $e) { $pdo->rollBack(); throw $e; } } /* ================= PAGE ================= */ $page_title = "Edit Beam Lifecycle – Beam {$beam_no}"; require_once __DIR__ . '/partials/header.php'; ?> <div class="wrap"> <h2>Beam Lifecycle – Beam <?=h($beam_no)?></h2> <?php if (isset($_GET['ok'])): ?> <div class="notice notice--success">Lifecycle updated successfully</div> <?php endif; ?> <form method="post"> <button type="button" class="btn btn--sm" id="addEventBtn"> + Add Event </button> <?php foreach ($events as $i => $e): ?> <div class="card" style="margin-bottom:12px"> <div class="form-grid form-cols-4"> <div> <label>Machine No</label> <input name="events[<?= $i ?>][machine_no]" value="<?=h($e['machine_no'])?>"> </div> <div> <label>Slot</label> <input value="<?=h($e['slot'])?>" disabled> <input type="hidden" name="events[<?= $i ?>][slot]" value="<?=h($e['slot'])?>"> </div> <div> <label>Load Date</label> <input type="date" name="events[<?= $i ?>][load_date]" value="<?=h($e['load_date'] ?? '')?>"> </div> <div> <label>Action</label> <select name="events[<?= $i ?>][action]"> <option value="running" <?=($e['action']=='running'?'selected':'')?>>Running</option> <option value="cut" <?=($e['action']=='cut'?'selected':'')?>>Cut</option> <option value="finish" <?=($e['action']=='finish'?'selected':'')?>>Finish</option> </select> </div> <div> <label>Cut Date</label> <input type="date" name="events[<?= $i ?>][cut_date]" value="<?=h($e['cut_date'] ?? '')?>"> </div> <div> <label>Finish Date</label> <input type="date" name="events[<?= $i ?>][finish_date]" value="<?=h($e['finish_date'] ?? '')?>"> </div> </div> <label style="margin-top:6px;display:block"> <input type="checkbox" name="events[<?= $i ?>][_delete]"> Delete this event </label> </div> <?php endforeach; ?> <button class="btn">Save Changes</button> <div id="eventTemplate" style="display:none"> <div class="card" style="margin-bottom:12px"> <div class="form-grid form-cols-4"> <div> <label>Machine No</label> <input name="__IDX__[machine_no]"> </div> <div> <label>Slot</label> <input value="<?=h($events[0]['slot'] ?? 'primary')?>" disabled> <input type="hidden" name="__IDX__[slot]" value="<?=h($events[0]['slot'] ?? 'primary')?>"> </div> <div> <label>Load Date</label> <input type="date" name="__IDX__[load_date]"> </div> <div> <label>Action</label> <select name="__IDX__[action]"> <option value="running">Running</option> <option value="cut">Cut</option> <option value="finish">Finish</option> </select> </div> <div> <label>Cut Date</label> <input type="date" name="__IDX__[cut_date]"> </div> <div> <label>Finish Date</label> <input type="date" name="__IDX__[finish_date]"> </div> </div> <label style="margin-top:6px;display:block"> <input type="checkbox" name="__IDX__[_delete]"> Delete this event </label> </div> </div> </form> </div> <script> (function(){ let idx = <?=count($events)?>; document.getElementById('addEventBtn').onclick = function(){ const tpl = document.getElementById('eventTemplate').innerHTML; const html = tpl.replace(/__IDX__/g, 'events[' + idx + ']'); const wrap = document.createElement('div'); wrap.innerHTML = html; document.querySelector('form').insertBefore( wrap, document.querySelector('form button.btn:last-of-type') ); idx++; }; })(); </script> <?php require_once __DIR__ . '/partials/footer.php'; ?>