57 Commits

Author SHA1 Message Date
026e4982b8 Merge pull request 'Added item characteristics migration file' (#29) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #29
2025-12-22 11:45:27 +00:00
dhanabalan
c2eb18da50 Added item characteristics migration file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 20s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m36s
Laravel Pint / pint (pull_request) Failing after 2m51s
2025-12-22 17:15:14 +05:30
6478bc3722 Merge pull request 'Added sticker detail policy file' (#28) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #28
2025-12-22 11:43:41 +00:00
dhanabalan
37a1e9a7f3 Added sticker detail policy file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 13s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 23s
Laravel Pint / pint (pull_request) Failing after 2m17s
Laravel Larastan / larastan (pull_request) Failing after 2m38s
2025-12-22 17:13:28 +05:30
1ab7ed2da9 Merge pull request 'Added sticker deatil importer and exporter' (#27) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #27
2025-12-22 11:41:57 +00:00
dhanabalan
de17349372 Added sticker deatil importer and exporter
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 13s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 18s
Laravel Larastan / larastan (pull_request) Failing after 2m17s
Laravel Pint / pint (pull_request) Failing after 2m15s
2025-12-22 17:11:48 +05:30
9ecd04f0e3 Merge pull request 'Added sticker detail resource page' (#26) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #26
2025-12-22 11:41:04 +00:00
dhanabalan
834c643c57 Added sticker detail resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 22s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Pint / pint (pull_request) Failing after 2m17s
Laravel Larastan / larastan (pull_request) Failing after 2m29s
2025-12-22 17:10:53 +05:30
53179ea538 Merge pull request 'Added sticker detail model file' (#25) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #25
2025-12-22 11:39:46 +00:00
dhanabalan
5612fc6ceb Added sticker detail model file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 18s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m21s
Laravel Pint / pint (pull_request) Failing after 2m40s
2025-12-22 17:09:36 +05:30
b4e24c581e Merge pull request 'Added sticker details migration file' (#24) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #24
2025-12-22 11:38:28 +00:00
dhanabalan
b2887fbc9c Added sticker details migration file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 18s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Larastan / larastan (pull_request) Failing after 13m18s
Laravel Pint / pint (pull_request) Failing after 13m22s
2025-12-22 17:08:14 +05:30
4938fa62a7 Merge pull request 'Added sticker structure policy file' (#23) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #23
2025-12-22 11:34:44 +00:00
dhanabalan
eeddd5da77 Added sticker structure policy file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 17s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Larastan / larastan (pull_request) Failing after 2m25s
Laravel Pint / pint (pull_request) Failing after 2m20s
2025-12-22 17:04:31 +05:30
01f6288c63 Merge pull request 'Added importer and exporter of sticker structure detail' (#22) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #22
2025-12-22 11:33:09 +00:00
dhanabalan
ad8192a83f Added importer and exporter of sticker structure detail
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 14s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 20s
Laravel Pint / pint (pull_request) Failing after 2m11s
Laravel Larastan / larastan (pull_request) Failing after 6m51s
2025-12-22 17:02:58 +05:30
c9c7c38088 Merge pull request 'Added sticker structure detail resource pages' (#21) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #21
2025-12-22 11:32:08 +00:00
dhanabalan
31bc4a7fd0 Added sticker structure detail resource pages
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 18s
Laravel Larastan / larastan (pull_request) Failing after 2m16s
Laravel Pint / pint (pull_request) Failing after 2m14s
2025-12-22 17:01:57 +05:30
90cfe9ef0d Merge pull request 'Added sticker structure detail model file' (#20) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #20
2025-12-22 11:30:56 +00:00
dhanabalan
2b52a6e542 Added sticker structure detail model file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Successful in 19s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Larastan / larastan (pull_request) Failing after 2m21s
Laravel Pint / pint (pull_request) Failing after 2m19s
2025-12-22 17:00:46 +05:30
aa806f2fe3 Merge pull request 'Added sticker structure detail migration file' (#19) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #19
2025-12-22 11:30:11 +00:00
dhanabalan
15374002f1 Added sticker structure detail migration file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 20s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 30s
Laravel Larastan / larastan (pull_request) Failing after 2m16s
Laravel Pint / pint (pull_request) Failing after 2m23s
2025-12-22 16:59:53 +05:30
0eb6f76ca6 Merge pull request 'Enhance Gemini review step to handle errors and provide feedback on review status' (#18) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Reviewed-on: #18
2025-12-18 06:34:16 +00:00
dhanabalan
0ef8ba73cc Enhance Gemini review step to handle errors and provide feedback on review status
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Pint / pint (pull_request) Has been cancelled
Laravel Larastan / larastan (pull_request) Failing after 2m23s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 17s
2025-12-18 12:04:03 +05:30
73366ccd70 Merge pull request 'Update Gemini review step to use gemini-pro model for code analysis' (#17) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #17
2025-12-18 06:31:07 +00:00
dhanabalan
8446282856 Update Gemini review step to use gemini-pro model for code analysis
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 17s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Has been cancelled
Laravel Pint / pint (pull_request) Has been cancelled
2025-12-18 12:00:51 +05:30
acbecedce9 Merge pull request 'Update Gemini review step to use gemini-1.5-flash model for code analysis' (#16) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #16
2025-12-18 06:28:15 +00:00
dhanabalan
cac8cdd7ce Update Gemini review step to use gemini-1.5-flash model for code analysis
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 12s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 18s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m23s
Laravel Pint / pint (pull_request) Failing after 2m22s
2025-12-18 11:58:03 +05:30
614d89932b Merge pull request 'Update Gemini review step to use GPT-5-mini model for code analysis' (#15) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #15
2025-12-18 06:26:56 +00:00
dhanabalan
2a7db20796 Update Gemini review step to use GPT-5-mini model for code analysis
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 16s
Laravel Larastan / larastan (pull_request) Failing after 2m36s
Laravel Pint / pint (pull_request) Failing after 2m33s
2025-12-18 11:56:41 +05:30
c839c6fdbc Merge pull request 'Remove unnecessary blank line in Gemini PR Review workflow' (#14) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Reviewed-on: #14
2025-12-18 05:16:54 +00:00
dhanabalan
08aaccf1b8 Remove unnecessary blank line in Gemini PR Review workflow
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Laravel Pint / pint (pull_request) Failing after 2m9s
Laravel Larastan / larastan (pull_request) Failing after 2m19s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 18s
2025-12-18 10:46:34 +05:30
d9445a9d4b Merge pull request 'Refactor Gemini PR Review workflow' (#13) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Reviewed-on: #13
2025-12-18 04:48:44 +00:00
dhanabalan
6f77f8ecbc Refactor Gemini PR Review workflow
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 13s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 21s
Laravel Larastan / larastan (pull_request) Failing after 2m26s
Laravel Pint / pint (pull_request) Failing after 4m8s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 19s
2025-12-18 10:18:14 +05:30
50476c8a2c Merge pull request 'Added nav group name in ocr validation resource page' (#12) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Reviewed-on: #12
2025-12-17 06:22:14 +00:00
dhanabalan
7f55378541 Added nav group name in ocr validation resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Gemini PR Review / review (pull_request) Failing after 22s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m46s
Laravel Pint / pint (pull_request) Failing after 2m44s
2025-12-17 11:52:01 +05:30
c57cfe71ca Merge pull request 'Added nav group for web capture page' (#11) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #11
2025-12-17 06:21:40 +00:00
dhanabalan
9040f094c1 Added nav group for web capture page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / review (pull_request) Failing after 22s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m22s
Laravel Pint / pint (pull_request) Failing after 2m39s
2025-12-17 11:51:29 +05:30
96c08c34c1 Merge pull request 'Added nav group in reject reason resource page' (#10) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #10
2025-12-17 06:20:01 +00:00
dhanabalan
ec98c9b2ce Added nav group in reject reason resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / review (pull_request) Failing after 25s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 9s
Laravel Pint / pint (pull_request) Failing after 2m30s
Laravel Larastan / larastan (pull_request) Failing after 2m57s
2025-12-17 11:49:50 +05:30
19cf7c8edd Merge pull request 'Added nav group for production reject reason resource page' (#9) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #9
2025-12-17 06:19:03 +00:00
dhanabalan
acf326c6ca Added nav group for production reject reason resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / review (pull_request) Failing after 21s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m20s
Laravel Pint / pint (pull_request) Failing after 2m40s
2025-12-17 11:48:52 +05:30
66086dd2d7 Merge pull request 'Added nav group in product characteristics resource page' (#8) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #8
2025-12-17 06:16:38 +00:00
dhanabalan
e082d5bb49 Added nav group in product characteristics resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / review (pull_request) Failing after 24s
Laravel Larastan / larastan (pull_request) Failing after 2m34s
Laravel Pint / pint (pull_request) Failing after 2m37s
2025-12-17 11:46:28 +05:30
5da724c9a4 Merge pull request 'Added nav group in gr master resource page' (#7) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #7
2025-12-17 06:15:52 +00:00
dhanabalan
e6276378f8 Added nav group in gr master resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Gemini PR Review / review (pull_request) Failing after 28s
Laravel Larastan / larastan (pull_request) Failing after 2m35s
Laravel Pint / pint (pull_request) Failing after 2m21s
2025-12-17 11:45:41 +05:30
6b723c0929 Merge pull request 'Added navigation sort for sticker mapping resource page' (#6) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #6
2025-12-17 06:13:44 +00:00
dhanabalan
71e8c29801 Added navigation sort for sticker mapping resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / review (pull_request) Failing after 25s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Pint / pint (pull_request) Failing after 2m28s
Laravel Larastan / larastan (pull_request) Failing after 2m35s
2025-12-17 11:43:32 +05:30
8e20d0732d Merge pull request 'Added nav group for sticker printing resource page' (#5) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #5
2025-12-17 06:11:56 +00:00
dhanabalan
2524ad4620 Added nav group for sticker printing resource page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / review (pull_request) Failing after 22s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 9m22s
Laravel Pint / pint (pull_request) Failing after 8m54s
2025-12-17 11:41:43 +05:30
1d8fb1c9aa Merge pull request 'Added nav group for sticker master mapping resource' (#4) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #4
2025-12-17 06:11:07 +00:00
dhanabalan
a85faafe90 Added nav group for sticker master mapping resource
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 9s
Gemini PR Review / review (pull_request) Failing after 23s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Laravel Larastan / larastan (pull_request) Failing after 2m20s
Laravel Pint / pint (pull_request) Failing after 3m17s
2025-12-17 11:40:53 +05:30
33bbce47ba Merge pull request 'Added navigation group for class characteristics' (#3) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Reviewed-on: #3
2025-12-17 06:08:01 +00:00
dhanabalan
03033c2365 Added navigation group for class characteristics
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 9s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / review (pull_request) Failing after 25s
Laravel Larastan / larastan (pull_request) Failing after 2m53s
Laravel Pint / pint (pull_request) Failing after 3m50s
2025-12-17 11:36:58 +05:30
860ff96134 Merge pull request 'Added driver master migration file' (#2) from fix-migration into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Reviewed-on: #2
2025-12-17 03:52:20 +00:00
dhanabalan
31a4e10158 Added driver master migration file
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / review (pull_request) Failing after 30s
Laravel Pint / pint (pull_request) Failing after 2m19s
Laravel Larastan / larastan (pull_request) Failing after 2m58s
2025-12-17 09:20:03 +05:30
f12856f1a3 Merge pull request 'revert-fix' (#1) from revert-fix into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Reviewed-on: #1
2025-12-16 12:26:25 +00:00
32 changed files with 1525 additions and 9 deletions

View File

@@ -1,19 +1,23 @@
# Filename: .github/workflows/gemini-pr-review.yaml # Filename: .github/workflows/gemini-pr-review.yaml
name: Gemini PR Review name: Gemini PR Review
on: on:
pull_request: pull_request:
types: [opened, reopened, synchronize] types: [opened, reopened, synchronize]
workflow_dispatch: workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
review: gemini-pr-review:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: Gemini PR Review
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v5 uses: actions/checkout@v6
with: with:
fetch-depth: 0 # This fetches the full history fetch-depth: 0 # This fetches the full history
@@ -22,7 +26,6 @@ jobs:
with: with:
node-version: '24' node-version: '24'
- name: Get npm cache directory - name: Get npm cache directory
id: npm-cache-dir id: npm-cache-dir
run: | run: |
@@ -36,8 +39,14 @@ jobs:
restore-keys: | restore-keys: |
${{ runner.os }}-npm-global- ${{ runner.os }}-npm-global-
- name: Install Gemini CLI globally - name: Install Gemini CLI globally (if not already installed)
run: npm install -g --loglevel=http @google/gemini-cli run: |
if ! command -v gemini &> /dev/null; then
echo "Gemini CLI not found, installing..."
npm install -g --loglevel=http @google/gemini-cli
else
echo "Gemini CLI already installed."
fi
- name: Generate git diff and review with Gemini - name: Generate git diff and review with Gemini
id: review id: review
@@ -48,11 +57,17 @@ jobs:
git diff "${{ gitea.event.pull_request.base.sha }}...${{ gitea.event.pull_request.head.sha }}" > pr.diff git diff "${{ gitea.event.pull_request.base.sha }}...${{ gitea.event.pull_request.head.sha }}" > pr.diff
echo "Performing code review with Gemini..." echo "Performing code review with Gemini..."
cat .github/workflows/gemini-pr-review.md pr.diff | gemini > /tmp/gemini-output.txt if cat .github/workflows/gemini-pr-review.md pr.diff | gemini --model=gemini-pro > /tmp/gemini-output.txt; then
echo "Gemini review completed."
else
echo "⚠️ Gemini review failed (quota / API issue)." > /tmp/gemini-output.txt
echo "" >> /tmp/gemini-output.txt
echo "Check logs for details." >> /tmp/gemini-output.txt
fi
echo "Gemini error logs (if any):"
cat /tmp/gemini-client-error*.json || true cat /tmp/gemini-client-error*.json || true
- name: Post output to PR comment - name: Post output to PR comment
id: post_comment id: post_comment
run: | run: |

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Filament\Exports;
use App\Models\StickerDetail;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;
class StickerDetailExporter extends Exporter
{
protected static ?string $model = StickerDetail::class;
public static function getColumns(): array
{
static $rowNumber = 0;
return [
ExportColumn::make('no')
->label('NO')
->state(function ($record) use (&$rowNumber) {
// Increment and return the row number
return ++$rowNumber;
}),
ExportColumn::make('stickerStructureDetail.sticker_id')
->label('STICKER ID'),
ExportColumn::make('design_element_type')
->label('DESIGN ELEMENT TYPE'),
ExportColumn::make('element_id')
->label('ELEMENT ID'),
ExportColumn::make('element_type')
->label('ELEMENT TYPE'),
ExportColumn::make('string_value')
->label('STRING VALUE'),
ExportColumn::make('string_font')
->label('STRING FONT'),
ExportColumn::make('string_size')
->label('STRING SIZE'),
ExportColumn::make('element_colour')
->label('ELEMENT COLOUR'),
ExportColumn::make('string_align')
->label('STRING ALIGN'),
ExportColumn::make('string_x_value')
->label('STRING X VALUE'),
ExportColumn::make('string_y_value')
->label('STRING Y VALUE'),
ExportColumn::make('shape_name')
->label('SHAPE NAME'),
ExportColumn::make('shape_pen_size')
->label('SHAPE PEN SIZE'),
ExportColumn::make('shape_x1_value')
->label('SHAPE X1 VALUE'),
ExportColumn::make('shape_y1_value')
->label('SHAPE Y1 VALUE'),
ExportColumn::make('shape_x2_value')
->label('SHAPE X2 VALUE'),
ExportColumn::make('shape_y2_value')
->label('SHAPE Y2 VALUE'),
ExportColumn::make('image_path')
->label('IMAGE PATH'),
ExportColumn::make('image_type')
->label('IMAGE TYPE'),
ExportColumn::make('image_x')
->label('IMAGE X'),
ExportColumn::make('image_y')
->label('IMAGE Y'),
ExportColumn::make('image_width')
->label('IMAGE WIDTH'),
ExportColumn::make('image_height')
->label('IMAGE HEIGHT'),
ExportColumn::make('qr_value')
->label('QR VALUE'),
ExportColumn::make('qr_align')
->label('QR ALIGN'),
ExportColumn::make('qr_size')
->label('QR SIZE'),
ExportColumn::make('qr_x_value')
->label('QR X VALUE'),
ExportColumn::make('qr_y_value')
->label('QR Y VALUE'),
ExportColumn::make('created_at')
->label('CREATED AT'),
ExportColumn::make('updated_at')
->label('UPDATED AT'),
ExportColumn::make('created_by')
->label('CREATED BY'),
ExportColumn::make('deleted_at')
->label('DELETED AT')
->enabledByDefault(false),
];
}
public static function getCompletedNotificationBody(Export $export): string
{
$body = 'Your sticker detail export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.';
if ($failedRowsCount = $export->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.';
}
return $body;
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Filament\Exports;
use App\Models\StickerStructureDetail;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;
class StickerStructureDetailExporter extends Exporter
{
protected static ?string $model = StickerStructureDetail::class;
public static function getColumns(): array
{
return [
ExportColumn::make('id')
->label('ID'),
ExportColumn::make('sticker_id'),
ExportColumn::make('sticker_width'),
ExportColumn::make('sticker_height'),
ExportColumn::make('sticker_lmargin'),
ExportColumn::make('sticker_rmargin'),
ExportColumn::make('sticker_tmargin'),
ExportColumn::make('sticker_bmargin'),
ExportColumn::make('created_at'),
ExportColumn::make('updated_at'),
ExportColumn::make('created_by'),
ExportColumn::make('updated_by'),
ExportColumn::make('deleted_at'),
];
}
public static function getCompletedNotificationBody(Export $export): string
{
$body = 'Your sticker structure detail export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.';
if ($failedRowsCount = $export->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.';
}
return $body;
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Filament\Imports;
use App\Models\StickerDetail;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
class StickerDetailImporter extends Importer
{
protected static ?string $model = StickerDetail::class;
public static function getColumns(): array
{
return [
ImportColumn::make('stickerStructureDetail')
->requiredMapping()
->relationship()
->rules(['required']),
ImportColumn::make('design_element_type'),
ImportColumn::make('element_id'),
ImportColumn::make('element_type'),
ImportColumn::make('string_value'),
ImportColumn::make('string_font'),
ImportColumn::make('string_size'),
ImportColumn::make('element_colour'),
ImportColumn::make('string_align'),
ImportColumn::make('string_x_value'),
ImportColumn::make('string_y_value'),
ImportColumn::make('shape_name'),
ImportColumn::make('shape_pen_size'),
ImportColumn::make('shape_x1_value'),
ImportColumn::make('shape_y1_value'),
ImportColumn::make('shape_x2_value'),
ImportColumn::make('shape_y2_value'),
ImportColumn::make('image_path'),
ImportColumn::make('image_type'),
ImportColumn::make('image_x'),
ImportColumn::make('image_y'),
ImportColumn::make('image_width'),
ImportColumn::make('image_height'),
ImportColumn::make('qr_value'),
ImportColumn::make('qr_align'),
ImportColumn::make('qr_size'),
ImportColumn::make('qr_x_value'),
ImportColumn::make('qr_y_value'),
ImportColumn::make('created_by'),
ImportColumn::make('updated_by'),
];
}
public function resolveRecord(): ?StickerDetail
{
// return StickerDetail::firstOrNew([
// // Update existing records, matching them by `$this->data['column_name']`
// 'email' => $this->data['email'],
// ]);
return new StickerDetail();
}
public static function getCompletedNotificationBody(Import $import): string
{
$body = 'Your sticker detail import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.';
if ($failedRowsCount = $import->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.';
}
return $body;
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Filament\Imports;
use App\Models\StickerStructureDetail;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
class StickerStructureDetailImporter extends Importer
{
protected static ?string $model = StickerStructureDetail::class;
public static function getColumns(): array
{
return [
ImportColumn::make('sticker_id'),
ImportColumn::make('sticker_width'),
ImportColumn::make('sticker_height'),
ImportColumn::make('sticker_lmargin'),
ImportColumn::make('sticker_rmargin'),
ImportColumn::make('sticker_tmargin'),
ImportColumn::make('sticker_bmargin'),
ImportColumn::make('created_by'),
ImportColumn::make('updated_by'),
];
}
public function resolveRecord(): ?StickerStructureDetail
{
// return StickerStructureDetail::firstOrNew([
// // Update existing records, matching them by `$this->data['column_name']`
// 'email' => $this->data['email'],
// ]);
return new StickerStructureDetail();
}
public static function getCompletedNotificationBody(Import $import): string
{
$body = 'Your sticker structure detail import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.';
if ($failedRowsCount = $import->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.';
}
return $body;
}
}

View File

@@ -26,6 +26,8 @@ class ProductionRejectReason extends Page
{ {
protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static ?string $navigationIcon = 'heroicon-o-document-text';
protected static ?string $navigationGroup = 'Production Reject';
protected static string $view = 'filament.pages.production-reject-reason'; protected static string $view = 'filament.pages.production-reject-reason';
public $qrData, $pId, $bId, $sId, $lId, $iId, $succId, $sNoId, $succStat, $recQr, $prodOrder; public $qrData, $pId, $bId, $sId, $lId, $iId, $succId, $sNoId, $succStat, $recQr, $prodOrder;

View File

@@ -35,6 +35,8 @@ class WebcamCapture extends Page implements HasForms
use HasFiltersForm; use HasFiltersForm;
protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static ?string $navigationIcon = 'heroicon-o-document-text';
protected static ?string $navigationGroup = 'OCR Validations';
protected static string $view = 'filament.pages.webcam-capture'; protected static string $view = 'filament.pages.webcam-capture';
public $photo; public $photo;

View File

@@ -25,6 +25,8 @@ class ClassCharacteristicResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Laser';
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -39,6 +39,8 @@ class GrMasterResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Process Order';
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -32,6 +32,8 @@ class OcrValidationResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'OCR Validations';
public $camera_capture; public $camera_capture;
public $serialNumbers = []; public $serialNumbers = [];

View File

@@ -29,6 +29,8 @@ class ProductCharacteristicsMasterResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Process Order';
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -36,6 +36,8 @@ class RejectReasonResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Production Reject';
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -0,0 +1,293 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Exports\StickerDetailExporter;
use App\Filament\Imports\StickerDetailImporter;
use App\Filament\Resources\StickerDetailResource\Pages;
use App\Filament\Resources\StickerDetailResource\RelationManagers;
use App\Models\StickerDetail;
use App\Models\StickerStructureDetail;
use Filament\Tables\Actions\ExportAction;
use Filament\Tables\Actions\ImportAction;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class StickerDetailResource extends Resource
{
protected static ?string $model = StickerDetail::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Customized Sticker Printing';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\Select::make('sticker_structure_detail_id')
->label('Sticker ID')
->relationship('stickerStructureDetail', 'sticker_id')
->options(function (callable $get) {
return StickerStructureDetail::pluck('sticker_id', 'id');
})
->required(),
Forms\Components\Select::make('design_element_type')
->label('Design Element Type')
->options([
'Text' => 'Text',
'Shape' => 'Shape',
'Image' => 'Image',
'QR' => 'QR',
]),
Forms\Components\TextInput::make('element_id')
->label('Element ID'),
Forms\Components\Select::make('element_type')
->label('Element Type')
->options([
'Static' => 'Static',
'Dynamic' => 'Dynamic',
]),
Forms\Components\TextInput::make('string_size')
->label('String Size'),
Forms\Components\TextInput::make('element_colour')
->label('Element Colour'),
Forms\Components\TextInput::make('string_align')
->label('String Align'),
Forms\Components\TextInput::make('string_x_value')
->label('String X Value'),
Forms\Components\TextInput::make('string_y_value')
->label('String Y Value'),
Forms\Components\Select::make('shape_name')
->label('Shape Name')
->options([
'Line' => 'Line',
'Rectangle' => 'Rectangle',
]),
Forms\Components\TextInput::make('shape_pen_size')
->label('Shape Pen Size'),
Forms\Components\TextInput::make('shape_x1_value')
->label('Shape X1 Value'),
Forms\Components\TextInput::make('shape_y1_value')
->label('Shape Y1 Value'),
Forms\Components\TextInput::make('shape_x2_value')
->label('Shape X2 Value'),
Forms\Components\TextInput::make('shape_y2_value')
->label('Shape Y2 Value'),
Forms\Components\FileUpload::make('image_path')
->label('Image')
->image()
->directory('sticker-images')
->visibility('public')
->preserveFilenames(false)
->required(false),
Forms\Components\TextInput::make('image_type')
->label('Image Type'),
Forms\Components\TextInput::make('image_x')
->label('Image X'),
Forms\Components\TextInput::make('image_y')
->label('Image Y'),
Forms\Components\TextInput::make('image_width')
->label('Image Width'),
Forms\Components\TextInput::make('image_height')
->label('Image Height'),
Forms\Components\TextInput::make('qr_value')
->label('QR Value'),
Forms\Components\TextInput::make('qr_align')
->label('QR Align'),
Forms\Components\TextInput::make('qr_size')
->label('QR Size'),
Forms\Components\TextInput::make('qr_x_value')
->label('QR X Value'),
Forms\Components\TextInput::make('qr_y_value')
->label('QR Y Value'),
Forms\Components\Hidden::make('created_by')
->label('created_by')
->default(Filament::auth()->user()?->name),
Forms\Components\Hidden::make('updated_by')
->label('updated_by')
->default(Filament::auth()->user()?->name),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('No.')
->label('No.')
->getStateUsing(function ($record, $livewire, $column, $rowLoop) {
$paginator = $livewire->getTableRecords();
$perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10;
$currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1;
return ($currentPage - 1) * $perPage + $rowLoop->iteration;
}),
Tables\Columns\TextColumn::make('stickerStructureDetail.sticker_id')
->label('Sticker ID')
->sortable()
->alignCenter(),
Tables\Columns\TextColumn::make('design_element_type')
->label('Design Element Type')
->alignCenter(),
Tables\Columns\TextColumn::make('element_id')
->label('Element ID')
->alignCenter(),
Tables\Columns\TextColumn::make('element_type')
->label('Element Type')
->alignCenter(),
Tables\Columns\TextColumn::make('string_value')
->label('String Value')
->alignCenter(),
Tables\Columns\TextColumn::make('string_font')
->label('String Font')
->alignCenter(),
Tables\Columns\TextColumn::make('string_size')
->label('String Size')
->alignCenter(),
Tables\Columns\TextColumn::make('element_colour')
->label('Element Colour')
->alignCenter(),
Tables\Columns\TextColumn::make('string_align')
->label('String Align')
->alignCenter(),
Tables\Columns\TextColumn::make('string_x_value')
->label('String X Value')
->alignCenter(),
Tables\Columns\TextColumn::make('string_y_value')
->label('String Y Value')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_name')
->label('Shape Name')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_pen_size')
->label('Shape Pen Size')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_x1_value')
->label('Shape X1 Value')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_y1_value')
->label('Shape Y1 Value')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_x2_value')
->label('Shape X2 Value')
->alignCenter(),
Tables\Columns\TextColumn::make('shape_y2_value')
->label('Shape Y2 Value')
->alignCenter(),
Tables\Columns\TextColumn::make('image_path')
->label('Image Path')
->alignCenter(),
Tables\Columns\TextColumn::make('image_type')
->label('Image Type')
->alignCenter(),
Tables\Columns\TextColumn::make('image_x')
->label('Image X')
->alignCenter(),
Tables\Columns\TextColumn::make('image_y')
->label('Image Y')
->alignCenter(),
Tables\Columns\TextColumn::make('image_width')
->label('Image Width')
->alignCenter(),
Tables\Columns\TextColumn::make('image_height')
->label('Image Height')
->alignCenter(),
Tables\Columns\TextColumn::make('qr_value')
->label('QR Value')
->alignCenter(),
Tables\Columns\TextColumn::make('qr_align')
->label('QR Align')
->alignCenter(),
Tables\Columns\TextColumn::make('qr_size')
->label('QR Size')
->alignCenter(),
Tables\Columns\TextColumn::make('qr_x_value')
->label('QR X Value')
->alignCenter(),
Tables\Columns\TextColumn::make('qr_y_value')
->label('QR Y Value')
->alignCenter(),
Tables\Columns\TextColumn::make('created_at')
->label('Created At')
->alignCenter()
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('created_by')
->label('Created By')
->alignCenter(),
Tables\Columns\TextColumn::make('updated_at')
->label('Updated At')
->alignCenter()
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('deleted_at')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
Tables\Filters\TrashedFilter::make(),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
Tables\Actions\RestoreBulkAction::make(),
]),
])
->headerActions([
ImportAction::make()
->label('Import Sticker Details')
->color('warning')
->importer(StickerDetailImporter::class)
->visible(function() {
return Filament::auth()->user()->can('view import sticker details');
}),
ExportAction::make()
->label('Export Sticker Details')
->color('warning')
->exporter(StickerDetailExporter::class)
->visible(function() {
return Filament::auth()->user()->can('view export sticker details');
}),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListStickerDetails::route('/'),
'create' => Pages\CreateStickerDetail::route('/create'),
'view' => Pages\ViewStickerDetail::route('/{record}'),
'edit' => Pages\EditStickerDetail::route('/{record}/edit'),
];
}
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\StickerDetailResource\Pages;
use App\Filament\Resources\StickerDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateStickerDetail extends CreateRecord
{
protected static string $resource = StickerDetailResource::class;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Resources\StickerDetailResource\Pages;
use App\Filament\Resources\StickerDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditStickerDetail extends EditRecord
{
protected static string $resource = StickerDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\ViewAction::make(),
Actions\DeleteAction::make(),
Actions\ForceDeleteAction::make(),
Actions\RestoreAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\StickerDetailResource\Pages;
use App\Filament\Resources\StickerDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListStickerDetails extends ListRecords
{
protected static string $resource = StickerDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\StickerDetailResource\Pages;
use App\Filament\Resources\StickerDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
class ViewStickerDetail extends ViewRecord
{
protected static string $resource = StickerDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\EditAction::make(),
];
}
}

View File

@@ -25,6 +25,10 @@ class StickerMappingMasterResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Master Entries';
protected static ?int $navigationSort = 16;
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -26,6 +26,8 @@ class StickerPrintingResource extends Resource
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Sticker Reprint';
public static function form(Form $form): Form public static function form(Form $form): Form
{ {
return $form return $form

View File

@@ -0,0 +1,201 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Exports\StickerStructureDetailExporter;
use App\Filament\Imports\StickerStructureDetailImporter;
use App\Filament\Resources\StickerStructureDetailResource\Pages;
use App\Filament\Resources\StickerStructureDetailResource\RelationManagers;
use App\Models\StickerStructureDetail;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Forms\Components\Actions\Action;
use Illuminate\Support\HtmlString;
use Filament\Forms\Components\Html;
use Filament\Forms\Get;
use Filament\Tables\Actions\ExportAction;
use Filament\Tables\Actions\ImportAction;
class StickerStructureDetailResource extends Resource
{
protected static ?string $model = StickerStructureDetail::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Customized Sticker Printing';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('sticker_id')
->label('Sticker ID')
->reactive()
->required()
->afterStateUpdated(function ($state, callable $set) {
//\Log::info('Sticker ID typed:', ['sticker_id' => $state]);
$set('sticker_id_live', $state);
}),
Forms\Components\TextInput::make('sticker_width')
->label('Sticker Width')
->required(),
Forms\Components\TextInput::make('sticker_height')
->label('Sticker Height')
->required(),
Forms\Components\TextInput::make('sticker_lmargin')
->label('Sticker Left Margin')
->required(),
Forms\Components\TextInput::make('sticker_rmargin')
->label('Sticker Right Margin')
->required(),
Forms\Components\TextInput::make('sticker_tmargin')
->label('Sticker Top Margin')
->required(),
Forms\Components\TextInput::make('sticker_bmargin')
->label('Sticker Bottom Margin')
->required(),
Forms\Components\Hidden::make('created_by')
->label('Created By')
->default(Filament::auth()->user()?->name),
Forms\Components\Hidden::make('updated_by')
->label('Updated By')
->default(Filament::auth()->user()?->name),
Forms\Components\TextInput::make('sticker_id_live')
->default(fn ($get) => $get('sticker_id'))
->reactive()
->afterStateUpdated(function ($state, callable $set) {
\Log::info('Sticker ID Live:', ['sticker_id_live' => $state]);
$set('sticker_id_live', $state);
}),
Forms\Components\ViewField::make('generate_template')
->view('fields.generate-template')
->reactive()
->key(fn ($get) => 'generate-template' . ($get('sticker_id_live') ?? 'empty'))
->viewData(fn (Get $get) => [
'sticker_id' => $get('sticker_id_live') ?? 'empty',
])
// ->extraAttributes([
// // Pass the current sticker_id typed by the user
// //'sticker_id' => fn ($get) => $get('sticker_id'),
// 'sticker_id' => fn ($get) => $get('sticker_id') ?? 'empty',
// // 'sticker_id' => function ($get) {
// // \Log::info('ViewField closure executed');
// // $stickerId = $get('sticker_id');
// // // Use Laravel log to see value in real time
// // \Log::info('Sticker ID in ViewField:', $stickerId);
// // // You can also temporarily dd(), but it will stop form render
// // // dd($stickerId);
// // return $stickerId;
// // },
// ]),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('id')
->label('ID')
->numeric()
->sortable(),
Tables\Columns\TextColumn::make('sticker_id')
->label('Sticker ID'),
Tables\Columns\TextColumn::make('sticker_width')
->label('Sticker Width'),
Tables\Columns\TextColumn::make('sticker_height')
->label('Sticker Height'),
Tables\Columns\TextColumn::make('sticker_lmargin')
->label('Sticker Left Margin'),
Tables\Columns\TextColumn::make('sticker_rmargin')
->label('Sticker Right Margin'),
Tables\Columns\TextColumn::make('sticker_tmargin')
->label('Sticker Top Margin'),
Tables\Columns\TextColumn::make('sticker_bmargin')
->label('Sticker Bottom Margin'),
Tables\Columns\TextColumn::make('created_at')
->label('Created At')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('updated_at')
->label('Updated At')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('deleted_at')
->label('Deleted At')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
Tables\Filters\TrashedFilter::make(),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
Tables\Actions\RestoreBulkAction::make(),
]),
])
->headerActions([
ImportAction::make()
->label('Import Sticker Structure Details')
->color('warning')
->importer(StickerStructureDetailImporter::class)
->visible(function() {
return Filament::auth()->user()->can('view import sticker structure details');
}),
ExportAction::make()
->label('Export Sticker Structure Details')
->color('warning')
->exporter(StickerStructureDetailExporter::class)
->visible(function() {
return Filament::auth()->user()->can('view export sticker structure details');
}),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListStickerStructureDetails::route('/'),
'create' => Pages\CreateStickerStructureDetail::route('/create'),
'view' => Pages\ViewStickerStructureDetail::route('/{record}'),
'edit' => Pages\EditStickerStructureDetail::route('/{record}/edit'),
];
}
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\StickerStructureDetailResource\Pages;
use App\Filament\Resources\StickerStructureDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateStickerStructureDetail extends CreateRecord
{
protected static string $resource = StickerStructureDetailResource::class;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Resources\StickerStructureDetailResource\Pages;
use App\Filament\Resources\StickerStructureDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditStickerStructureDetail extends EditRecord
{
protected static string $resource = StickerStructureDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\ViewAction::make(),
Actions\DeleteAction::make(),
Actions\ForceDeleteAction::make(),
Actions\RestoreAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\StickerStructureDetailResource\Pages;
use App\Filament\Resources\StickerStructureDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListStickerStructureDetails extends ListRecords
{
protected static string $resource = StickerStructureDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\StickerStructureDetailResource\Pages;
use App\Filament\Resources\StickerStructureDetailResource;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
class ViewStickerStructureDetail extends ViewRecord
{
protected static string $resource = StickerStructureDetailResource::class;
protected function getHeaderActions(): array
{
return [
Actions\EditAction::make(),
];
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class StickerDetail extends Model
{
use SoftDeletes;
protected $fillable = [
'sticker_structure_detail_id',
'design_element_type',
'element_id',
'element_type',
'string_value',
'string_font',
'string_size',
'element_colour',
'string_align',
'string_x_value',
'string_y_value',
'shape_name',
'shape_pen_size',
'shape_x1_value',
'shape_y1_value',
'shape_x2_value',
'shape_y2_value',
'image_path',
'image_type',
'image_x',
'image_y',
'image_width',
'image_height',
'qr_value',
'qr_align',
'qr_size',
'qr_x_value',
'qr_y_value',
'created_at',
'updated_at',
'created_by',
'updated_by',
];
public function stickerStructureDetail(): BelongsTo
{
return $this->belongsTo(StickerStructureDetail::class);
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class StickerStructureDetail extends Model
{
use SoftDeletes;
protected $fillable = [
'sticker_id',
'sticker_width',
'sticker_height',
'sticker_lmargin',
'sticker_rmargin',
'sticker_tmargin',
'sticker_bmargin',
'created_at',
'updated_at',
'created_by',
'updated_by'
];
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\StickerDetail;
use App\Models\User;
class StickerDetailPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any StickerDetail');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('view StickerDetail');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create StickerDetail');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('update StickerDetail');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('delete StickerDetail');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any StickerDetail');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('restore StickerDetail');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any StickerDetail');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('replicate StickerDetail');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder StickerDetail');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, StickerDetail $stickerdetail): bool
{
return $user->checkPermissionTo('force-delete StickerDetail');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any StickerDetail');
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\StickerStructureDetail;
use App\Models\User;
class StickerStructureDetailPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any StickerStructureDetail');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('view StickerStructureDetail');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create StickerStructureDetail');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('update StickerStructureDetail');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('delete StickerStructureDetail');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any StickerStructureDetail');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('restore StickerStructureDetail');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any StickerStructureDetail');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('replicate StickerStructureDetail');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder StickerStructureDetail');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, StickerStructureDetail $stickerstructuredetail): bool
{
return $user->checkPermissionTo('force-delete StickerStructureDetail');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any StickerStructureDetail');
}
}

View File

@@ -18,6 +18,8 @@ return new class extends Migration
identification1 TEXT DEFAULT NULL, identification1 TEXT DEFAULT NULL,
identification2 TEXT DEFAULT NULL, identification2 TEXT DEFAULT NULL,
identification3 TEXT DEFAULT NULL, identification3 TEXT DEFAULT NULL,
contact_number TEXT DEFAULT NULL,
alternate_number TEXT DEFAULT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(), created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by TEXT DEFAULT NULL, created_by TEXT DEFAULT NULL,

View File

@@ -0,0 +1,65 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
$sql = <<<'SQL'
CREATE TABLE sticker_details (
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
sticker_structure_detail_id BIGINT NOT NULL,
design_element_type TEXT,
element_id TEXT,
element_type TEXT,
string_value TEXT,
string_font TEXT,
string_size TEXT,
element_colour TEXT,
string_align TEXT,
string_x_value TEXT,
string_y_value TEXT,
shape_name TEXT,
shape_pen_size TEXT,
shape_x1_value TEXT,
shape_y1_value TEXT,
shape_x2_value TEXT,
shape_y2_value TEXT,
image_path TEXT,
image_type TEXT,
image_x TEXT,
image_y TEXT,
image_width TEXT,
image_height TEXT,
qr_value TEXT,
qr_align TEXT,
qr_size TEXT,
qr_x_value TEXT,
qr_y_value TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by TEXT DEFAULT NULL,
updated_by TEXT DEFAULT NULL,
deleted_at TIMESTAMP,
FOREIGN KEY (sticker_structure_detail_id) REFERENCES sticker_structure_details (id)
);
SQL;
DB::statement($sql);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sticker_details');
}
};

View File

@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
$sql = <<<'SQL'
CREATE TABLE sticker_structure_details (
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
sticker_id TEXT,
sticker_width TEXT,
sticker_height TEXT,
sticker_lmargin TEXT,
sticker_rmargin TEXT,
sticker_tmargin TEXT,
sticker_bmargin TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by TEXT DEFAULT NULL,
updated_by TEXT DEFAULT NULL,
deleted_at TIMESTAMP
);
SQL;
DB::statement($sql);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sticker_structure_details');
}
};

View File

@@ -0,0 +1,175 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
$sql = <<<'SQL'
CREATE TABLE item_characteristics (
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
plant_id BIGINT NOT NULL,
item_id BIGINT NOT NULL,
class TEXT,
zz1_cn_bill_ord TEXT,
zmm_amps TEXT,
zmm_brand TEXT,
zmm_degreeofprotection TEXT,
zmm_delivery TEXT,
zmm_dir_rot TEXT,
zmm_discharge TEXT,
zmm_discharge_max TEXT,
zmm_discharge_min TEXT,
zmm_duty TEXT,
zmm_eff_motor TEXT,
zmm_eff_pump TEXT,
zmm_frequency TEXT,
zmm_head TEXT,
zmm_heading TEXT,
zmm_head_max TEXT,
zmm_head_minimum TEXT,
zmm_idx_eff_mtr TEXT,
zmm_idx_eff_pump TEXT,
zmm_kvacode TEXT,
zmm_maxambtemp TEXT,
zmm_mincoolingflow TEXT,
zmm_motorseries TEXT,
zmm_motor_model TEXT,
zmm_outlet TEXT,
zmm_phase TEXT,
zmm_pressure TEXT,
zmm_pumpflowtype TEXT,
zmm_pumpseries TEXT,
zmm_pump_model TEXT,
zmm_ratedpower TEXT,
zmm_region TEXT,
zmm_servicefactor TEXT,
zmm_servicefactormaximumamps TEXT,
zmm_speed TEXT,
zmm_suction TEXT,
zmm_suctionxdelivery TEXT,
zmm_supplysource TEXT,
zmm_temperature TEXT,
zmm_thrustload TEXT,
zmm_volts TEXT,
zmm_wire TEXT,
zmm_package TEXT,
zmm_pvarrayrating TEXT,
zmm_isi TEXT,
zmm_isimotor TEXT,
zmm_isipump TEXT,
zmm_isipumpset TEXT,
zmm_pumpset_model TEXT,
zmm_stages TEXT,
zmm_headrange TEXT,
zmm_overall_efficiency TEXT,
zmm_connection TEXT,
zmm_min_bore_size TEXT,
zmm_isireference TEXT,
zmm_category TEXT,
zmm_submergence TEXT,
zmm_capacitorstart TEXT,
zmm_capacitorrun TEXT,
zmm_inch TEXT,
zmm_motor_type TEXT,
zmm_dismantle_direction TEXT,
zmm_eff_ovrall TEXT,
zmm_bodymoc TEXT,
zmm_rotormoc TEXT,
zmm_dlwl TEXT,
zmm_inputpower TEXT,
zmm_imp_od TEXT,
zmm_ambtemp TEXT,
zmm_de TEXT,
zmm_dischargerange TEXT,
zmm_efficiency_class TEXT,
zmm_framesize TEXT,
zmm_impellerdiameter TEXT,
zmm_insulationclass TEXT,
zmm_maxflow TEXT,
zmm_minhead TEXT,
zmm_mtrlofconst TEXT,
zmm_nde TEXT,
zmm_powerfactor TEXT,
zmm_tagno TEXT,
zmm_year TEXT,
zmm_laser_name TEXT,
zmm_beenote TEXT,
zmm_beenumber TEXT,
zmm_beestar TEXT,
zmm_logo_ce TEXT,
zmm_codeclass TEXT,
zmm_colour TEXT,
zmm_logo_cp TEXT,
zmm_grade TEXT,
zmm_grwt_pset TEXT,
zmm_grwt_cable TEXT,
zmm_grwt_motor TEXT,
zmm_grwt_pf TEXT,
zmm_grwt_pump TEXT,
zmm_isivalve TEXT,
zmm_isi_wc TEXT,
zmm_labelperiod TEXT,
zmm_length TEXT,
zmm_license_cml_no TEXT,
zmm_mfgmonyr TEXT,
zmm_modelyear TEXT,
zmm_motoridentification TEXT,
zmm_newt_pset TEXT,
zmm_newt_cable TEXT,
zmm_newt_motor TEXT,
zmm_newt_pf TEXT,
zmm_newt_pump TEXT,
zmm_logo_nsf TEXT,
zmm_packtype TEXT,
zmm_panel TEXT,
zmm_performance_factor TEXT,
zmm_pumpidentification TEXT,
zmm_psettype TEXT,
zmm_size TEXT,
zmm_eff_ttl TEXT,
zmm_type TEXT,
zmm_usp TEXT,
zmm_1 TEXT,
zmm_2 TEXT,
zmm_3 TEXT,
zmm_4 TEXT,
zmm_5 TEXT,
zmm_6 TEXT,
zmm_7 TEXT,
zmm_8 TEXT,
zmm_9 TEXT,
zmm_10 TEXT,
zmm_11 TEXT,
zmm_12 TEXT,
zmm_13 TEXT,
zmm_14 TEXT,
zmm_15 TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by TEXT DEFAULT NULL,
updated_by TEXT DEFAULT NULL,
deleted_at TIMESTAMP,
FOREIGN KEY (plant_id) REFERENCES plants (id),
FOREIGN KEY (item_id) REFERENCES items (id)
);
SQL;
DB::statement($sql);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('item_characteristics');
}
};