Index: zinemaster-frontend/src/components/AllRequests.vue
===================================================================
--- zinemaster-frontend/src/components/AllRequests.vue	(revision ac4c6453f7e9b0f8ac4056aaf379e36bfd168269)
+++ zinemaster-frontend/src/components/AllRequests.vue	(revision 68db9c9529762f0bc5c578eac5f8effa8b840c61)
@@ -99,8 +99,17 @@
 
               <!--kopceto za odobruvanje i odbivanje-->
-              <div v-if="user.userType === 'ProductAdministrator' && req.status === 'pending' && req.username !== user.username" class="mt-2 d-flex gap-2" >
-                <button class="btn btn-sm btn-success" @click="updateStatus(req.id, 'approved')">Одобри</button>
-                <button class="btn btn-sm btn-danger" @click="updateStatus(req.id, 'rejected')">Одбиј</button>
+              <div v-if="user.userType === 'ProductAdministrator' && req.status === 'pending' && req.username !== user.username"
+                   class="mt-2 d-flex gap-2">
+                <button class="btn btn-sm btn-success"
+                        :disabled="!canProcess(req)"
+                        @click="updateStatus(req.id, 'approved')">Одобри</button>
+                <button class="btn btn-sm btn-danger"
+                        :disabled="!canProcess(req)"
+                        @click="updateStatus(req.id, 'rejected')">Одбиј</button>
               </div>
+              <p v-if="req.status==='pending' && !canProcess(req) && req.username !== user.username" class="text-muted small mt-1">
+                📌 Прво обработи ги најстарите нарачки.
+              </p>
+
 
             </div>
@@ -136,4 +145,6 @@
 const expandedRequests = ref([]);
 const userProfileImage = ref("https://www.gravatar.com/avatar/?d=mp");
+const toYMD = (d) => new Date(d).toISOString().split('T')[0];//za polesno sortiranje mora da go prefrlime datumot
+
 
 onMounted(async () => {
@@ -162,4 +173,22 @@
   localStorage.removeItem('user');
   router.push('/login');
+};
+
+const oldestPendingDateForOthers = computed(() => {
+  const others = allRequests.value.filter(
+      r => r.status === 'pending' && r.username !== user.value.username
+  );
+  if (others.length === 0) return null;
+  return others.map(r => toYMD(r.requestDate)).sort((a, b) => a.localeCompare(b))[0];//najstariot datum go zema
+});
+
+const canProcess = (req) => {
+  if (req.status !== 'pending') return true;
+
+  if (req.username === user.value.username) return false;
+
+  if (!oldestPendingDateForOthers.value) return false;
+
+  return toYMD(req.requestDate) === oldestPendingDateForOthers.value;//ako e najstariot datum ist so negoviot moze da go procesira
 };
 
@@ -265,4 +294,9 @@
 
     return statusMatch && userMatch && dateMatch;
+  }).sort((a, b) => {
+    const da = new Date(a.requestDate).getTime();
+    const db = new Date(b.requestDate).getTime();
+    if (da !== db) return da - db;
+    return String(a.id).localeCompare(String(b.id)); // za ako i datumie se isti
   });
 });
