diff --git a/.env.example b/.env.example index ddba5b7..7e219a0 100755 --- a/.env.example +++ b/.env.example @@ -60,7 +60,7 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" -ZARINPAL_MERCHANT='12000000-0220-0000-0220-220000000001' +ZARINPAL_MERCHANT='test' PAY_GATWAY=zarinpal THUMBNAIL_SIZE=600x600 diff --git a/app/Http/Controllers/Admin/TransportController.php b/app/Http/Controllers/Admin/TransportController.php index 58f6d79..1dc7f31 100755 --- a/app/Http/Controllers/Admin/TransportController.php +++ b/app/Http/Controllers/Admin/TransportController.php @@ -12,9 +12,11 @@ class TransportController extends Controller { function createOrUpdate(Transport $transport,TransportSaveRequest $request){ + $transport->price = $request->price; $transport->title = $request->title; $transport->description = $request->description; + $transport->is_default = $request->has('is_default'); if ($request->has('is_default')){ Transport::where('is_default')->update([ 'is_default' => 0, diff --git a/app/Http/Controllers/WebsiteController.php b/app/Http/Controllers/WebsiteController.php index b534ef1..3b33057 100755 --- a/app/Http/Controllers/WebsiteController.php +++ b/app/Http/Controllers/WebsiteController.php @@ -65,7 +65,7 @@ class WebsiteController extends Controller // $vid = Clip::latest()->where('active', 1)->first(); $discount = Discount::whereNotNull('expire') - ->where('expire', '>', \DB::raw('NOW()')) + ->where('expire', '>', date('Y-m-d')) ->whereNotNull('product_id')->pluck('product_id')->toArray(); $disPros = Product::whereIn('id', $discount)->get(); diff --git a/app/Models/Product.php b/app/Models/Product.php index 5c4d11e..305a5c8 100755 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -327,7 +327,7 @@ class Product extends Model implements HasMedia function hasDiscount() { - return $this->discounts()->where('expire', '>', \DB::raw('NOW()'))->count() > 0; + return $this->discounts()->where('expire', '>', date('Y-m-d'))->count() > 0; } public function isFav() diff --git a/database/factories/CustomerFactory.php b/database/factories/CustomerFactory.php index 9274633..2e35aa3 100755 --- a/database/factories/CustomerFactory.php +++ b/database/factories/CustomerFactory.php @@ -2,6 +2,8 @@ namespace Database\Factories; +use App\Models\Address; +use App\Models\Customer; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -16,8 +18,21 @@ class CustomerFactory extends Factory */ public function definition() { + + $state = rand(1,31); + + $k = array_keys(Address::$cities[$state]); + shuffle($k); return [ // + 'name' => $this->faker->name, + 'address' => $this->faker->address, + 'mobile' => '0912'.rand(1111111,9999999), + 'email' => $this->faker->unique()->email, + 'state' => $state, + 'city' => $k[0], + 'password' => bcrypt('password'), + 'credit' => 0, ]; } } diff --git a/database/seeders/CustomerSeeder.php b/database/seeders/CustomerSeeder.php new file mode 100644 index 0000000..a1edb47 --- /dev/null +++ b/database/seeders/CustomerSeeder.php @@ -0,0 +1,21 @@ +create(); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 27c0971..3f43c04 100755 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders; +use App\Models\Customer; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Storage; @@ -32,6 +33,7 @@ class DatabaseSeeder extends Seeder UserSeeder::class, CategorySeeder::class, CatSeeder::class, + CustomerSeeder::class, PostSeeder::class, MenuSeeder::class, PropSeeder::class, diff --git a/public/css/app.css b/public/css/app.css index 544203a..f1e587c 100755 --- a/public/css/app.css +++ b/public/css/app.css @@ -730,6 +730,32 @@ li.no_results { display: none; } +.cats-x3 { + -moz-column-count: 4; + column-count: 4; +} + +/*-1000px width*/ +@media (max-width: 1000px) { + .cats-x3 { + -moz-column-count: 3; + column-count: 3; + } +} +/*-600px width*/ +@media (max-width: 600px) { + .cats-x3 { + -moz-column-count: 2; + column-count: 2; + } +} +/*-300px width*/ +@media (max-width: 300px) { + .cats-x3 { + -moz-column-count: 1; + column-count: 1; + } +} .wizard .steps { display: flex; position: relative; @@ -906,6 +932,10 @@ li.no_results { background: dodgerblue; } +.select2-container { + max-width: 97%; +} + body { overflow-x: hidden; zoom: 100%; diff --git a/public/css/theme.css b/public/css/theme.css index 0397fe3..1306f68 100755 --- a/public/css/theme.css +++ b/public/css/theme.css @@ -10773,7 +10773,9 @@ tr.border-bottom td { } .pink-pattern { - background: url(/images/loginbg.png?c2ff5cc63e62d379756642a76feda7a9) !important; + background: url(/images/shop.jpg?b9d2a691aa19c475462365228672329f) no-repeat !important; + background-size: cover !important; + background-position: center !important; margin-top: 0; padding-top: 10vh; padding-bottom: 10vh; @@ -11435,6 +11437,48 @@ h3.textt{ transform: scale(1); } } +.color-pick .color { + display: inline-block; + opacity: 0.75; + margin-right: 4px; + border-radius: 15px; + border: 1px dotted silver; +} + +.color-pick .color span { + display: inline-block; + mix-blend-mode: darken; + font-size: 11px; + padding-right: 4px; + padding-left: 4px; +} + +.color-pick .color .cl { + float: left; + min-width: 25px; + height: 25px; + display: inline-block; + border-radius: 50%; + position: relative; + cursor: pointer; +} + +.color-pick .color.active { + opacity: 1; + border: 1px solid black; + position: relative; + padding-right: 15px; +} + +.color-pick .color.active .cl:after { + content: "✓"; + right: 20%; + top: 5%; + position: absolute; + color: white; + mix-blend-mode: difference; +} + .x-mega-menu { background: #eeeeee; display: grid; diff --git a/public/images/shop.jpg b/public/images/shop.jpg new file mode 100644 index 0000000..bf52b60 Binary files /dev/null and b/public/images/shop.jpg differ diff --git a/resources/js/components/MetaPrice.vue b/resources/js/components/MetaPrice.vue index 6df80a3..f520bc6 100755 --- a/resources/js/components/MetaPrice.vue +++ b/resources/js/components/MetaPrice.vue @@ -125,7 +125,12 @@ export default { }, methods: { changeImg:function ($k) { + // console.log($k); + // console.log(this.onSelectImage); + // console.log(this.quantities); this.quantities[this.onSelectImage].image = $k; + // console.log(this.quantities); + this.$forceUpdate(); }, showModal: function (i) { // this.showModal(i); @@ -212,12 +217,16 @@ export default { background: #FFFFFF99; z-index: 999; overflow-y: scroll; + backdrop-filter: blur(3px); } #overlay img { max-width: 100%; + width: 100%; opacity: .75; + height: 150px; + object-fit: cover; } #overlay img.selected { diff --git a/resources/sass/card.scss b/resources/sass/card.scss index cb51e5b..d583386 100644 --- a/resources/sass/card.scss +++ b/resources/sass/card.scss @@ -403,3 +403,49 @@ transform: scale(1); } } + + +.color-pick { + +} + +.color-pick .color { + display: inline-block; + opacity: .75; + margin-right: 4px; + border-radius: 15px; + border: 1px dotted silver; +} +.color-pick .color span { + display: inline-block; + mix-blend-mode: darken; + font-size: 11px; + padding-right: 4px; + padding-left: 4px; +} + +.color-pick .color .cl{ + float: left; + min-width: 25px; + height: 25px; + display: inline-block; + border-radius: 50%; + position: relative; + cursor: pointer; +} + +.color-pick .color.active { + opacity: 1; + border: 1px solid black; + position: relative; + padding-right: 15px; +} + +.color-pick .color.active .cl:after { + content: '✓'; + right: 20%; + top:5%; + position: absolute; + color: white; + mix-blend-mode: difference; +} diff --git a/resources/sass/fix-libs.scss b/resources/sass/fix-libs.scss index 5ff5e68..5fa96c2 100755 --- a/resources/sass/fix-libs.scss +++ b/resources/sass/fix-libs.scss @@ -1,3 +1,7 @@ .multiselect__tag{ background: dodgerblue; } + +.select2-container{ + max-width: 97%; +} diff --git a/resources/sass/props.scss b/resources/sass/props.scss index 1272fe0..dc7765c 100755 --- a/resources/sass/props.scss +++ b/resources/sass/props.scss @@ -2,3 +2,29 @@ #xls-file,#optionz{ display: none; } + +.cats-x3{ + column-count: 4 +} + +/*-1000px width*/ +@media (max-width: 1000px) { + .cats-x3{ + column-count: 3 + } +} + +/*-600px width*/ +@media (max-width: 600px) { + .cats-x3{ + column-count: 2 + } +} + +/*-300px width*/ +@media (max-width: 300px) { + .cats-x3{ + column-count: 1 + } +} + diff --git a/resources/theme/css/shop.jpg b/resources/theme/css/shop.jpg new file mode 100644 index 0000000..bf52b60 Binary files /dev/null and b/resources/theme/css/shop.jpg differ diff --git a/resources/theme/css/style.css b/resources/theme/css/style.css index bffa1b0..ef04695 100755 --- a/resources/theme/css/style.css +++ b/resources/theme/css/style.css @@ -804,7 +804,9 @@ tr.border-bottom td { } .pink-pattern { - background: url("../css/loginbg.png") !important; + background: url("../css/shop.jpg") no-repeat !important; + background-size: cover !important; + background-position: center !important; margin-top: 0; padding-top: 10vh; padding-bottom: 10vh; diff --git a/resources/theme/js/theme.js b/resources/theme/js/theme.js index f626f56..a06479e 100755 --- a/resources/theme/js/theme.js +++ b/resources/theme/js/theme.js @@ -388,8 +388,8 @@ jQuery(function ($) { } sizes = {}; - qnt = JSON.parse($('#qnt').val()); - // console.log(qnt); + let qnt = JSON.parse($('#qnt').val()); + console.log(qnt); let txt = ''; for( const q of qnt) { if (q.count > 0){ @@ -408,17 +408,17 @@ jQuery(function ($) { setTimeout(function () { $("#size-pick .size:first-child").click(); },50); - $("#size-pick .size").bind('click.select',function () { - $("#size-pick .size").removeClass('active'); + // $("#size-pick .size").bind('click.select',function () { + // $("#size-pick .size").removeClass('active'); let colorNames = {}; try { colorNames = JSON.parse($("#colors").val()); } catch { } - $(this).addClass('active'); + // $(this).addClass('active'); let colors = sizes[$(this).data('id')]; - let txt = ''; + txt = ''; let cl = ''; for( const c of colors) { let p = c.price; @@ -450,7 +450,7 @@ jQuery(function ($) { $("#counting").text($(this).data('count')); $(".product-count").attr('max',$(this).data('count')).val(1); }); - }); + // }); } } catch (e) { diff --git a/resources/theme/theme.js b/resources/theme/theme.js index 156ed8a..eef07e4 100755 --- a/resources/theme/theme.js +++ b/resources/theme/theme.js @@ -1,69 +1 @@ -axios = require('axios'); -window.axios = axios; -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -alertify = require('alertifyjs'); -require('../js/bootstrap'); -window._ = require('lodash'); -require('bootstrap/dist/js/bootstrap.bundle') -require('chart.js/dist/chart.min') -var $ = window.jQuery = jQuery = require('jquery'); -require('lightbox2/dist/js/lightbox.min'); -require('owl.carousel/dist/owl.carousel.min'); -require('xzoom/dist/xzoom.min'); - -window.Vue = require('vue').default; - -// require('./js/gsap.min.js'); -// require('./js/Physics2DPlugin3.min'); -// require('./js/mega-menu.js'); -require('./js/product.js'); -require('./js/theme.js'); -require('./js/chart.js'); -require('../js/customer.js'); - - - - -// require('../js/') -Vue.component('example-component', require('../js/components/ExampleComponent.vue').default); -Vue.component('meta-price', require('../js/components/MetaPrice.vue').default); -Vue.component('currency', require('../js/components/CurrencyInput.vue').default); -Vue.component('meta-element', require('../js/components/MetaElement.vue').default); -Vue.component('meta-search', require('../js/components/MetaSearch').default); - -var app = new Vue({ - el: '#app', - data: { - metaz: '123', - jdata: [], - def: [], - }, - mounted() { - - }, - created() { - if (document.querySelector('#jDataSrc') !== undefined && document.querySelector('#jDataSrc') != null){ - try { - this.jdata = JSON.parse(document.querySelector('#jDataSrc').value); - this.def = JSON.parse(document.querySelector('#jDef').value); - } catch { - console.log('json error: for meta product page'); - } - } - }, - methods: { - }, - watch:{ - jdata:{ - handler: function(n) { - this.$refs.metaEl.updateJdata(n); - // this.$refs.metaPr.updateJdata(n); - }, - deep: true - }, - } -}); -window.app = app; - - +axios = require('axios'); window.axios = axios; window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; alertify = require('alertifyjs'); require('../js/bootstrap'); window._ = require('lodash'); require('bootstrap/dist/js/bootstrap.bundle') require('chart.js/dist/chart.min') var $ = window.jQuery = jQuery = require('jquery'); require('lightbox2/dist/js/lightbox.min'); require('owl.carousel/dist/owl.carousel.min'); require('xzoom/dist/xzoom.min'); window.Vue = require('vue').default; // require('./js/gsap.min.js'); // require('./js/Physics2DPlugin3.min'); // require('./js/mega-menu.js'); require('./js/product.js'); require('./js/theme.js'); require('./js/chart.js'); require('../js/customer.js'); // require('../js/') Vue.component('example-component', require('../js/components/ExampleComponent.vue').default); Vue.component('meta-price', require('../js/components/MetaPrice.vue').default); Vue.component('currency', require('../js/components/CurrencyInput.vue').default); Vue.component('meta-element', require('../js/components/MetaElement.vue').default); Vue.component('meta-search', require('../js/components/MetaSearch').default); var app = new Vue({ el: '#app', data: { metaz: '123', jdata: [], def: [], }, mounted() { }, created() { if (document.querySelector('#jDataSrc') !== undefined && document.querySelector('#jDataSrc') != null){ try { this.jdata = JSON.parse(document.querySelector('#jDataSrc').value); this.def = JSON.parse(document.querySelector('#jDef').value); } catch { console.log('json error: for meta product page'); } } }, methods: { }, watch:{ jdata:{ handler: function(n) { this.$refs.metaEl.updateJdata(n); // this.$refs.metaPr.updateJdata(n); }, deep: true }, } }); window.app = app; \ No newline at end of file diff --git a/resources/views/admin/product/form/publishProductForm.blade.php b/resources/views/admin/product/form/publishProductForm.blade.php index 9476d36..1c63e7e 100755 --- a/resources/views/admin/product/form/publishProductForm.blade.php +++ b/resources/views/admin/product/form/publishProductForm.blade.php @@ -2,18 +2,13 @@
-
- - active??0) != 0) - checked - @endif - value="1"/> -
+
+ active??0) != 0) + checked + @endif> + +
diff --git a/resources/views/admin/props/propForm.blade.php b/resources/views/admin/props/propForm.blade.php index 2a82269..58d0e03 100755 --- a/resources/views/admin/props/propForm.blade.php +++ b/resources/views/admin/props/propForm.blade.php @@ -15,9 +15,9 @@ @include('starter-kit::component.err')
@csrf @@ -35,7 +35,7 @@
+ value="{{old('width',$p->width??'col-md-12')}}">
@@ -63,7 +63,7 @@
-
-
- - +
+ + {{-- --}} + {{-- --}} + {{-- @foreach($allCategories as $cat)--}} + {{-- --}} + {{-- @endforeach--}} + {{-- --}} + {{-- --}} +
+ @foreach($allCategories as $k => $cat) + +
+ id,$cats)) checked @endif name="category[]" + type="checkbox" id="c{{$k}}"> +
+ @endforeach +
+ +
- priceable) checked @endif name="priceable" class="form-check"> + priceable) checked @endif name="priceable" + class="form-check">
{{__("Icon")}} @@ -137,7 +151,9 @@
-
+
+
+
diff --git a/resources/views/admin/transport/transportForm.blade.php b/resources/views/admin/transport/transportForm.blade.php index ce25018..febcf5d 100755 --- a/resources/views/admin/transport/transportForm.blade.php +++ b/resources/views/admin/transport/transportForm.blade.php @@ -45,16 +45,19 @@ - +
- is_default) checked @endif/> - + +
+ is_default) checked @endif type="checkbox" id="is_default"> + +
+ +
diff --git a/resources/views/website/product.blade.php b/resources/views/website/product.blade.php index 1c346b1..146077a 100755 --- a/resources/views/website/product.blade.php +++ b/resources/views/website/product.blade.php @@ -147,17 +147,29 @@
- - @php $colors = json_decode(\App\Helpers\getProp('color')->options,'true'); @endphp - @foreach($colors as $c) -
- @endforeach
@endif + + + تعداد + + + {{--
--}} +
+
+ +
+ +
+ +
+
+ + @if($pro->hasMeta('warranty')) @@ -207,8 +219,8 @@
- + افزودن به سبد خرید @@ -227,6 +239,7 @@
+ @foreach($pro->getAllMeta() as $k => $meta) @if($k != 'color' && $k != 'warranty') @@ -382,6 +395,7 @@ + get();!!}'> diff --git a/tests/Feature/AdminWebPagesTest.php b/tests/Feature/AdminWebPagesTest.php index c34e89e..9030260 100644 --- a/tests/Feature/AdminWebPagesTest.php +++ b/tests/Feature/AdminWebPagesTest.php @@ -208,7 +208,7 @@ class AdminWebPagesTest extends TestCase $response->assertStatus(200); if (Customer::count() != 0){ - $response = $this->actingAs($user)->get(route('admin.customer.edit',Customer::first()->slug)); + $response = $this->actingAs($user)->get(route('admin.customer.edit',Customer::first()->id)); $response->assertStatus(200); }