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

@@ -1,35 +1,36 @@
@extends('merchbay_main') @extends('merchbay_main')
@section('main-content') @section('main-content')
@if ($store_array[0]->IsHibernated) @if ($store_array[0]->IsHibernated)
<script> <script>
window.location = "../"; window.location = "../";
</script> </script>
@endif @endif
<style> <style>
.carousel-item img { .carousel-item img {
/* width: 100%; */ /* width: 100%; */
/* height: 100%; */ /* height: 100%; */
object-fit: contain !important; object-fit: contain !important;
width: 100% !important; width: 100% !important;
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;
overflow-y: scroll !important; overflow-y: scroll !important;
overflow-x: hidden !important; overflow-x: hidden !important;
position: static !important; position: static !important;
direction: rtl !important; direction: rtl !important;
} }
.carousel-inner, .carousel-inner,
.carousel-item { .carousel-item {
height: 100%; height: 100%;
} }
@media screen and (max-width: 992px) { @media screen and (max-width: 992px) {
.carousel-indicators { .carousel-indicators {
display: inline-flex !important; display: inline-flex !important;
direction: inherit !important; direction: inherit !important;
@@ -45,31 +46,34 @@
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 */
::-webkit-scrollbar { /* width */
::-webkit-scrollbar {
width: 5px; width: 5px;
height: 5px; height: 5px;
} }
/* Track */ /* Track */
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
background: #f1f1f1; background: #f1f1f1;
} }
/* Handle */ /* Handle */
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: #888; background: #888;
} }
/* Handle on hover */ /* Handle on hover */
::-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;
cursor: pointer !important; cursor: pointer !important;
@@ -77,18 +81,19 @@
width: 100px !important; width: 100px !important;
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;
padding: 5px; padding: 5px;
} }
.item.active { .item.active {
border: 1px solid #000000 !important; border: 1px solid #000000 !important;
} }
.item img { .item img {
border: 1px solid transparent !important; border: 1px solid transparent !important;
opacity: 0.5; opacity: 0.5;
transition: 0.5s !important; transition: 0.5s !important;
@@ -97,150 +102,176 @@
display: block !important; display: block !important;
margin: auto; margin: auto;
} }
.item:hover { .item:hover {
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 {
font-size: 15px;
}
@media screen and (max-width: 992px) { .content p {
font-size: 15px;
}
@media screen and (max-width: 992px) {
.content { .content {
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 {
list-style:none; list-style: none;
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;
border-radius: 10px; */ border-radius: 10px; */
} }
.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{
margin-right :0px; .carousel-control.right {
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 */
.zoom { .zoom {
display:inline-block; display: inline-block;
position: relative; position: relative;
} }
/* magnifying glass icon */ /* magnifying glass icon */
.zoom:after { .zoom:after {
content:''; content: '';
display:block; display: block;
width:33px; width: 33px;
height:33px; height: 33px;
position:absolute; position: absolute;
top:0; top: 0;
right:0; right: 0;
/* background:url("{{asset('public/images/icon.png') }}"); */ /* background:url("{{ asset('public/images/icon.png') }}"); */
} }
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;
} }
</style> </style>
<div class="wrapper bg-white pb-5"> <div class="wrapper bg-white pb-5">
<div class="main__banner"> <div class="main__banner">
<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++
@@ -352,11 +363,17 @@
<input type="hidden" value="{{ md5($product_array[0]->Id) }}" name="p_id" id="p_id" /> <input type="hidden" value="{{ md5($product_array[0]->Id) }}" name="p_id" id="p_id" />
@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">