Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/vhost/itms.arukustech.com/public/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/vhost/itms.arukustech.com/public/multi_assign.php
<?php
require_once __DIR__ . '/../app/db.php';
require_once __DIR__ . '/../app/helpers/auth.php';

auth();

if (!in_array($_SESSION['role'], ['admin', 'superadmin'])) {
    echo "Access Denied";
    exit;
}

$pdo = db();

/* FETCH USERS */
$users = $pdo->query("
    SELECT id, name, email 
    FROM users 
    WHERE status = 1 
    ORDER BY name ASC
")->fetchAll(PDO::FETCH_ASSOC);

/* FETCH ALL CATEGORIES */
$categories = $pdo->query("
    SELECT id, name 
    FROM inv_categories 
    ORDER BY name ASC
")->fetchAll(PDO::FETCH_ASSOC);

include __DIR__ . '/header.php';
?>

<!-- <div class="container mt-4"> -->
    <div class="main-content-inner px-4 py-3">

    <h3 class="fw-bold">Bulk Assign Inventory</h3>

    <!-- SUCCESS MESSAGE -->
    <?php if (isset($_GET['success'])): ?>
        <div class="alert alert-success mt-3">
            Items assigned successfully!
        </div>
    <?php endif; ?>

    <!-- ERROR MESSAGE -->
    <?php if (isset($_GET['error'])): ?>
        <div class="alert alert-danger mt-3">
            Something went wrong.
        </div>
    <?php endif; ?>

    <div class="card mt-3">
        <div class="card-body">

            <form action="/api/assign_bulk.php" method="POST">

                <!-- USER SECTION -->
                <div class="mb-3">
                    <label class="fw-bold">Select User *</label>
                    <select class="form-control" name="user_id" required>
                        <option value="">-- Select User --</option>
                        <?php foreach ($users as $u): ?>
                            <option value="<?= $u['id'] ?>">
                                <?= $u['name'] ?> (<?= $u['email'] ?>)
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

               
		
                 <!-- LOCATION SECTION -->
                <div class="row mt-3">

                    <!-- STATE -->
                    <div class="col-md-6 mb-3">
                        <label class="fw-bold">State *</label>
                        <select name="state" id="stateSelect" class="form-control" required>
                            <option value="">-- Select State --</option>
                        </select>
                    </div>

                    <!-- CITY -->
                    <div class="col-md-6 mb-3">
                        <label class="fw-bold">City *</label>
                        <select name="city" id="citySelect" class="form-control" required>
                            <option value="">-- Select City --</option>
                        </select>
                    </div>

                </div>

                <!-- CATEGORY DROPDOWN -->
                <label class="fw-bold">Category *</label>
                <select class="form-control mb-3" id="category">
                    <option value="">-- Select Category --</option>
                    <?php foreach ($categories as $c): ?>
                        <option value="<?= $c['id'] ?>"><?= $c['name'] ?></option>
                    <?php endforeach; ?>
                </select>

                <!-- BRAND DROPDOWN -->
                <label class="fw-bold">Brand</label>
                <select class="form-control mb-3" id="brand">
                    <option value="">-- Select Brand --</option>
                </select>

                <!-- MODEL DROPDOWN -->
                <label class="fw-bold">Model</label>
                <select class="form-control mb-3" id="model">
                    <option value="">-- Select Model --</option>
                </select>

                
                <!-- SEARCH BOX -->
                <input type="text" id="searchBox" class="form-control mb-3" placeholder="Search items...">

                <!-- SELECT ALL BUTTONS -->
                <div class="mb-2">
                    <button type="button" class="btn btn-sm btn-success" id="selectAll">Select All</button>
                    <button type="button" class="btn btn-sm btn-warning" id="unselectAll">Unselect All</button>
                </div>

                <!-- ITEMS LIST -->
                <label class="fw-bold">Select Items *</label>
                <div id="itemsList" class="border p-3 rounded" style="max-height:350px; overflow-y:auto;">
                    <div class="text-info">Select category to load items...</div>
                </div>

                <!-- REMARKS -->
                <div class="mt-3">
                    <label class="fw-bold">Remarks</label>
                    <textarea name="remarks" class="form-control" rows="3"></textarea>
                </div>

                <button class="btn btn-primary mt-3">Assign Selected Items</button>
                <a href="assigned_list.php" class="btn btn-secondary mt-3">View Assigned List</a>

            </form>

        </div>
    </div>
</div>

<?php include __DIR__ . '/footer.php'; ?>

<!-- ========================= AJAX SCRIPT ====================== -->

<script>
// Load Brands based on Category
document.getElementById("category").addEventListener("change", function () {
    let catId = this.value;

    document.getElementById("brand").innerHTML = '<option value="">Loading...</option>';
    document.getElementById("model").innerHTML = '<option value="">-- Select Model --</option>';
    document.getElementById("itemsList").innerHTML = '<div class="text-info">Loading items...</div>';

    fetch("/api/fetch_inventory_filters.php?category=" + catId)
        .then(res => res.json())
        .then(data => {
            // Brands
            let brandHTML = '<option value="">-- Select Brand --</option>';
            data.brands.forEach(b => {
                brandHTML += `<option value="${b.brand}">${b.brand}</option>`;
            });
            document.getElementById("brand").innerHTML = brandHTML;

            loadItems(); // Load items too
        });
});

// Load Models based on Brand
document.getElementById("brand").addEventListener("change", function () {
    let catId = document.getElementById("category").value;
    let brand = this.value;

    fetch(`/api/fetch_inventory_filters.php?category=${catId}&brand=${brand}`)
        .then(res => res.json())
        .then(data => {
            let modelHTML = '<option value="">-- Select Model --</option>';
            data.models.forEach(m => {
                modelHTML += `<option value="${m.model}">${m.model}</option>`;
            });
            document.getElementById("model").innerHTML = modelHTML;

            loadItems();
        });
});

// Load Items based on Category/Brand/Model
document.getElementById("model").addEventListener("change", loadItems);

// FUNCTION: Load Items List
function loadItems() {
    let cat = document.getElementById("category").value;
    let brand = document.getElementById("brand").value;
    let model = document.getElementById("model").value;

    fetch(`/api/fetch_inventory_items.php?category=${cat}&brand=${brand}&model=${model}`)
        .then(res => res.json())
        .then(data => {
            let html = "";

            if (data.items.length === 0) {
                html = '<div class="text-danger">No matching items found.</div>';
            } else {
                data.items.forEach(i => {
                    html += `
                        <div class="form-check mb-1">
                            <input type="checkbox" class="form-check-input item-check" name="item_ids[]" value="${i.id}">
                            <label class="form-check-label">${i.item_name} (${i.model} - ${i.serial_no})</label>
                        </div>`;
                });
            }

            document.getElementById("itemsList").innerHTML = html;
        });
}

// SEARCH FILTER
document.getElementById("searchBox").addEventListener("keyup", function () {
    let text = this.value.toLowerCase();
    document.querySelectorAll("#itemsList label").forEach(label => {
        if (label.innerText.toLowerCase().includes(text)) {
            label.parentElement.style.display = "";
        } else {
            label.parentElement.style.display = "none";
        }
    });
});

// SELECT ALL
document.getElementById("selectAll").onclick = function () {
    document.querySelectorAll(".item-check").forEach(cb => cb.checked = true);
};

// UNSELECT ALL
document.getElementById("unselectAll").onclick = function () {
    document.querySelectorAll(".item-check").forEach(cb => cb.checked = false);
};
</script>
<script>
// INDIA STATES & CITIES (can be expanded later)
const INDIA_LOCATIONS = {
    "Andhra Pradesh": ["Visakhapatnam", "Vijayawada", "Guntur", "Tirupati", "Nellore", "Kurnool", "Rajahmundry", "Eluru", "Kadapa"],
  "Arunachal Pradesh": ["Itanagar", "Naharlagun", "Pasighat", "Tawang"],
  "Assam": ["Guwahati", "Dibrugarh", "Silchar", "Jorhat", "Tezpur", "Nagaon", "Tinsukia"],
  "Bihar": ["Patna", "Gaya", "Bhagalpur", "Muzaffarpur", "Darbhanga", "Purnia", "Ara", "Begusarai"],
  "Chhattisgarh": ["Raipur", "Bilaspur", "Durg", "Bhilai", "Korba", "Raigarh", "Jagdalpur"],
  "Goa": ["Panaji", "Margao", "Vasco da Gama", "Mapusa", "Ponda"],
  "Gujarat": ["Ahmedabad", "Surat", "Vadodara", "Rajkot", "Bhavnagar", "Jamnagar", "Junagadh", "Anand", "Gandhinagar"],
  "Haryana": ["Gurgaon", "Faridabad", "Panipat", "Ambala", "Yamunanagar", "Rohtak", "Hisar", "Karnal"],
  "Himachal Pradesh": ["Shimla", "Solan", "Dharamshala", "Mandi", "Una", "Hamirpur", "Bilaspur"],
  "Jharkhand": ["Ranchi", "Jamshedpur", "Dhanbad", "Bokaro", "Deoghar", "Hazaribagh", "Giridih"],
  "Karnataka": ["Bengaluru", "Mysuru", "Mangaluru", "Hubli", "Dharwad", "Belagavi", "Ballari", "Shivamogga", "Tumakuru", "Udupi"],
  "Kerala": ["Kochi", "Thiruvananthapuram", "Kozhikode", "Thrissur", "Palakkad", "Alappuzha", "Kollam", "Kannur", "Kottayam"],
  "Madhya Pradesh": ["Bhopal", "Indore", "Jabalpur", "Gwalior", "Ujjain", "Sagar", "Satna", "Rewa", "Chhindwara", "Dewas"],
  "Maharashtra": ["Mumbai", "Pune", "Nagpur", "Nashik", "Thane", "Navi Mumbai", "Aurangabad", "Solapur", "Kolhapur", "Amravati", "Jalgaon"],
  "Manipur": ["Imphal", "Thoubal", "Churachandpur"],
  "Meghalaya": ["Shillong", "Tura", "Jowai", "Nongstoin"],
  "Mizoram": ["Aizawl", "Lunglei", "Champhai"],
  "Nagaland": ["Kohima", "Dimapur", "Mokokchung", "Tuensang"],
  "Odisha": ["Bhubaneswar", "Cuttack", "Rourkela", "Sambalpur", "Berhampur", "Balasore", "Baripada", "Jharsuguda"],
  "Punjab": ["Chandigarh", "Ludhiana", "Amritsar", "Jalandhar", "Patiala", "Bathinda", "Hoshiarpur", "Moga"],
  "Rajasthan": ["Jaipur", "Jodhpur", "Udaipur", "Kota", "Ajmer", "Bikaner", "Alwar", "Bhilwara", "Sikar"],
  "Sikkim": ["Gangtok", "Namchi", "Gyalshing", "Mangan"],
  "Tamil Nadu": ["Chennai", "Coimbatore", "Madurai", "Salem", "Tiruchirappalli", "Tirunelveli", "Erode", "Vellore", "Thoothukudi", "Kanchipuram"],
  "Telangana": ["Hyderabad", "Warangal", "Nizamabad", "Karimnagar", "Khammam", "Ramagundam", "Mahbubnagar"],
  "Tripura": ["Agartala", "Udaipur", "Dharmanagar"],
  "Uttar Pradesh": ["Lucknow", "Noida", "Ghaziabad", "Kanpur", "Varanasi", "Agra", "Meerut", "Prayagraj", "Bareilly", "Aligarh", "Moradabad"],
  "Uttarakhand": ["Dehradun", "Haridwar", "Roorkee", "Haldwani", "Rudrapur", "Nainital"],
  "West Bengal": ["Kolkata", "Howrah", "Durgapur", "Asansol", "Siliguri", "Bardhaman", "Malda", "Kharagpur"],

  "Andaman and Nicobar Islands": ["Port Blair"],
  "Chandigarh": ["Chandigarh"],
  "Dadra and Nagar Haveli and Daman and Diu": ["Daman", "Silvassa", "Diu"],
  "Delhi": ["New Delhi", "Dwarka", "Rohini", "Saket", "Karol Bagh"],
  "Jammu and Kashmir": ["Srinagar", "Jammu", "Anantnag", "Baramulla"],
  "Ladakh": ["Leh", "Kargil"],
  "Lakshadweep": ["Kavaratti"],
  "Puducherry": ["Puducherry", "Karaikal", "Mahe", "Yanam"]

};

const stateSelect = document.getElementById("stateSelect");
const citySelect  = document.getElementById("citySelect");

// Populate states
for (let state in INDIA_LOCATIONS) {
    stateSelect.innerHTML += `<option value="${state}">${state}</option>`;
}

// Load cities when state changes
stateSelect.addEventListener("change", function () {
    citySelect.innerHTML = '<option value="">-- Select City --</option>';
    if (!this.value) return;

    INDIA_LOCATIONS[this.value].forEach(city => {
        citySelect.innerHTML += `<option value="${city}">${city}</option>`;
    });
});
</script>

Youez - 2016 - github.com/yon3zu
LinuXploit