« Back to History
quality_rate_manage.php
|
20260721_154033.php
Initial Bulk Import
Copy Code
<?php require_once __DIR__ . '/modules/auth/page_acl.php'; require_once __DIR__ . '/modules/activity/activity_logger.php'; $ctx = page_require_access('quality_rates_manage'); $pdo = $ctx['pdo']; $companyId = (int)$ctx['company_id']; $userId = (int)$ctx['user']['id']; function e($v){ return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8'); } if (session_status() === PHP_SESSION_NONE) { session_start(); } if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(16)); } $errors = []; $msg = ''; $editId = isset($_GET['id']) ? (int)$_GET['id'] : 0; $formQualityId = 0; $formRate = ''; /* ================= LOAD QUALITIES ================= */ $qStmt = $pdo->prepare(" SELECT id, quality_name FROM qualities WHERE company_id = :cid ORDER BY quality_name "); $qStmt->execute([':cid'=>$companyId]); $qualityRows = $qStmt->fetchAll(PDO::FETCH_ASSOC); /* ================= LOAD EDIT ================= */ if ($editId > 0) { $editStmt = $pdo->prepare(" SELECT quality_id, rate FROM quality_rates WHERE id = :id AND company_id = :cid LIMIT 1 "); $editStmt->execute([ ':id'=>$editId, ':cid'=>$companyId ]); if ($row = $editStmt->fetch(PDO::FETCH_ASSOC)) { $formQualityId = (int)$row['quality_id']; $formRate = $row['rate']; } } /* ================= HANDLE FORM ================= */ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) { die('CSRF mismatch'); } $editId = (int)($_POST['edit_id'] ?? 0); $qualityId = (int)($_POST['quality_id'] ?? 0); $rateValue = trim($_POST['rate'] ?? ''); if ($qualityId <= 0) { $errors[] = "Select quality"; } if (!is_numeric($rateValue)) { $errors[] = "Rate must be numeric"; } if (!$errors) { $now = date('Y-m-d H:i:s'); if ($editId > 0) { $upd = $pdo->prepare(" UPDATE quality_rates SET quality_id = :qid, rate = :rate, updated_at = :upd WHERE id = :id AND company_id = :cid "); $upd->execute([ ':qid'=>$qualityId, ':rate'=>$rateValue, ':upd'=>$now, ':id'=>$editId, ':cid'=>$companyId ]); activity_log([ 'company_id' => $companyId ?? 0, 'user_id' => $userId ?? ($_SESSION['user_id'] ?? 0), 'module' => 'quality', 'action_name' => 'edit', 'entity_type' => 'quality_rate', 'entity_id' => $editId ?? 0, 'remarks' => 'Quality rate updated' ]); $msg = "Updated successfully"; } else { $ins = $pdo->prepare(" INSERT INTO quality_rates (company_id, quality_id, quality_name, rate, created_by, created_at, updated_at) VALUES (:cid, :qid, (SELECT quality_name FROM qualities WHERE id=:qid2), :rate, :uid, :now, :now) "); $ins->execute([ ':cid'=>$companyId, ':qid'=>$qualityId, ':qid2'=>$qualityId, ':rate'=>$rateValue, ':uid'=>$userId, ':now'=>$now ]); activity_log([ 'company_id' => $companyId ?? 0, 'user_id' => $userId ?? ($_SESSION['user_id'] ?? 0), 'module' => 'quality', 'action_name' => 'create', 'entity_type' => 'quality_rate', 'entity_id' => (int)$pdo->lastInsertId(), 'remarks' => 'Quality rate created' ]); $msg = "Inserted successfully"; } $_SESSION['csrf_token'] = bin2hex(random_bytes(16)); $formQualityId = 0; $formRate = ''; } $formQualityId = $qualityId; $formRate = $rateValue; } /* ================= FETCH TABLE ================= */ $tableStmt = $pdo->prepare(" SELECT qr.id, q.quality_name, qr.rate FROM quality_rates qr JOIN qualities q ON q.id = qr.quality_id WHERE qr.company_id = :cid ORDER BY qr.id DESC "); $tableStmt->execute([':cid'=>$companyId]); $rateRows = $tableStmt->fetchAll(PDO::FETCH_ASSOC); require_once __DIR__ . '/partials/header.php'; ?> <div class="container py-4"> <div class="card mb-4"> <div class="card-header bg-primary text-white"> <h5 class="mb-0"><?php echo $editId ? 'Edit Rate' : 'Add Rate'; ?></h5> </div> <div class="card-body"> <?php if ($errors): ?> <div class="alert alert-danger"> <?php foreach($errors as $er) echo e($er)."<br>"; ?> </div> <?php endif; ?> <?php if ($msg): ?> <div class="alert alert-success"><?php echo e($msg); ?></div> <?php endif; ?> <form method="post" class="row g-3"> <input type="hidden" name="csrf_token" value="<?php echo e($_SESSION['csrf_token']); ?>"> <input type="hidden" name="edit_id" value="<?php echo $editId; ?>"> <div class="col-md-6"> <label class="form-label">Quality</label> <select name="quality_id" class="form-select"> <option value="0">Select</option> <?php foreach($qualityRows as $qr): ?> <option value="<?php echo $qr['id']; ?>" <?php if ($formQualityId == $qr['id']) echo 'selected'; ?>> <?php echo e($qr['quality_name']); ?> </option> <?php endforeach; ?> </select> </div> <div class="col-md-6"> <label class="form-label">Rate</label> <input type="text" name="rate" class="form-control" value="<?php echo e($formRate); ?>"> </div> <div class="col-12"> <button class="btn btn-primary"> <?php echo $editId ? 'Update' : 'Add'; ?> </button> <a href="quality_rate_manage.php" class="btn btn-secondary">Reset</a> </div> </form> </div> </div> <div class="card"> <div class="card-header"> <h6 class="mb-0">Existing Rates</h6> </div> <div class="table-responsive"> <table class="table table-bordered table-striped mb-0"> <thead> <tr> <th>ID</th> <th>Quality</th> <th>Rate</th> <th>Action</th> </tr> </thead> <tbody> <?php if ($rateRows): ?> <?php foreach($rateRows as $row): ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo e($row['quality_name']); ?></td> <td><?php echo e($row['rate']); ?></td> <td> <a href="?id=<?php echo $row['id']; ?>" class="btn btn-sm btn-warning">Edit</a> </td> </tr> <?php endforeach; ?> <?php else: ?> <tr> <td colspan="4" class="text-center text-muted">No Data</td> </tr> <?php endif; ?> </tbody> </table> </div> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>