114 Commits

Author SHA1 Message Date
Frank John Begornia
4d051276b1 feat: enhance navbar and privacy policy layout for improved user experience 2026-04-17 18:21:48 +08:00
a4456631fb Merge pull request 'feat: enhance team store page layout and styling for improved user experience' (#4) from feat/teamstore-page-enhancement into master
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m24s
Reviewed-on: #4
2026-04-17 10:01:20 +00:00
Frank John Begornia
391df3bb41 feat: enhance team store page layout and styling for improved user experience 2026-04-17 18:00:36 +08:00
cf3b4ea476 Merge pull request 'style: enhance authentication forms with improved layout and design' (#3) from feat/auth-forms into master
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m10s
Reviewed-on: #3
2026-04-17 06:19:50 +00:00
Frank John Begornia
04675dfd37 style: enhance authentication forms with improved layout and design 2026-04-17 14:18:31 +08:00
Frank John Begornia
a29bca1931 fix: update storage paths for team store logo and banner uploads to use 'uploads/images' directory
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m4s
2026-04-17 13:39:15 +08:00
Frank John Begornia
bc5da01735 fix: update storage paths for store logo and banner uploads to include 'upload/images'
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m4s
2026-04-17 13:33:31 +08:00
Frank John Begornia
914e276026 fix: migrate store logo/banner uploads from sftp to minio
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m6s
2026-04-17 13:24:40 +08:00
Frank John Begornia
2e44012b8c fix: pin psr/http-message ^1.0 and guzzlehttp/psr7 ^1.4 to fix PsrStream __toString incompatibility
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m18s
2026-04-17 13:13:42 +08:00
Frank John Begornia
0fe2e2bae6 fix: register minio custom driver using flysystem-aws-s3-v3 (Laravel 5.0 hardcodes v2)
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m5s
2026-04-17 13:03:37 +08:00
Frank John Begornia
c6518e81c9 feat: update Dockerfile and AppServiceProvider for PHP 7.2 compatibility and improved error handling
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 7m7s
2026-04-17 12:52:38 +08:00
Frank John Begornia
289e11f3c5 feat: add MinIO S3 storage configuration to docker-compose for improved file management
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m31s
2026-04-16 23:55:22 +08:00
8eef632ebb Merge pull request 'feat/hifive-filters' (#2) from feat/hifive-filters into master
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m33s
Reviewed-on: #2
2026-04-16 15:41:40 +00:00
ef88a6b69b Merge pull request 'Refactor image upload handling in UserController to use MinIO for improved storage management' (#1) from fix/upload-image into master
Some checks failed
Deploy Production (crewsportswear.com) / deploy (push) Has been cancelled
Reviewed-on: #1
2026-04-16 15:40:59 +00:00
Frank John Begornia
a410208c62 Refactor image upload handling in UserController to use MinIO for improved storage management 2026-04-16 23:40:09 +08:00
Frank John Begornia
d4a6028599 chore: remove SSH Keys Setup guide to enhance security practices 2026-04-16 23:21:45 +08:00
Frank John Begornia
4888f93eac feat(teamstore): add league/conference sub-sub-category pill filter (hi-five-franchise-store only) 2026-04-16 23:19:19 +08:00
Frank John Begornia
49921a26a9 Add centering guidelines script and update script references in designer view
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 3m7s
2026-04-02 03:33:19 +08:00
Frank John Begornia
3b6e0ec447 Refactor image handling in PrintPatternController and TemplatesController to use MinIO for improved storage management 2026-04-02 03:31:08 +08:00
Frank John Begornia
c16203110b Refactor image URLs to use MinIO storage for improved asset management
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m39s
2026-04-02 03:04:49 +08:00
Frank John Begornia
60fcf08cbc Enhance TestEmailController and view to include CSRF token and improve form security
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 1m51s
2026-02-26 23:12:00 +08:00
Frank John Begornia
701a433174 Update exception handling in Handler and TestEmailController for improved error reporting
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 1m51s
2026-02-26 22:58:28 +08:00
Frank John Begornia
47b354d8b7 Add TestEmailController and views for sending test emails
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m51s
2026-02-26 22:46:14 +08:00
Frank John Begornia
dfdb48920d Add SSH keys setup guide and update configurations for secure key management
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 4m31s
2026-02-23 02:01:12 +08:00
Frank John Begornia
3dac8ee685 Fix image path for PayPal button in cart view
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m1s
2026-01-07 01:42:43 +08:00
Frank John Begornia
09974721f3 Update DesignerController and site_config for MinIO integration and URL adjustments
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m23s
2026-01-07 01:28:47 +08:00
Frank John Begornia
8215ad8337 Refactor image URLs to use MinIO storage across various views and controllers
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m16s
2026-01-07 01:10:15 +08:00
Frank John Begornia
368ac50729 Add MinIO configuration and update image URLs in MainController
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 1m57s
2026-01-06 15:34:02 +08:00
Frank John Begornia
8f094ee89c Use MinIO for sports category images
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 1m56s
2026-01-06 15:27:17 +08:00
Frank John Begornia
0551cb078f Add MinIO S3 storage integration
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m9s
- Add minio disk configuration in filesystems.php
- Create helper functions for MinIO URLs (minio_url, minio_image_url)
- Update composer.json with AWS SDK (for future S3 support)
- Add MinIO env vars to docker-compose.local.yml
- Add .env examples for MinIO configuration
2026-01-06 15:20:15 +08:00
Frank John Begornia
26620fc043 Update README.md to reflect project details and installation instructions
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m1s
2026-01-05 23:15:14 +08:00
Frank John Begornia
f10d6daa6f Update APP_URL and Traefik rules for production environment 2026-01-05 23:13:37 +08:00
Frank John Begornia
ab0d370225 Remove commented-out sales chart section from user dashboard
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m0s
2025-12-31 02:20:31 +08:00
Frank John Begornia
ee7b52feb2 Update AppServiceProvider to force HTTPS and configure APP_URL in app.php
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m1s
2025-12-31 02:10:31 +08:00
Frank John Begornia
4cb77e9312 Remove '/public' prefix from asset paths for consistency across views
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m4s
2025-12-31 02:04:33 +08:00
Frank John Begornia
43e66c7ac4 Refactor asset paths to remove '/public' prefix for consistency across views
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 1m57s
2025-12-31 01:53:42 +08:00
Frank John Begornia
685a49cf57 Remove unnecessary environment setup and optimization steps from Dockerfile
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m13s
2025-12-31 01:24:12 +08:00
Frank John Begornia
f6617f6d70 Fix Traefik certresolver value in production Docker Compose configuration
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m5s
2025-12-31 01:10:07 +08:00
Frank John Begornia
7c6108e0a7 Update production environment URLs and Traefik rules for dev-crew.crewsportswear.app
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m9s
2025-12-31 00:56:31 +08:00
Frank John Begornia
b8aa48a0bb Update deployment directory path in workflow configuration
All checks were successful
Deploy Production (crewsportswear.com) / deploy (push) Successful in 2m14s
2025-12-31 00:33:22 +08:00
Frank John Begornia
8fc0b1076a Add Docker and deployment configurations for development and production environments
Some checks failed
Deploy Production (crewsportswear.com) / deploy (push) Failing after 5m18s
2025-12-31 00:23:44 +08:00
franknstayn
71e1fca6fe updated 2023-08-24 21:55:06 +08:00
franknstayn
8dc23e4e67 exempt sf spartans tax 2021-12-23 18:08:57 +08:00
franknstayn
729d0e72e6 added voucher validation 2021-12-03 18:00:27 +08:00
franknstayn
0b8856d3a0 update store item view 2021-11-26 19:31:40 +08:00
franknstayn
6aa0587a69 update store item view 2021-11-26 19:29:59 +08:00
franknstayn
08c274f5bd updated checkout flow 2021-11-03 21:30:42 +08:00
franknstayn
148df27117 update navbar 2021-09-25 18:32:49 +08:00
franknstayn
e552037e2c update navbar 2021-09-25 18:30:03 +08:00
franknstayn
7011b28542 update navbar 2021-09-25 18:28:40 +08:00
franknstayn
2ac9cb6420 update navbar 2021-09-25 18:20:22 +08:00
franknstayn
9c403b7207 update creds 2021-09-15 20:48:31 +08:00
franknstayn
11960d6bad update email creds 2021-09-15 20:41:07 +08:00
franknstayn
25f80cb16f update email creds 2021-09-15 20:20:31 +08:00
franknstayn
72773a517a update email 2021-09-15 20:02:51 +08:00
franknstayn
d1f5d38480 update description label 2021-09-07 19:41:04 +08:00
franknstayn
f5f1693f55 update store please read text 2021-09-03 21:35:45 +08:00
franknstayn
39165cc7f9 update store please read text 2021-09-03 21:35:24 +08:00
franknstayn
20b4e06ee7 updated delete function for delete item 2021-07-17 15:32:49 +08:00
Frank John Begornia
18e11ac3d0 added shipping fee for dgs 2021-03-20 14:36:46 +08:00
Frank John Begornia
0013b2a025 fixed reports date range 2021-02-08 04:07:29 +08:00
Frank John Begornia
acf9c2e931 updated apis 2021-02-04 19:45:27 +08:00
Frank John Begornia
c144810352 update reports display 2021-01-23 19:52:17 +08:00
Frank John Begornia
b1ed52f7a6 update report 2021-01-23 19:49:15 +08:00
Frank John Begornia
70b250a64e fixed order report 2020-12-19 19:49:03 +08:00
Frank John Begornia
1eb7e6632f fixed order report 2020-12-19 19:46:36 +08:00
Frank John Begornia
98e7652e6b added status 2020-12-12 19:53:30 +08:00
Frank John Begornia
852593ecfb added new api 2020-12-11 21:47:36 +08:00
Frank John Begornia
43de35a66c added order status 2020-11-28 18:13:43 +08:00
Frank John Begornia
ad57e218af change image url 2020-11-27 16:24:57 +08:00
Frank John Begornia
d2a20c4831 added api for tracking 2020-11-27 02:43:26 +08:00
franknstayn
36ad67a37a added bucket hat sizes 2020-11-26 12:32:29 -06:00
franknstayn
6c55194c9a edit please read on lasc store 2020-11-17 18:50:50 +08:00
franknstayn
77ee1b9ccc update crewsportswear 2020-10-24 21:27:04 +08:00
franknstayn
6cc68cd56b added announcement 2020-10-17 23:16:25 +08:00
franknstayn
3e328b83a4 added 0 2020-10-17 23:14:52 +08:00
franknstayn
d82832043c added announcement 2020-10-17 22:17:25 +08:00
franknstayn
da89856e95 added stat 2020-09-29 19:40:42 +08:00
franknstayn
bf88584dcd update 2020-09-29 01:05:01 -05:00
franknstayn
3eb4078d19 update payment details record 2020-08-10 23:20:55 +08:00
franknstayn
5918eded8c add shipping cost 2020-08-10 22:41:40 +08:00
franknstayn
02361ca64e updates 2020-08-09 13:21:41 -05:00
franknstayn
1ca40ce1d7 updates 2020-08-01 03:06:48 -05:00
franknstayn
59e52125f7 fix teamstore password 2020-07-11 19:31:35 +08:00
franknstayn
bb139cb0df updated 2020-07-11 02:57:12 -05:00
franknstayn
bca94e54cc added new form for store item 2020-03-19 22:37:08 +08:00
franknstayn
e57209bc64 update 3_14_2020 2020-03-14 01:17:24 -05:00
franknstayn
5eeefa5587 fix tax exemption 2020-02-28 21:07:05 +08:00
franknstayn
80094cfdf0 Merge branch 'master' of github.com:franknstayn/crewsportswear
Conflicts:
	app/Http/Controllers/paypal/PaypalController.php
2020-02-28 07:02:30 -06:00
franknstayn
587819be9a exempt jjed phl intax 2020-02-28 06:58:41 -06:00
franknstayn
67b52fcc1a Merge branch 'master' of https://github.com/franknstayn/crewsportswear 2020-02-28 20:54:33 +08:00
franknstayn
f7b402fe7a exempt nlp in tax 2020-02-28 20:53:29 +08:00
franknstayn
8408695473 uncomment RewriteRule 2020-02-25 12:29:23 +08:00
franknstayn
99f89a968b removed JAC 2020-02-25 12:21:10 +08:00
franknstayn
3f96f82090 add jac 2020-02-25 12:06:28 +08:00
franknstayn
942af1f0a8 added contact us page 2020-02-25 11:53:26 +08:00
franknstayn
4610fb526b changed sizes display 2020-02-08 20:37:02 +08:00
franknstayn
c29936f6b9 Merge pull request #9 from franknstayn/additional_form
Additional form
2020-02-08 16:40:18 +08:00
franknstayn
7c12b0e2bf add form in user page 2020-02-07 01:14:27 +08:00
franknstayn
a5dab36a14 additional forms 2020-02-07 01:10:31 +08:00
franknstayn
55f135f66c Merge pull request #8 from franknstayn/local_dev
added delete function on store item
2020-01-25 20:12:43 +08:00
franknstayn
6631690f93 Merge branch 'master' of github.com:franknstayn/crewsportswear 2020-01-25 04:47:06 -06:00
franknstayn
dd26b1dd4b added user for tax exemption 2020-01-25 04:45:58 -06:00
franknstayn
155bc2ce53 Merge pull request #7 from franknstayn/local_dev
Local dev
2020-01-25 18:43:25 +08:00
franknstayn
ef81f0bf25 Merge branch 'local_dev' of github.com:franknstayn/crewsportswear 2020-01-10 07:32:59 -06:00
franknstayn
bf078c82bf Merge pull request #6 from franknstayn/local_dev
rename number to name
2019-12-04 18:49:08 +08:00
franknstayn
2e29677b90 Merge pull request #5 from franknstayn/local_dev
Local dev
2019-12-04 18:44:41 +08:00
franknstayn
03ea4e84a2 Merge pull request #4 from franknstayn/local_dev
added "size" column on download report in csv and excel
2019-11-15 21:05:31 +08:00
franknstayn
3f8c116293 Merge pull request #3 from franknstayn/local_dev
Local dev
2019-11-14 19:45:29 +08:00
franknstayn
9bf1a888a6 Merge branch 'master' of github.com:franknstayn/crewsportswear 2019-11-11 04:44:45 -06:00
franknstayn
542f2c64e0 update from live 11_11_2019 2019-11-11 04:44:08 -06:00
franknstayn
1d4c9a5445 Merge pull request #2 from franknstayn/local_dev
added column in store order reports in store owner
2019-11-11 18:42:11 +08:00
franknstayn
3698312664 fixed broken link on cart page. 2019-11-06 07:26:02 -06:00
franknstayn
a9145ea484 Merge pull request #1 from franknstayn/local_dev
Local dev by frank
2019-11-06 20:29:09 +08:00
9 changed files with 93 additions and 383 deletions

View File

@@ -11,13 +11,6 @@ CACHE_DRIVER=file
SESSION_DRIVER=file SESSION_DRIVER=file
QUEUE_DRIVER=sync QUEUE_DRIVER=sync
PAYPAL_SANDBOX_CLIENT_ID=
PAYPAL_SANDBOX_SECRET=
PAYPAL_LIVE_CLIENT_ID=
PAYPAL_LIVE_SECRET=
API_TOKEN=
MAIL_DRIVER=smtp MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io MAIL_HOST=mailtrap.io
MAIL_PORT=2525 MAIL_PORT=2525

26
.env.local Normal file
View File

@@ -0,0 +1,26 @@
# Local Development Configuration
# Copy to .env.local and fill in your values.
# ── MinIO credentials ─────────────────────────────────────────────────────────
MINIO_KEY=your_minio_root_user
MINIO_SECRET=your_minio_root_password
# ── SSH tunnel (remote DB) ────────────────────────────────────────────────────
# Only needed when starting with --profile ssh-db.
# NOTE: no inline comments allowed after values — Docker reads them literally.
SSH_HOST=136.114.183.15
SSH_PORT=22
SSH_USER=webmaster
# Must be an absolute path — Docker Compose does NOT expand ~
SSH_KEY_PATH=/Users/webmaster/.ssh/id_ed25519_crew_webmaster
SSH_DB_REMOTE_HOST=127.0.0.1
SSH_DB_REMOTE_PORT=3306
# Tell the app to route DB traffic through the tunnel container:
DB_HOST=db-tunnel
DB_PORT=3306
DB_DATABASE=custom_designs
DB_USERNAME=root
DB_PASSWORD=VeryStrongRootPass2025!

1
.gitignore vendored
View File

@@ -1,7 +1,6 @@
/vendor /vendor
/node_modules /node_modules
.env .env
.env.local
# SSH Keys - Never commit private keys # SSH Keys - Never commit private keys
*.ppk *.ppk

View File

@@ -2,8 +2,6 @@
use Exception; use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class Handler extends ExceptionHandler { class Handler extends ExceptionHandler {
@@ -44,11 +42,6 @@ class Handler extends ExceptionHandler {
if (!$e instanceof Exception) { if (!$e instanceof Exception) {
$e = new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); $e = new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
} }
if ($e instanceof NotFoundHttpException || $e instanceof ModelNotFoundException) {
return response()->view('errors.404', [], 404);
}
return parent::render($request, $e); return parent::render($request, $e);
} }

View File

@@ -13,11 +13,11 @@ class isAuthorized {
*/ */
public function handle($request, Closure $next) public function handle($request, Closure $next)
{ {
$token = $request->header('token') ?? (getallheaders()['token'] ?? null); if(isset(getallheaders()['token']) && getallheaders()['token']=="1HHIaIsT4pvO2S39vMzlVfGWi3AhAz6F5xGBNKil") {
if ($token && $token === config('app.api_token')) {
return $next($request); return $next($request);
}else{
return response()->json(['status' => false,'error' => "Invalid request"], 503);
} }
return response()->json(['status' => false, 'error' => 'Invalid request'], 401);
} }
} }

View File

@@ -80,8 +80,6 @@ return [
'key' => env('APP_KEY', 'SomeRandomString'), 'key' => env('APP_KEY', 'SomeRandomString'),
'api_token' => env('API_TOKEN'),
'cipher' => MCRYPT_RIJNDAEL_128, 'cipher' => MCRYPT_RIJNDAEL_128,
/* /*

View File

@@ -36,13 +36,13 @@ return [
// sandbox // sandbox
'paypal_sandbox' => [ 'paypal_sandbox' => [
'client_id' => env('PAYPAL_SANDBOX_CLIENT_ID'), 'client_id' => 'AQuz-HKzQiL7FygkG8skSekaWf-RP6Rgj4f1XeX1Ghp86bUFj7tQXVT1xbpluu5_WCGRbQpOVGtlJKVB',
'secret' => env('PAYPAL_SANDBOX_SECRET'), 'secret' => 'EJAMKxQsl-mFkL_4J_90cvTamYfcsgswqgIxz9wQPiRAwJ6sy_wNsttMlmrXIpxI96JpYzdMXkLCHAPz'
], ],
// live // live
'paypal_live' => [ 'paypal_live' => [
'client_id' => env('PAYPAL_LIVE_CLIENT_ID'), 'client_id' => 'AUqBUFW5lfyYmrlBtFZA3RNw45sttM3ltbvS_d4qCVBMrkcMG9rEeivGvtNFSy8XTiEp50YyQ6khKxbq',
'secret' => env('PAYPAL_LIVE_SECRET'), 'secret' => 'ELlnuiupoFKwGUSc2g5j-sD1EmsvKpdhth1gFV7njpfvyNtKsK8WwIKUMOS0ehJcRatV865eMhfgsnd_'
], ],
]; ];

View File

@@ -1,91 +0,0 @@
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>404 | Page Not Found</title>
<style>
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: #f4f6f8;
color: #334155;
display: table;
font-family: Arial, sans-serif;
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
padding: 24px;
}
.content {
text-align: center;
display: inline-block;
background: #ffffff;
padding: 32px 28px;
border-radius: 10px;
border: 1px solid #e5e7eb;
max-width: 560px;
}
.code {
font-size: 52px;
font-weight: 700;
line-height: 1;
color: #111827;
margin-bottom: 14px;
}
.title {
font-size: 24px;
font-weight: 700;
color: #111827;
margin-bottom: 10px;
}
.message {
font-size: 15px;
line-height: 1.6;
margin-bottom: 22px;
}
.actions a {
display: inline-block;
padding: 10px 16px;
margin: 0 6px 8px;
text-decoration: none;
border-radius: 6px;
font-size: 14px;
font-weight: 700;
}
.btn-primary {
background: #111827;
color: #ffffff;
}
.btn-secondary {
background: #ffffff;
color: #111827;
border: 1px solid #d1d5db;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="code">404</div>
<div class="title">Page Not Found</div>
<div class="message">The page you are looking for does not exist or may have been moved.</div>
<div class="actions">
<a href="{{ url('/') }}" class="btn-primary">Go to Home</a>
<a href="{{ url('teamstore') }}" class="btn-secondary">Browse Team Stores</a>
</div>
</div>
</div>
</body>
</html>

View File

@@ -2,223 +2,15 @@
@section('content') @section('content')
<style> <style>
body {
background: #f4f6f8;
}
.cart-breadcrumb .breadcrumb {
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 10px;
margin-bottom: 14px;
}
.cart-title {
font-size: 24px;
font-weight: 700;
color: #111827;
margin: 0;
}
.cart-title-row hr {
border-color: #e5e7eb;
margin-top: 12px;
margin-bottom: 16px;
}
.cart-card {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 14px;
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
margin-bottom: 12px;
}
.cart-card h3,
.cart-card h4,
.cart-card h5 {
color: #111827;
}
.summary-line {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
.summary-line .summary-label {
font-weight: 700;
color: #111827;
}
.summary-line .summary-value {
text-align: right;
color: #374151;
font-weight: 600;
white-space: nowrap;
}
.summary-total {
margin-top: 2px;
}
.summary-total .summary-label {
font-size: 20px;
}
.summary-total .summary-value {
font-size: 22px;
color: #111827;
}
.summary-total-currency {
font-size: 14px;
color: #6b7280;
font-weight: 600;
margin-left: 4px;
}
.order-summary {
position: sticky;
top: 18px;
}
.cart-summary-title {
margin: 0;
font-size: 20px;
font-weight: 700;
}
.cart-store-head img {
border-radius: 6px;
margin-right: 6px;
}
.cart-item-block + .cart-item-block {
margin-top: 10px;
}
.cart-items-shell {
padding: 0;
}
.cart-items-shell .cart-store-head {
padding: 14px;
border-bottom: 1px solid #e5e7eb;
background: #f8fafc;
border-radius: 12px 12px 0 0;
}
.cart-items-shell .cart-store-head h4 {
margin: 0;
}
.cart-items-shell .cart-item-block {
margin: 0;
border: 0;
border-bottom: 1px solid #e5e7eb;
border-radius: 0;
box-shadow: none;
}
.cart-items-shell .cart-item-block:last-child {
border-bottom: 0;
border-radius: 0 0 12px 12px;
}
.cart-item-title {
margin-top: 0;
margin-bottom: 8px;
font-size: 18px;
}
.cart-item-title a {
color: #1f2937;
text-decoration: none;
}
.cart-item-title a:hover {
color: #0f172a;
text-decoration: underline;
}
.cart-meta {
color: #6b7280;
font-size: 13px;
margin-bottom: 10px;
}
.cart-table-wrap .table {
margin-bottom: 0;
}
.cart-table-wrap .table > thead > tr > th {
border-bottom: 1px solid #e5e7eb;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.3px;
color: #64748b;
}
.cart-table-wrap .table > tbody > tr > td {
border-top: 1px solid #f1f5f9;
vertical-align: middle;
font-size: 13px;
}
.cart-remove-btn {
color: #ef4444;
}
.cart-remove-btn:hover {
color: #b91c1c;
}
.voucher-row .btn {
border-radius: 6px;
}
.checkout-btn {
background-color: #ffc300;
border-color: #e2ad00;
text-align: -webkit-center;
border-radius: 8px;
}
.checkout-btn:hover {
background-color: #ffcf33;
border-color: #d39b00;
}
.continue-btn {
border-radius: 8px;
}
.empty-cart {
color: #94a3b8;
text-align: center;
margin: 40px 0;
font-weight: 600;
}
.previewImage{ .previewImage{
height: 150px; height: 150px;
width: 95%; width: 95%;
overflow:hidden; overflow:hidden;
object-fit: contain; object-fit: contain;
} }
@media (max-width: 991px) {
.order-summary {
position: static;
}
}
</style> </style>
<div class="row cart-breadcrumb"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<ol class="breadcrumb"> <ol class="breadcrumb">
@if(isset($store_array[0]->StoreUrl)) @if(isset($store_array[0]->StoreUrl))
@@ -231,9 +23,9 @@ body {
</div> </div>
</div> </div>
<div class="row cart-title-row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<h2 class="cart-title">My Cart</h2> <h2 style="font-size: 20px; font-weight: bold;">MY CART</h2>
@if(Session::has('cartkeyError')) @if(Session::has('cartkeyError'))
<div class="alert alert-danger alert-dismissible"> <div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
@@ -245,11 +37,11 @@ body {
</div> </div>
</div> </div>
@if(collect($row)->count() > 0) @if(count($row) > 0)
<div class="row"> <div class="row">
<div class="col-md-4 col-md-push-8 order-summary" > <div class="col-md-4 col-md-push-8 order-summary" >
<div class="cart-card"> <div style="border: 1px solid #e2e2e2; padding: 10px; border-bottom: none;">
@if(Session::has('msg')) @if(Session::has('msg'))
<div class="alert alert-warning alert-dismissible"> <div class="alert alert-warning alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
@@ -257,10 +49,13 @@ body {
{!! Session::get('msg') !!} {!! Session::get('msg') !!}
</div> </div>
@endif @endif
<h3 class="cart-summary-title">Order Summary</h3> <h3>Order Summary</h3>
</div>
@if (!Auth::guest()) @if (!Auth::guest())
<hr>
<div style="border: 1px solid #e2e2e2; padding: 10px; border-bottom: none;">
<p><strong>Ship to:</strong></p> <p><strong>Ship to:</strong></p>
@if ($address_book === null) @if ($address_book === null)
@@ -273,29 +68,27 @@ body {
<a href="{{ url('user/address-book/edit/'.$address_book[0]->Id) }}">[ Edit ]</a> <a href="{{ url('user/address-book/edit/'.$address_book[0]->Id) }}">[ Edit ]</a>
</div> </div>
@endif @endif
</div>
@endif @endif
<hr> <div style="border: 1px solid #e2e2e2; padding: 10px; border-bottom: none;">
{{-- <h3>Subtotal: <span id="my_subtotal">{{ round($getSubtotal, 2) }}</span> <small>{{ $store_array[0]->StoreCurrency }}</small></h3> --}} {{-- <h3>Subtotal: <span id="my_subtotal">{{ round($getSubtotal, 2) }}</span> <small>{{ $store_array[0]->StoreCurrency }}</small></h3> --}}
<div class="summary-line"> <h5><strong>Subtotal:</strong>
<span class="summary-label">Subtotal:</span> <span>{{ number_format($tax['order_grandtotal'], 2) . ' ' . $store_array[0]->StoreCurrency }}</span>
<span class="summary-value">{{ number_format($tax['order_grandtotal'], 2) . ' ' . $store_array[0]->StoreCurrency }}</span> </h5>
</div> <h5><strong>Shipping Fee:</strong>
<div class="summary-line"> <span>{{ number_format($shipping_fee, 2) . ' ' . $store_array[0]->StoreCurrency }}</span>
<span class="summary-label">Shipping Fee:</span> </h5>
<span class="summary-value">{{ number_format($shipping_fee, 2) . ' ' . $store_array[0]->StoreCurrency }}</span> <h5> <strong>Tax:</strong>
</div> <span>{{ number_format($tax['tax'], 2) . ' ' . $store_array[0]->StoreCurrency }}</span>
<div class="summary-line"> </h5>
<span class="summary-label">Tax:</span>
<span class="summary-value">{{ number_format($tax['tax'], 2) . ' ' . $store_array[0]->StoreCurrency }}</span>
</div>
<hr> <hr>
<div class="summary-line summary-total"> <h3> <strong>Total:</strong> <span id="my_subtotal">{{ number_format($tax['order_grandtotal'] + $shipping_fee + $tax['tax'], 2) }}</span>
<span class="summary-label">Total:</span> <span>{{ $store_array[0]->StoreCurrency }}</span>
<span class="summary-value"><span id="my_subtotal">{{ number_format($tax['order_grandtotal'] + $shipping_fee + $tax['tax'], 2) }}</span><span class="summary-total-currency">{{ $store_array[0]->StoreCurrency }}</span></span> </h3>
</div>
<hr> <hr>
<div class="form-group voucher-row" id="voucher_list"> <div class="form-group" id="voucher_list">
@foreach($row as $item) @foreach($row as $item)
@if($item->VoucherId != null) @if($item->VoucherId != null)
<div class="btn-group"> <div class="btn-group">
@@ -326,20 +119,20 @@ body {
<span id="error_voucher" style="color: #dd4b39"></span> <span id="error_voucher" style="color: #dd4b39"></span>
</form> </form>
<div class="clearfix"></div> <div class="clearfix"></div>
</div>
<hr> <div style="border: 1px solid #e2e2e2; padding: 10px;">
<a @if($getSubtotal <= 0 ) disabled @endif href="{{ url('getCheckout') }}" class="btn btn-primary btn-block checkout-btn" ><img src="{{asset('/images/paypal1.png')}}" class="img img-responsive" style="height:30px;"></a><br> <a @if($getSubtotal <= 0 ) disabled @endif href="{{ url('getCheckout') }}" class="btn btn-primary btn-block" style="background-color: #ffc300; border-color: #e2ad00; text-align: -webkit-center;" ><img src="{{asset('/images/paypal1.png')}}" class="img img-responsive" style="height:30px;"></a><br>
<a href="{{ url('teamstore') . '/' . $store_array[0]->StoreUrl }}" class="btn btn-default btn-block continue-btn" type="submit">Continue Shopping</a> <a href="{{ url('teamstore') . '/' . $store_array[0]->StoreUrl }}" class="btn btn-default btn-block" type="submit">Continue Shopping</a>
</div> </div>
</div> </div>
<div class="col-md-8 col-md-pull-4"> <div class="col-md-8 col-md-pull-4">
<div class="cart-card cart-items-shell"> <div style="border: 1px solid #e2e2e2; padding: 10px;">
<div class="cart-store-head">
<h4><img height="30px" class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store_array[0]->ImageFolder . '/' . $store_array[0]->StoreLogo) }}"> {{ $store_array[0]->StoreName }}</h4> <h4><img height="30px" class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store_array[0]->ImageFolder . '/' . $store_array[0]->StoreLogo) }}"> {{ $store_array[0]->StoreName }}</h4>
</div> </div>
@foreach($item_group as $item) @foreach($item_group as $item)
@if($item->VoucherId == null) @if($item->VoucherId == null)
<div class="cart-card cart-item-block"> <div style="border: 1px solid #e2e2e2; padding: 10px; border-top: none;">
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<div class="text-center"> <div class="text-center">
@@ -351,11 +144,11 @@ body {
</div> </div>
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<h4 class="cart-item-title"> <h4>
<a href="{{ url('teamstore') . '/' . $item->StoreURL . '/' . 'product/' . $item->ProductURL }}">{{ $item->ProductName }}</a> <a href="{{ url('teamstore') . '/' . $item->StoreURL . '/' . 'product/' . $item->ProductURL }}">{{ $item->ProductName }}</a>
</h4> </h4>
<p class="cart-meta">Total Price: {{ $item->total_price . ' ' . $store_array[0]->StoreCurrency }} &bull; Row(s): {{ $item->qty }} </p> <p>Total Price: {{ $item->total_price . ' ' . $store_array[0]->StoreCurrency }} &bull; Row(s): {{ $item->qty }} </p>
<div class="table-responsive cart-table-wrap"> <div class="table-responsive">
<table class="table table-striped table-condensed"> <table class="table table-striped table-condensed">
@if($item->FormUsed=="jersey-and-shorts-form") @if($item->FormUsed=="jersey-and-shorts-form")
@@ -459,20 +252,20 @@ body {
<td>{{ $sub_item->ShortsSize }}</td> <td>{{ $sub_item->ShortsSize }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="tshirt-form") @elseif($item->FormUsed=="tshirt-form")
<tr> <tr>
<td>{{ $sub_item->Size }}</td> <td>{{ $sub_item->Size }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="quantity-form") @elseif($item->FormUsed=="quantity-form")
<tr> <tr>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="name-number-form") @elseif($item->FormUsed=="name-number-form")
<tr> <tr>
@@ -480,7 +273,7 @@ body {
<td>{{ $sub_item->Number }}</td> <td>{{ $sub_item->Number }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="name-number-size-form") @elseif($item->FormUsed=="name-number-size-form")
<tr> <tr>
@@ -489,14 +282,14 @@ body {
<td>{{ $sub_item->Size }}</td> <td>{{ $sub_item->Size }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="number-form") @elseif($item->FormUsed=="number-form")
<tr> <tr>
<td>{{ $sub_item->Number }}</td> <td>{{ $sub_item->Number }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="name-name2-size-form") @elseif($item->FormUsed=="name-name2-size-form")
<tr> <tr>
@@ -505,7 +298,7 @@ body {
<td>{{ $sub_item->Size }}</td> <td>{{ $sub_item->Size }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="name-size-form") @elseif($item->FormUsed=="name-size-form")
<tr> <tr>
@@ -513,7 +306,7 @@ body {
<td>{{ $sub_item->Size }}</td> <td>{{ $sub_item->Size }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="jersey-and-shorts-quantity-form") @elseif($item->FormUsed=="jersey-and-shorts-quantity-form")
<tr> <tr>
@@ -521,7 +314,7 @@ body {
<td>{{ $sub_item->ShortsSize}}</td> <td>{{ $sub_item->ShortsSize}}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@elseif($item->FormUsed=="number-jersey-shorts-form") @elseif($item->FormUsed=="number-jersey-shorts-form")
<tr> <tr>
@@ -530,7 +323,7 @@ body {
<td>{{ $sub_item->ShortsSize }}</td> <td>{{ $sub_item->ShortsSize }}</td>
<td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td> <td>{{ $sub_item->Price . ' ' . $store_array[0]->StoreCurrency }}</td>
<td>{{ $sub_item->Quantity }}</td> <td>{{ $sub_item->Quantity }}</td>
<td><a class="btn btn-xs btn-link pull-right cart-remove-btn" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td> <td><a class="btn btn-xs btn-link pull-right" href="{{ url('removeitem') }}/{{ $sub_item->Id }}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr> </tr>
@else @else
@@ -546,13 +339,12 @@ body {
@endif @endif
@endforeach @endforeach
</div> </div>
</div>
</div> </div>
@else @else
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<h3 class="empty-cart">Your cart is currently empty.</h3> <h3 style="color:#d2d2d2;">Your cart is currently empty.</h3>
</div> </div>
</div> </div>