added item quantity

This commit is contained in:
franknstayn
2021-08-24 22:33:11 +08:00
parent f1d656de5e
commit d4519faf2b
6 changed files with 404 additions and 372 deletions

View File

@@ -29,7 +29,7 @@ class PaypalController extends Controller
public function __construct() public function __construct()
{ {
$paypal_env = "live"; $paypal_env = "sandbox";
$paypal_apiUrl = 'https://api.paypal.com'; // default $paypal_apiUrl = 'https://api.paypal.com'; // default
if($paypal_env == 'live'){ if($paypal_env == 'live'){

View File

@@ -364,7 +364,8 @@ class UserController extends Controller {
'PrivacyStatus' => $post['item_privacy'], 'PrivacyStatus' => $post['item_privacy'],
'ProductForm' => $post['itemForm'], 'ProductForm' => $post['itemForm'],
'AvailableSizes' => implode(",", $post['available_size']), 'AvailableSizes' => implode(",", $post['available_size']),
'ShippingCostId' => $shipping_cost_id 'ShippingCostId' => $shipping_cost_id,
'ProductAvailableQty' => ($post['item_quantity'] == 0) ? null : $post['item_quantity']
); );

View File

@@ -3,25 +3,36 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="input-group"> <div class="input-group">
<span class="input-group-btn"> <button class="btn btn-outline-secondary btn-number" disabled="disabled" data-type="minus" data-field="quantity" type="button" id="button-addon1"><i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-default btn-number" disabled="disabled" data-type="minus" data-field="quantity"> {{-- <input type="text" name="quantity" class="form-control input-number" value="1" min="1" max="100"> --}}
<span class="glyphicon glyphicon-minus"></span>
</button>
</span>
@if($product_array[0]->ProductAvailableQty == null) @if($product_array[0]->ProductAvailableQty == null)
<input type="text" name="quantity" class="form-control input-number" value="1" min="1" max="100"> <input type="text" name="quantity" class="form-control input-number" value="1" min="1" max="100">
@else @else
<input type="text" name="quantity" class="form-control input-number" value="1" min="1" max="{{ $available_qty }}"> <input type="text" name="quantity" class="form-control input-number" value="1" min="1" max="{{ $available_qty }}">
@endif @endif
<button class="btn btn-outline-secondary btn-number" data-type="plus" data-field="quantity" type="button" id="button-addon1"> <i class="fa fa-plus"></i> </button>
</div>
{{-- <div class="input-group">
<span class="input-group-btn"> <span class="input-group-btn">
<button type="button" class="btn btn-default btn-number" data-type="plus" data-field="quantity"> <button type="button" class="btn btn-default btn-number" disabled="disabled" data-type="minus" data-field="quantity">
<span class="glyphicon glyphicon-plus"></span> <i class="fa fa-minus"></i>
</button> </button>
</span> </span>
</div>
@if($available_qty != null) <span class="input-group-btn">
<button type="button" class="btn btn-default btn-number" data-type="plus" data-field="quantity">
<i class="fa fa-plus"></i>
</button>
</span>
</div> --}}
@if($available_qty !== null)
@if ($available_qty > 0)
<p>{{ $available_qty }} piece/s available</p> <p>{{ $available_qty }} piece/s available</p>
@else
<p>Sold out</p>
@endif
@endif @endif
</div> </div>

View File

@@ -15,6 +15,7 @@
max-height: 100% !important; max-height: 100% !important;
padding: 5px !important; padding: 5px !important;
} }
.carousel-indicators { .carousel-indicators {
display: inline-block !important; display: inline-block !important;
height: 400px !important; height: 400px !important;
@@ -45,10 +46,12 @@
margin-top: 20px !important; margin-top: 20px !important;
margin-bottom: 20px !important; margin-bottom: 20px !important;
} }
.carousel-inner { .carousel-inner {
margin-left: 0 !important; margin-left: 0 !important;
} }
} }
/* width */ /* width */
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 5px; width: 5px;
@@ -69,6 +72,7 @@
::-webkit-scrollbar-thumb:hover { ::-webkit-scrollbar-thumb:hover {
background: #555; background: #555;
} }
.item { .item {
margin-bottom: 10px !important; margin-bottom: 10px !important;
margin-left: 10px !important; margin-left: 10px !important;
@@ -78,6 +82,7 @@
border: solid 1px #e2e2e2 !important; border: solid 1px #e2e2e2 !important;
text-align: center !important; text-align: center !important;
} }
.item.active img { .item.active img {
/* border:1px solid #000000; */ /* border:1px solid #000000; */
opacity: 1; opacity: 1;
@@ -103,14 +108,17 @@
border: 1px solid #000000 !important; border: 1px solid #000000 !important;
opacity: 1 !important; opacity: 1 !important;
} }
.content { .content {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
background: rgba(0, 0, 0, 0.5); /* Black background with transparency */ background: rgba(0, 0, 0, 0.5);
/* Black background with transparency */
color: #f1f1f1; color: #f1f1f1;
width: 100%; width: 100%;
padding: 10px; padding: 10px;
} }
.content p { .content p {
font-size: 15px; font-size: 15px;
} }
@@ -120,40 +128,47 @@
position: static; position: static;
} }
} }
@media screen and (min-width: 1440px) { @media screen and (min-width: 1440px) {
/* .carousel-inner{ /* .carousel-inner{
margin-left: -60px; margin-left: -60px;
} */ } */
} }
@media screen and (min-width: 1200px) and (max-width: 1439px) { @media screen and (min-width: 1200px) and (max-width: 1439px) {
.carousel-inner { .carousel-inner {
margin-left: -20px; margin-left: -20px;
} }
} }
@media screen and (min-width: 880px) and (max-width: 1199px) { @media screen and (min-width: 880px) and (max-width: 1199px) {
.carousel-inner { .carousel-inner {
margin-left: 20px; margin-left: 20px;
} }
.content { .content {
position: static; position: static;
} }
} }
@media screen and (min-width: 576px) and (max-width: 879px) { @media screen and (min-width: 576px) and (max-width: 879px) {
.carousel-inner { .carousel-inner {
margin-left: 50px; margin-left: 50px;
} }
.content { .content {
position: static; position: static;
} }
} }
</style> </style>
<style> <style>
.custom-chevron-left, .custom-chevron-left,
.custom-chevron-right { .custom-chevron-right {
color: grey; color: grey;
} }
/* end single carousel*/ /* end single carousel*/
.hide-bullets { .hide-bullets {
@@ -161,17 +176,22 @@
margin-left: -40px; margin-left: -40px;
margin-top: 20px; margin-top: 20px;
} }
.spacer-top { .spacer-top {
margin-top: 40px; margin-top: 40px;
} }
.roster-input { .roster-input {
border-radius: 0px; border-radius: 0px;
border-right: none; border-right: none;
border-top: none; border-top: none;
} }
.table-bordered>thead>tr>td, .table-bordered>thead>tr>th{
.table-bordered>thead>tr>td,
.table-bordered>thead>tr>th {
border-bottom-width: 0px; border-bottom-width: 0px;
} }
.btn-roster-action { .btn-roster-action {
/* width: 20px; /* width: 20px;
height: 20px; height: 20px;
@@ -181,23 +201,37 @@
.btn-group-sm>.btn { .btn-group-sm>.btn {
padding: 0px 0px; padding: 0px 0px;
} }
.table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th{
.table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
vertical-align: unset; vertical-align: unset;
} }
.table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th{ .table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
border: none; border: none;
} }
.table>thead>tr>th { .table>thead>tr>th {
border-bottom: none; border-bottom: none;
} }
.carousel-control.right { .carousel-control.right {
margin-right: 0px; margin-right: 0px;
} }
.carousel-control.left { .carousel-control.left {
margin-left: 0px; margin-left: 0px;
} }
/* .edge-text { position:absolute; top:3px; right:28px; color:#555; font:bold 13px/1 sans-serif;} */ /* .edge-text { position:absolute; top:3px; right:28px; color:#555; font:bold 13px/1 sans-serif;} */
/* these styles are for the demo, but are not required for the plugin */ /* these styles are for the demo, but are not required for the plugin */
@@ -222,6 +256,7 @@
tbody#orderTableBody>tr>td { tbody#orderTableBody>tr>td {
padding: 0px !important; padding: 0px !important;
} }
.panel-design-details { .panel-design-details {
max-height: 300px; max-height: 300px;
overflow: auto; overflow: auto;
@@ -235,12 +270,8 @@
<div class="row"> <div class="row">
<div class="col-lg-12 text-center"> <div class="col-lg-12 text-center">
<div class="store-banner border-top"> <div class="store-banner border-top">
<img <img src="{{ config('site_config.uploads') . 'teamstore/' . $store_array[0]->ImageFolder . '/' . $store_array[0]->StoreBanner }}"
src="{{ config('site_config.uploads') . 'teamstore/' . $store_array[0]->ImageFolder . '/' . $store_array[0]->StoreBanner }}" id="storeBanner" class="shadow-sm img-fluid w-100" alt="..." />
id="storeBanner"
class="shadow-sm img-fluid w-100"
alt="..."
/>
</div> </div>
</div> </div>
</div> </div>
@@ -253,9 +284,8 @@
<nav aria-label="breadcrumb"> <nav aria-label="breadcrumb">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="{{ url('store') }}/{{ $store_array[0]->StoreUrl }}" <a
>{{$store_array[0]->StoreName}}</a href="{{ url('store') }}/{{ $store_array[0]->StoreUrl }}">{{ $store_array[0]->StoreName }}</a>
>
</li> </li>
<li class="breadcrumb-item active" aria-current="page"> <li class="breadcrumb-item active" aria-current="page">
{{ $product_array[0]->ProductName }} {{ $product_array[0]->ProductName }}
@@ -268,36 +298,23 @@
<div class="row pb-5"> <div class="row pb-5">
<div class="col-lg-6"> <div class="col-lg-6">
<div <div id="demo" class="carousel slide vert" data-bs-interval="false" data-bs-ride="carousel">
id="demo"
class="carousel slide vert"
data-bs-interval="false"
data-bs-ride="carousel"
>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col-12 col-sm-12 col-md-12 col-lg-3 col-xl-3"> <div class="col-12 col-sm-12 col-md-12 col-lg-3 col-xl-3">
<div class="carousel-indicators"> <div class="carousel-indicators">
@define $i = 0 @define $i = 0
@foreach ($thumbnails_array as $thumbnail) @foreach ($thumbnails_array as $thumbnail)
@if ($thumbnail->ImageClass == 'active') @if ($thumbnail->ImageClass == 'active')
<div <div data-bs-target="#demo" data-bs-slide-to="{{ $i }}"
data-bs-target="#demo" class="item active">
data-bs-slide-to="{{ $i }}"
class="item active"
>
<img <img
src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" />
/>
</div> </div>
@else @else
<div <div data-bs-target="#demo" data-bs-slide-to="{{ $i }}"
data-bs-target="#demo" class="item">
data-bs-slide-to="{{ $i }}"
class="item"
>
<img <img
src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" />
/>
</div> </div>
@endif @endif
@define $i++ @define $i++
@@ -307,25 +324,19 @@
<!-- col-sm-4 Indicators --> <!-- col-sm-4 Indicators -->
<div class="col-12 col-sm-12 col-md-12 col-lg-9 col-xl-9 order-first order-lg-last"> <div class="col-12 col-sm-12 col-md-12 col-lg-9 col-xl-9 order-first order-lg-last">
<div <div class="border text-center p-1 product-active-thumbnail">
class="border text-center p-1 product-active-thumbnail"
>
<div class="carousel-inner align-self-center"> <div class="carousel-inner align-self-center">
@define $j = 0 @define $j = 0
@foreach ($thumbnails_array as $thumbnail) @foreach ($thumbnails_array as $thumbnail)
@if ($j == 0) @if ($j == 0)
<div class="carousel-item active"> <div class="carousel-item active">
<img <img src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}"
src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" class="img-fluid" />
class="img-fluid"
/>
</div> </div>
@else @else
<div class="carousel-item"> <div class="carousel-item">
<img <img src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}"
src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}" class="img-fluid" />
class="img-fluid"
/>
</div> </div>
@endif @endif
@define $j++ @define $j++
@@ -353,10 +364,16 @@
@include('teamstore-sublayouts.forms.'.$product_array[0]->ProductForm) @include('teamstore-sublayouts.forms.'.$product_array[0]->ProductForm)
@if ($product_array[0]->ProductPrice > 0) @if ($product_array[0]->ProductPrice > 0)
{{-- @if ($available_qty !== null) --}}
@if ($available_qty > 0 || $available_qty === null)
<div class="py-3"> <div class="py-3">
<button class="btn btn-black" type="submit" id="btn-add-to-cart"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> Add to Cart</button> <button class="btn btn-black" type="submit" id="btn-add-to-cart">Add
to Cart</button>
</div> </div>
@endif @endif
{{-- @endif --}}
@endif
</form> </form>
<hr> <hr>
<p>{{ $product_array[0]->ProductDescription }}</p> <p>{{ $product_array[0]->ProductDescription }}</p>
@@ -371,15 +388,13 @@
<p>...</p> <p>...</p>
</div> --}} </div> --}}
@foreach ($store_products as $product) @foreach ($store_products as $product)
<div <div class="col-lg-2 col-md-3 col-6" v-for="index in 6" :key="index">
class="col-lg-2 col-md-3 col-6"
v-for="index in 6"
:key="index"
>
<div class="text-center p-3"> <div class="text-center p-3">
<a href="{{ url('store') . '/' . $product->StoreUrl . '/product/' . $product->ProductURL }}"> <a
href="{{ url('store') . '/' . $product->StoreUrl . '/product/' . $product->ProductURL }}">
<div class="store-logo"> <div class="store-logo">
<img src="{{ config('site_config.images_url') . '/' . $product->Image }}" alt="{{ $product->ProductName }}" class="d-block border shadow-sm"> <img src="{{ config('site_config.images_url') . '/' . $product->Image }}"
alt="{{ $product->ProductName }}" class="d-block border shadow-sm">
</div> </div>
<div class="store-name text-truncate">{{ $product->ProductName }}</div> <div class="store-name text-truncate">{{ $product->ProductName }}</div>
</a> </a>

View File

@@ -1952,7 +1952,7 @@
function submitFormItemDetails(){ function submitFormItemDetails(){
var data = $("#frm-item-details").serialize(); var data = $("#frm-item-details").serialize();
console.log(data) // console.log(data)
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
url : "{{ url('user/store-items/update') }}", url : "{{ url('user/store-items/update') }}",

View File

@@ -144,6 +144,11 @@
</select> </select>
<span id="err_available_size"></span> <span id="err_available_size"></span>
</div> </div>
<div class="form-group">
<label>Item Quantity <small>(Optional)</small></label>
<input id="item_quantity" name="item_quantity" class="form-control" type="number" min="0" value="{{ $product_array[0]->ProductAvailableQty }}" data-error="#err-quantity" />
</div>
{{-- {{ var_dump($product_array[0]) }} --}}
<div class="form-group"> <div class="form-group">
<label>Item Privacy</label> <label>Item Privacy</label>
<select class="form-control" name="item_privacy"> <select class="form-control" name="item_privacy">