Sunday, July 31, 2022

Ajax load lage with laravel.

 step-1:  HTML

<div class="row">

                    <div class="col-lg-12">  

                        <div class="card mb-0">

                            <div class="tab-content card-body p-0 pt-2">

                                <div class="tab-pane fade active show">

                                    <div class="card-body pt-0">

                                        <div class="card-table table-responsive shadow-0 mb-0 wait">

                                             <div id="load_data"></div> 

                                        </div>

                                    </div>

                                </div>

                            </div>

                        </div> 

                    </div>

                </div>

step-2:  Javascript Link

<script src="{{ asset('/website/assets/wait-me/waitMe.min.js')}}"></script>

step-3: Ajax function

$('.get_data_btn').on('click', function(){ 

            get_data();

        });


        function get_data(){

          var base = '{{url('/')}}';

          var product_life_id =$('.product_id').val();  

          var from_date = $('.from_date').val(); 

          var to_date = $('.to_date').val(); 


          if(product_life_id){

            $('.wait').waitMe({effect : 'facebook', text : 'Please wait...'});

             $.ajax({

                  method: 'GET', 

                  url: base+'/backoffice/report/product-life-cycle/filter', 

                  data: {'from_date' : from_date, 'to_date' : to_date, 'product_life_id' : product_life_id}, 

                  success: function(data){ // What to do if we succeed

                      //console.log(response);  

                      $('#load_data').html(data);

                  },

                  error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail

                      console.log(JSON.stringify(jqXHR));

                      console.log("AJAX error: " + textStatus + ' : ' + errorThrown);

                  }

              }).always(function(){

                    $('.wait').waitMe("hide");

                });


          }else{

            alert('Please first type product name');

          } 

        }



step-4: Create load_data.blade.php

public function product(Request $request){

  return view ('load.load_data');

 }















Thursday, November 26, 2020

Add More Multiple Div and remove div

  <div id="employeement_more">

    <div class="row employeementAppendDiv" style="border-top: 1px dotted #d3d3d3; margin-top: 40px;">

    <input type="hidden" class="index" name="employeement[0][index]" value="0"/>

   <div class="col-md-6">

           <div class="form-group">

                   <label for="designation">Designation</label>

                    <input type="text" name="employeement[0][designation]"  class="form-control designation">

              </div>

            </div>

<div class="col-md-6"> 

        <button type="button" class="btn btn-danger btn-sm remove_from_list_div d-none" style="position: absolute;">

          <i class="fa fa-times"></i>

         </button> 

       </div>

</div>

<div>



<div class="pull-right"

     <button type="button" class="btn btn-success btn-sm pull-right addMoreEmployeement"><span             class="fa fa-plus"></span> Add More</button>  

</div>




$('.addMoreEmployeement').on('click', function(){


            var last_index=$('.employeementAppendDiv').last().index();   


            var cloned=$('.employeementAppendDiv').last().clone(true);


            cloned.find(".remove_from_list_div" ).removeClass('hidden');


            cloned.find(".index" ).attr('name', "employeement["+(last_index+1)+"][index]").val(last_index+1);


            cloned.find(".designation" ).attr('name', "employeement["+(last_index+1)+"][designation]").val('');


            cloned.find(".job_category_department" ).attr('name', "employeement["+(last_index+1)+"][job_category_department]").val('');


            //cloned.find(".duration" ).attr('name', "employeement["+(last_index+1)+"][duration]"); 

            cloned.find(".start_date" ).attr('name', "employeement["+(last_index+1)+"][start_date]").val(''); 

            cloned.find(".end_date" ).attr('name', "employeement["+(last_index+1)+"][end_date]").val(''); 

            cloned.find(".company" ).attr('name', "employeement["+(last_index+1)+"][company]").val('');


            cloned.appendTo( "#employeement_more" );


        });



///////////////////// Remove div ///////////////////////////////


        $('.remove_from_list_div').on('click', function(){


           $(this).closest('.employeementAppendDiv').remove();


        });



////////////////////// Dynamic Datepicker Added /////////////////////////////



  $('body').on('focus',".start_date", function(){  

     $(this).removeClass('hasDatepicker').removeAttr('id').datepicker({

         dateFormat : 'dd/mm/yy',

         changeMonth : true,

         changeYear : true,

         yearRange: '-100y:c+nn',

         maxDate: '-1d'

      });  

   }); 

Sunday, August 30, 2020

Sweet Alert delete using Laravel ?

 Delete btn:

<a href="{!!route('news-letter-delete',$row->id )!!}" class="btn btn-danger deleteBtn pull-right py-0" data-token="{!! csrf_token() !!}" data-id="{!! $row->id !!}"><span class="icofont icofont-trash"> </span></a>


web.php

Route::delete('/news-letter-delete/{id}',

[

'as' => 'news-letter-delete',

'uses' => 'Admin\NletterController@destroy',

'middleware' => ['permission:All|Configuration']

]

)->where('id', '[0-9]+');


Controller:


public function destroy($id)

    {

        $deleteData = Nletter::FindOrFail($id); 


        try{


            $deleteData->delete();


            NletterDetail::where('nletter_id',$id)->delete();


            $bug = 0;

        }

        catch(\Exception $e){

            $bug = $e->errorInfo[1];

        }


        if($bug==0){

            echo "success";

              

        }else{

            echo 'error';

        } 

         

    }


CSS :

      <!-- sweetalert css -->

   <link rel="stylesheet" href="{!! asset('js/sweetalert/sweetalert.css') !!}">


JS: include  master.blade.php 


<script src="{!! asset('js/sweetalert/sweetalert-dev.js') !!}"></script>

   <script type="text/javascript">

     $(document).on('click', '.deleteBtn', function () {

                var actionTo=$(this).attr('href');

                var token=$(this).attr('data-token');

                var id=$(this).attr('data-id');


                swal({

                        title: "Are you sure?",

                        text: "You will not be able to recover this imaginary file!",

                        type: "success",

                        showCancelButton: true,

                        confirmButtonClass: 'btn-danger',

                        confirmButtonColor: "#DD6B55",

                        confirmButtonText: 'Yes, delete it!',

                        cancelButtonText: "Cancel",

                        closeOnConfirm: false,

                        closeOnCancel: false

                    },

                    function (isConfirm) {

                        if (isConfirm) {

                            $.ajax({

                                url:actionTo,

                                type: 'post',

                                data: {_method: 'delete',_token:token},

                                success: function (data) {


                                    if (data == 'hasForeignKey') {

                                        swal({

                                            title: "Oops!",

                                            text: "This data is used anywhere",

                                            type: "error"

                                        });

                                    } else if(data == 'success'){

                                        swal({

                                                title: "Deleted!",

                                                text: "Your information delete successfully.",

                                                type: "success"

                                            },

                                            function (isConfirm) {

                                                if (isConfirm) {

                                                    $('.' + id).fadeOut();

                                                }

                                            });

                                    }else{

                                        swal({

                                            title: "Fail to Delete!",

                                            text: "Something Error Found !, Please try again.",

                                            type: "error"

                                        });

                                    }

                                }


                            });

                        } else {

                            swal("Cancelled", "Your data is safe .", "error");

                        }

                    });

                return false;

            });

  </script>

Thursday, August 20, 2020

Vue js delete ?

 HTML:

<button type="button" @click="deleteComment(row.id,index)" ><i class="fa fa-trash-o text-danger hand"></i></button>

Web.php:

 Route::delete('/delete-ticket-comment/{id}', 'Admin\TaskController@deleteTicketComment')->name('backoffice.delete-ticket-comment');

Controller:

public function deleteTicketComment($id){ 

        $taskComment =TaskRemark::findOrFail($id)->delete(); 

    }

Vue Js 

deleteComment:function(id,index) {

                  var ref = this;

                     swal({

                        title: "Are you sure?",

                        text: "You will not be able to recover this data!",

                        type: "warning",

                        showCancelButton: true,

                        buttonsStyling: false,

                        confirmButtonClass: 'btn btn-primary',

                        cancelButtonClass: 'btn btn-light',

                        confirmButtonText: "Yes, delete!",

                        cancelButtonText: "No, cancel!"

                         

                    }).then((willDelete) => {

                           if (willDelete) {

                                axios({

                                  method:'delete',

                                  url:"{{ url('backoffice/delete-task-comment') }}/"+id, 

                                  

                                }).then(function (response) {

                                     ref.alert('Delete Successful','success');

                                     ref.task_remarks.splice(index, 1);

                             });

                           } else {

                                 return true;

                        }

                    }); 

                

                }

            },


Others :

<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>


deleteComment:function(id,index) {

                  var ref = this;

                     swal({ 

                        title: "Are you sure?",

                        text: "You will not be able to recover this data!",

                        icon: "warning",

                        buttons: true,

                        dangerMode: true,

                         

                    }).then((willDelete) => {

                           if (willDelete) {

                                axios({

                                  method:'delete',

                                  url:"{{ url('backoffice/delete-task-comment') }}/"+id, 

                                  

                                }).then(function (response) {

                                     //ref.alert('Delete Successful','success');

                                     swal("Delete Successful!");

                                     ref.task_remarks.splice(index, 1);

                             });

                           } else {

                                 swal("Your imaginary file is safe!");

                        }

                    });  

                }

Saturday, July 25, 2020

Ajax delete with sweetalert & toastr message using laravel ??


HTML:

@foreach($user-> as $key => $row)
                        <tr class="{{$row->id}}">
                            <td>
                                 <a class="deleteAddress" data-id="{{ $row->id }}" title="Delete Shipping Address"><i class="fa fa-trash" aria-hidden="true"></i></a>
                            </td>    
                        </tr>

@endforeach

web.php:

Route::get('/delete-shipping-address/{id}', 'Website\AccountController@delete_shipping_address')->name('delete-shipping-address');

Controller:

 public function delete_shipping_address($id){
      $shipping_address = Address::findOrFail($id);
      $shipping_address->delete();
      return response()->json(['status' => 'success', 'message' => 'Delete Address successfully!']);


  }



css :

<link rel="stylesheet" href="{{ asset('backoffice/global_assets/bootstrap-sweetalert/dist/sweetalert.css') }}">

 <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.css">

JS:

<script src="{{ asset('backoffice/global_assets/bootstrap-sweetalert/dist/sweetalert.min.js') }}"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>


<script type="text/javascript">
    $(function(){
       $('.deleteAddress').click(function() {

            var id=$(this).data('id'); 
            var url = "{{URL('delete-shipping-address')}}";
            var dltUrl = url+"/"+id;

            swal({
              title: "Are you sure?",
              text: "Press Yes to confirm or press No to cancel.",
              type: "warning",
              showCancelButton: true,
              confirmButtonClass: "btn-danger",
              confirmButtonText: "Yes",
              cancelButtonText: "No",
              closeOnConfirm: true,
              closeOnCancel: true
            },
            function(isConfirm){
              if(isConfirm){

                $.ajax({
                    url: dltUrl,
                    type: 'GET',
                    data: { 
                        id:id,
                        _token: "{{ csrf_token() }}"
                    },
                    success: function(data){ 
                        if (data.status == 'success') {
                            toastr.success(data.message); 
                        }  

                        location.reload(); 
                    },
                   
                });
             
              }
            });

       }); 
       
    });

    $(function(){
        toastr.options = {
        "closeButton": true,
        "debug": false,
        "positionClass": "toast-top-right",
        "onclick": null,
        "showDuration": "1000",
        "hideDuration": "1000",
        "timeOut": "5000",
        "extendedTimeOut": "1000",
        "showEasing": "swing",
        "hideEasing": "linear",
        "showMethod": "fadeIn",
        "hideMethod": "fadeOut"
    }

    @if(Session::has('message'))
        var type = "{{ Session::get('alert-type', 'info') }}";
        switch(type){
            case 'info':
                toastr.info("{{ Session::get('message') }}");
                break;

            case 'warning':
                toastr.warning("{{ Session::get('message') }}");
                break;
            case 'success':
                toastr.success("{{ Session::get('message') }}");
                break;
            case 'error':
                toastr.error("{{ Session::get('message') }}");
                break;
        }
    @endif  
    });

</script>

Thursday, July 23, 2020

Ajax Insert Crude with toaster message .???

HTML:

<form action="{{ url('email-registration') }}" method="POST" id="user_register_bng">
                  {{ csrf_field() }}
                    <div class="form-group required-field">
                      <label for="email">Email Address</label>
                      <input type="email" name="email" id="email" class="form-control {{ $errors->has('email') ? 'border-danger' : '' }}" value="{{ old('email') }}" data-validation="email">
                        @if ($errors->has('email'))
                          <span class="text-danger">{{ $errors->first('email') }}</span><br/>
                        @endif
                    </div>
                    <div class="form-group required-field">
                      <label for="password">Password</label>             
                      <input type="password" name="password" id="password" class="form-control {{ $errors->has('password') ? 'border-danger' : '' }}" data-validation="required">
                        @if ($errors->has('password'))
                          <span class="text-danger">{{ $errors->first('password') }}</span><br/>
                        @endif
                    </div>

                    <div class="form-group required-field">
                      <label for="password_confirmation">Retype Password</label>             
                      <input type="password" name="password_confirmation" id="password_confirmation" class="form-control {{ $errors->has('password_confirmation') ? 'border-danger' : '' }}" data-validation="required">
                        @if ($errors->has('password_confirmation'))
                          <span class="text-danger">{{ $errors->first('password_confirmation') }}</span><br/>
                        @endif
                    </div>


                    <button type="submit" id="btnSubmitBng" class="btn btn-block btn-primary mt-2">SIGN UP</button>
                 
                </form>


JS:

<script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>

<script type="text/javascript">
    $.ajaxSetup({

        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
           }
       });

       $("#btnSubmitBng").click(function(e){ 

        e.preventDefault();
        var email = $("#email").val(); 
        var password = $("#password").val(); 
        var password_confirmation = $("#password_confirmation").val();


        $.ajax({

           type:'POST',
           url:'email-registration',
           data:{ password:password, email:email,password_confirmation:password_confirmation},
           success:function(data){

               if (data.status == 'success') {
                    toastr.success(data.message);
                } else if (data.status == 'error') {
                    toastr.error(data.message);
                } else {
                    toastr.error(data.message);
                }
             
           }

        });

       });
 
  </script>

web.php:

Route::post('/email-registration', 'Auth\RegisterController@emailRegistration')->name('email-registration');


Controller:

public function emailRegistration(Request $request){

        $this->validate($request, [
            'email' => 'email',
            'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
            'password_confirmation' => 'min:6'
        ]);

        $existingUser = User::where('email', $request->email)->first();

        if($existingUser){
             return response()->json(['status' => 'erroe', 'message' => 'Your email already exist !']);
        }
       
        $input = $request->all(); 
   
        $input['password'] = Hash::make($request->password);
     
       
        $usertData = User::create($input);
       
         return response()->json(['status' => 'success', 'message' => 'User Registration successfully!']);

    }

Sunday, July 19, 2020

Current position using geolocation in Laravel ?

HTML:

<div id="vip_privilege_div"></div>



JS:

<script src="{{ asset('website/assets/js/geolocation/codegrid.js') }}"></script>

<script type="text/javascript">

  $(function(){

    $("#vip_privilege_div").html('<a href="{{ url("/privilege" ) }}" title="Become a VIP">VIP Privileges</a>');

    var grid = codegrid.CodeGrid();

    navigator.geolocation.getCurrentPosition(function(pos){

        var lat=pos.coords.latitude;
        var lng=pos.coords.longitude;

        grid.getCode (lat, lng, function (err, code) {
            
          if(code=="bd"){

             var url ='{{ url("/privilege" ) }}';
             $("#vip_privilege_div").html('<a href="'+url+'" title="Become a VIP">VIP Privileges</a>');

          }else{

            var url_global ='{{ url("/global") }}';
            $("#vip_privilege_div").html('<a href="'+url_global+'" title="Become a VIP">The Mall Global</a>'); 

          }

        });


    });
</script>

Wednesday, July 15, 2020

Show More/Vew More Button in Laravel & Ajax in single Page ?

blade.php

<div id="load_data">
</div>

<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 my-4">
                    <center>
                        <button id="loadMoreData" data-pos="{{ $take }}" class="btn btn-primary view_btn_second">Show More</button>
                    </center>
                </div>


Js:

script type="text/javascript">

     $('#loadMoreData').on('click', function(){

        var pos=$(this).data('pos');
        var offer_id="{{ $offer->id }}";

        //$("#loadMoreData").html("Loading....");

        $.ajax({

            url:'{{ route("loadmore.load_data") }}',
            method : "GET",
            data : {pos: pos, offer_id: offer_id},

             success:function(res){

                //console.log(res);

                res.products.forEach(function(row){

                    var html='';
                    html+="<div class='col-6 col-md-4 col-lg-3 col-xl-3 col'>";
                    html+="<div class='product fixed_hight'>";

                    html+="<figure class='product-image-container image-frame'>";
                    html+="<a class='product-image' href='"+row.product_url+"'>";
                    html+="<img class='product_img_tag' src='"+row.product_image_url+"' alt='"+row.name+"'/>";
                    html+="</a>";
                    html+="<a href='"+row.quick_view_url+"' class='btn-quickview'>Quick View</a>";
                    html+="</figure>";

                    html+="<div class='product-details'>";

                    html+="<h1 class='text-left product-category'><a href='"+row.brand_url+"'>"+row.brand_name+"</a></h1>";


                    html+="<h1 class='product-title text-left'><a href='"+row.product_url+"'>"+row.brand_product_title+"</a></h1>";

                    html+="<span><div class='price-box float-left'>";

                    if(row.old_price_status){
                      html+="<span class='old-price'>৳ "+row.price_tax_inc+"</span>";
                    }

                    html+="<span class='product-price'>৳ "+row.price+"</span>";

                    html+="</div></span>";

                    html+="</div><br>";
                    //End of product detail

                    if(row.product_in){

                      html+="<span style='position: absolute;bottom: 0px;right: 28%;' class='paction add-cart cursor_pointer addToCart' data-link='"+row.add_to_cart_url+"' data-product_id='"+row.id+"'  data-product_name='"+row.name+"' data-old_price='"+row.price_tax_inc+"' data-product_price='"+row.price+"' data-product_slug='"+row.slug+"' data-product_image='"+row.thumbnail_image+"' title='Add to Cart'><span>Add to Cart</span></span>";

                    }else{

                      html+="<span style='position: absolute;bottom: 0px;right: 28%;color: #c1b6b6' class='paction add-cart cursor_pointer' title='Out of stock'><span>Out of Stock</span></span>";

                    }

                    html+="</div>";
                    html+="</div>";

                    $('#load_data').append(html);

                });

                if(res.next_pos) $('#loadMoreData').data('pos', res.next_pos);
                else $('#loadMoreData').hide();

                $('.product_img_tag').on('error', function(){
                  //$(this).src=res.default_img;
                  $(this).attr("src", res.default_img);
                });

</script>

web.php
Route::get('/loadmore/load_data', 'Website\HomeController@load_data')->name('loadmore.load_data');

Controller:

public function load_data(Request $request){

    $pos=$request->pos;
    $offer_id=$request->offer_id;

    $offer_image = Offer::where('id', $offer_id)->first();
    $offer =$offer_image;
    $offer_cat_ids = OfferCategory::where('offer_id', $offer_id)->pluck('category_id')->toArray();

    $offer_cats =Category::whereIn('id',$offer_cat_ids)->get();

    $offer_children = Offer::where('parent_id',$offer_id)->get();

    $cat_product_ids =ProductCategory::where('category_id',$offer_cat_ids)->pluck('product_id')->toArray();

    $offer_product_ids=[];

    if($offer->offerDetails){
       $offer_product_ids = $offer->offerDetails->whereIn('product_id',$cat_product_ids)->pluck('product_id')->toArray();
    }
   
    $take = 4;

    $products = Product::with([
      'category','thumbnail'
    ])->whereIn(
      'id', $offer_product_ids
    )->where([
      'status'=>1,
      'available'=>1,
      'product_type'=>'step_one'
    ])->orderBy('id','DESC')->skip($pos)->take($take)->get();

    $produsts_data=[];
    $carbon = new \Carbon\Carbon;

    foreach($products as $product){

      $price = 0;
      $old_price_status = 0;
   
      if($product->offer()->exists() && $product->offer->status==1 && $product->offer->end_date !=null) {
          if ($carbon->now()->diffInSeconds($carbon->parse($product->offer->end_date), false) >= 0) {
              $price = $product->price_tax_inc - $product->discount_amount;
              if ($product->discount_amount >0 ) {
              $old_price_status =1;                         
              }                     
          }else{
              $price = $product->price_tax_inc;
          }                     
      }else{
          $price = $product->price_tax_inc;
      }

      array_push($produsts_data, [
        'id'=>$product->id,
        'name'=>$product->name,
        'price'=>$price,
        'slug'=>$product->slug,
        'product_url'=>url('product', $product->slug),
        'product_image_url'=>asset("backoffice/images/products/regular/".cn($product, 'thumbnail.image', '#')),
        'quick_view_url'=>url('product/quick_view', $product->slug),
        'brand_url'=>route('home.brand.products', ['brand'=>cn($product, 'brand.slug', '#')]),
        'brand_name'=>cn($product, 'brand.name', NULL),
        'brand_product_title'=>str_limit($product->name, 50),
        'old_price_status'=>$old_price_status,
        'price_tax_inc'=>$product->price_tax_inc,
        'product_in'=>$product->product_in,
        'add_to_cart_url'=>url('add-to-cart', $product->id),
        'thumbnail_image'=>cn($product, 'thumbnail.image', '#')
      ]);

    }

    if($take > $products->count()){
      $next_pos=NULL;
    }else{
      $next_pos=$pos+$take;
    }

    return [
      'next_pos'=>$next_pos,
      'products'=>$produsts_data,
      'default_img'=>asset('website/assets/images/default.jpg'),
    ];

  }

Tuesday, July 14, 2020

Count Foreach loop with beak in Laravel ?

                           <?php $count = 0; ?>
                                  @foreach($row->children as $column) 
                                       <?php if($count ==4) break; ?>
                                    <div class="col-md-3" style="float: left;">
                                        <a href="{{ route('home.offer.products.cat', ['offer'=>@$offer_id, 'category'=>@$column->id]) }}" class="product-image">
                                            @if(file_exists( public_path().'/backoffice/images/categories/thumbnail/'.@$column->thumbnail->image ) && @$column->thumbnail->image != null)
                                            <img src="{{ asset('/backoffice/images/categories/thumbnail').'/'.@$column->thumbnail->image }}" alt="{{ @$column->name }}" style="border-radius: 50%">
                                            @else                                             
                                                <img src="{{ asset('/website/assets/images/default.jpg')}}" alt="{{ @$column->name }}" style="width: 360px; height: 250px;">
                                            @endif
                                        </a>
                                       
                                         <div class="product-details">
                                            <h1 class="text-center product-category mt-3" style=""><a href="{{ route('home.offer.products.cat', ['offer'=>@$offer_id, 'category'=>@$column->id]) }}">{{ $column->name }}</a></h1>
                                         </div>
                                   </div>
                                   <?php $count++; ?>
                     
                                  @endforeach

Monday, July 13, 2020

Previous URL in Laravel ?

Previous URL
 // mostafij/product/8
 $previous_url    = str_replace(url('/'), '', url()->previous());
 $previous_url_id =  substr($previous_url, 32);

Ans : 8


Sunday, July 5, 2020

select Area to city in laravel ??

web.php :

Route::get('get-sub-cat-list', 'Admin\BlogPostController@getSubCategoryList')->name('get-sub-cat-list');


controller :

public function getSubCategoryList(Request $request){

          $subCatList= SubCategory::where("category_id",$request->category_id)->orderBy('name','ASC')->pluck('id','name');
          return response()->json($subCatList);
    }



public function store(Request $request)
    {
       $post->category_id     = $request->category;
        $post->sub_cat_id      = $request->sub_category_id;
}


Model:

public static function selectSubCategoryList($value) {
        $result = DB::table('blog_sub_categories')->select('*')->where('category_id', $value)->get();
        return $result;
    }


public function edit($id)
 
{
     $subcategories= BlogPost::selectSubCategoryList($post->category_id);
}


public function update(Request $request, $id)
   {
       $post->category_id     = $request->category;
        $post->sub_cat_id      = $request->sub_category_id;
}


create.balte.php:

<div class="row col-md-12">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label class="d-block font-weight-semibold">Post Category<i class="text-danger">*</i></label>
                                    <select id="category_id" name="category" data-placeholder="Select Category" class="form-control form-control-select2" data-fouc>
                                      <option disabled="" selected value>Select Category</option>
                                      @foreach($categories as $category)
                                        <option value="{{$category->id}}" {{ old('category') == $category->id ? 'selected' : '' }}>
                                           {{$category->name}}
                                        </option>
                                      @endforeach
                                    </select>
                                    <span class="text-danger"> {{ $errors->first('name') }}</span>
                                </div>
                            </div>

                            <div class="col-md-6">
                                <div class="form-group">
                                    <label class="d-block font-weight-semibold">Sub Category<i class="text-danger"></i></label>
                                    <select name="sub_category_id" id="sub_category_id" class="form-control form-control-select2" data-fouc>
                                      <option  value>--Select Sub Category--</option>
                                    </select>
                                   
                                    <span class="text-danger"> {{ $errors->first('name') }}</span>
                                </div>
                            </div>

                          </div>


<script type="text/javascript">
     $('#category_id').change(function(){

    var catID = $(this).val();

    if(catID){
        $.ajax({
           type:"GET",
           url:"{{route('get-sub-cat-list')}}?category_id="+catID,
           success:function(res){             
            if(res){
                $("#sub_category_id").empty();
                $("#sub_category_id").append('<option value="">Select Sub Category</option>');
                $.each(res,function(key,value){
                    console.log(value);
                    $("#sub_category_id").append('<option value="'+value+'">'+key+'</option>');
                });
         
            }else{
               $("#sub_category_id").empty();
            }
           }
        });
    }else{
        $("#sub_category_id").empty();
     
    }   
   });
</script>


Or
<script type="text/javascript">
        $('#district').on('change', function(){
            var dist_id = $('#district option:selected').val();
            if (dist_id==1) {
                $('#areaDiv').removeClass('d-none');
                var urll="{{ url('/get_area') }}/"+dist_id;
                $.ajax({
                    url:urll,
                    success: function(data){
                        if (data !='') {
                            $("#area").html(data);
                        }
                    },
                    error: function (data) {
                    }
                });
            }else{
                $('#areaDiv').addClass('d-none');
                var area = $('#area');
                area[0].selectedIndex = -1;
            }
            
        });

    </script>


edit.blade.php

<div class="row col-md-12">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label class="d-block font-weight-semibold">Post Category<i class="text-danger">*</i></label>
                                    <select id="category_id" name="category" data-placeholder="Select Category" class="form-control form-control-select2" data-fouc>
                                      <option disabled="" selected value>Select Category</option>
                                      @foreach($categories as $category)
                                        <option value="{{$category->id}}" @if($category->id == $post->category_id) {{ 'selected' }} @endif>
                                           {{$category->name}}
                                        </option>
                                      @endforeach
                                    </select>
                                    <span class="text-danger"> {{ $errors->first('category') }}</span>
                                </div>
                            </div>

                            <div class="col-md-6">
                                <div class="form-group">
                                    <label class="d-block font-weight-semibold">Sub Category<i class="text-danger"></i></label>
                                    <select name="sub_category_id" id="sub_category_id" class="form-control form-control-select2" data-fouc>
                                      <option  value>--Select Sub Category--</option>
                                     
                                        @if ($subcategories)
                                        @foreach ($subcategories as $val)
                                        ?>
                                        <option value=" {{ $val->id }}" @if ($val->id == $post->sub_cat_id)                                                       {{'selected'}}
                                        @endif>{{ $val->name }}
                                         </option>
                                        @endforeach
                                        @endif
                                     
                                    </select>
                                   
                                    <span class="text-danger"> {{ $errors->first('name') }}</span>
                                </div>
                            </div>

                          </div>

Add more & Remove in Laravel ?

blade.php :

<div class="row" style="margin-top: 36px">
                                <div class="col-lg-12">
                                    <div class="box-body no-padding">
                                        <div class="table-responsive">
                                            <table align='center' class="table table-responsive" spacing='2' cellpadding='5' style="width: 700px;">
                                                <thead>
                                                <tr style="background: lightgrey">
                                                    <th>Product Name</th>
                                                    <th>Action</th>
                                                </tr>
                                                </thead>
                                                <tbody id="productAppendDiv">
                                                        <tr class="row_element">
                                                            <td style="width:700px;"> 
                                                              <input  type="text" name="product_name[]" class="form-control multiple_product" placeholder="Type product name"/>
                                                             
                                                            </td>
                                                            <td>
                                                                <button type="button" class="btn btn-danger deleteProductRow " style="width: 40px; height: 40px"><i class="fa fa-trash"> </i></button>
                                                            </td>
                                                        </tr>
                                                </tbody>
                                            </table>
                                            <div class="col-md-8">
                                                <button type="button" class="btn btn-success btn-sm add pull-right" id="addMoreProducts"><span class="fa fa-plus"></span> Add More Product</button>
                                            </div>
                                        </div>
                                    </div>
                                </div>

                            </div>


<table id="productHideDiv" style="display: none">
    <tr class="row_element"> 
        <td style="width: 700px;">  
          <input  type="text" name="product_name[]" class="form-control multiple_product" placeholder="Type product name"/>

        </td>
        <td>
            <button type="button" class="btn btn-danger deleteProductRow " style="width: 40px; height: 40px"><i class="fa fa-trash"> </i></button>
        </td>
    </tr>
</table>


<script type="text/javascript">
  $( document ).ready(function() {
        $('#addMoreProducts').click(function(){
            var cloned=$('#productHideDiv tr').first().clone(true);
            cloned.appendTo('#productAppendDiv');
           
        });
    });

    $(document).on("click", ".deleteProductRow", function () {
        $(this).parents('.row_element').remove();
    });
</script>

controller :

 public function store(Request $request)

    {
      $post = new BlogPost;
       $post->save();

   
      $productDetails  = $this->makeProductDataFormat($request->product_name,$post->id);

          if(count($productDetails) > 0) {
              BlogProduct::insert($productDetails);
          }
}


public function makeProductDataFormat($data,$postId) {

       BlogProduct::where('post_id',$postId)->delete(); //use  update function
       
        $productDetailsData = [];
        if(isset($data)){
          foreach ($data as  $value) { 
               $product = Product::where(['status'=>1, 'name'=>$value])->first();
               if($product){
                 $productDetailsData[] =[
                    'post_id'     => $postId,
                    'product_id'  => $product->id,
                ];
               } 
            }
        }
       
        return $productDetailsData;

    }

update confirm button from table list using sweet Alert & Ajax Post method ?

JS :

<script src="{{ asset('backoffice/global_assets/bootstrap-sweetalert/dist/sweetalert.min.js') }}"></script>

CSS :

<link rel="stylesheet" href="{{ asset('backoffice/global_assets/bootstrap-sweetalert/dist/sweetalert.css') }}">

wep.php:

Route::post(
    'delivery-man/deposit_status',
    'Admin\DeliveryManMoneyController@depositStatusChange'
)->name('delivery-man.deposit_status');

controller :

public function depositStatusChange(Request $request){

        $deposit=DeliveryManCollection::where(
            'id', $request->collection_id
        )->first();

        $deposit->deposit_status=1;
        $deposit->update();

        return ['msg'=>'Money deposited.'];
         
    }

blade.php :

<td>
           @if($row->deposit_status ==1)

                 <button  class="btn btn-danger" >Deposited</button>
                       @else 
                <button class="btn btn-danger btn-xs action-button deposit_status_change" data-id=" {{$row->id}}">Deposit
                  </button> 

                 @endif
 </td>



<script type="text/javascript">

   
    $(function(){
       $('.deposit_status_change').click(function() {

           var collection_id=$(this).data('id');

           //console.log(urll)

            swal({
              title: "Are you sure?",
              text: "Press Yes to confirm or press No to cancel.",
              type: "warning",
              showCancelButton: true,
              confirmButtonClass: "btn-danger",
              confirmButtonText: "Yes",
              cancelButtonText: "No",
              closeOnConfirm: true,
              closeOnCancel: true
            },
            function(isConfirm){
              if(isConfirm){

                $.ajax({
                    url: "{{ route('delivery-man.deposit_status') }}",
                    type: 'POST',
                    data: {
                        collection_id: collection_id,
                        _token: "{{ csrf_token() }}"
                    },
                    success: function(res){

                        $.jGrowl(res.msg, {
                            header: 'Success',
                            theme: 'alert-bordered alert-styled-left alert-success'
                        });

                        location.reload();

                    },
                   error: function (data) {
                    $.jGrowl('Sorry form submission failed. Try again later.', {
                        header: 'Error',
                        theme: 'alert-bordered alert-styled-left alert-danger'
                    });
                    }
                });
             
              }
            });

       });
    });


</script>



Monday, January 6, 2020

Display image and href from database in Vue js & Javascript datatable


# You can do it :

Vue Js :

passport_nid: { 
           label: 'NID',
           render: (data,type,row) => { return '<img src=" '+ base_url+' '+"uploads/"+' '+"nid_image_folder/" + ' '+row.passport_nid+' " alt="" class="imageSize" width="70px">'}
  }, 


JavaScript :

Ex:01 .html('<img src="'+{{URL::asset('uploads/studentPhoto/')}}+' '+value.photo+'" width="200px;" height="200px">') 


Ex:02
 var url ='{{url("/privilege")}}';

 $("#my_country").html('<a href="'+url+'" title="Become a VIP">VIP Privileges</a>');

Wednesday, January 1, 2020

Laravel Module (nwidart/laravel-modules) package Artisan command

Step:01

#To install through Composer, by run the following command:
  • composer require nwidart/laravel-modules
  • php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

Step:02

#By default the module classes are not loaded automatically. You can autoload your modules using psr-4. For example :
{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/"
    }
  }
}

Step:03

#Tip: don't forget to run composer dump-autoload afterwards


Step:04

Module Artisan Command:
  • php artisan module:make Blog
  • php artisan module:make-migration create_posts_table Blog
  • php artisan module:migrate Blog 
  • php artisan module:seed Blog
  • php artisan module:make-controller PostsController Blog
  • php artisan module:make-model Post Blog
  • php artisan module:make-provider BlogServiceProvider Blog
  • php artisan module:make-request CreatePostRequest Blog

Thursday, November 14, 2019

How to create migration load into subfolder ?

Note  : If create table in  migration sub folder 

Create Table 

php artisan make:migration create_sample_table --path=database/migrations/sub_folder


Note : If multiple Sub Folder migration 

 # php artisan migrate --path=database/migrations/sub_folder1
 # php artisan migrate --path=database/migrations/sub_folder2

Note: If single subfolder migration:

 # php artisan migrate --path=/database/migrations/*

How to create laravel Custom helper ?

First Example :

Step#01

Create a HrHelper.php file in your app/Helpers folder and load it up with composer.json:

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/HrHelper.php" // <---- ADD THIS
    ]
},


Step#02

After adding that to your composer.json file, run the following command:

composer dump-autoload

Step#03

#Apply your function in SampleControlle


<?php

namespace App\Http\Controllers\HR\Employee;

public function index(Request $request){

$headPersonList =getHeadPersonList();
return view('employee',compact('headPersonList'));

}




Second Example :

Step#01

Create your helper Helpers/HrHelper.php


namespace App\Helpers;

use App\Model\HR\HrManageEmployee;

class HrHelper
{

    public static function getHeadPersonList(){

        $details = HrManageEmployee::where('status',0)
            ->select('id','user_name')
            ->get();

        foreach ($details as $row) {
            $headPersonListData[] = [
                'id' => $row->id,
                'user_name' => $row->user_name,
            ];
        }

        return $headPersonListData;
    }
}


Step#02

Create an  alias :

aliases' => [
     ...
        'Helper' => App\Helpers\HrHelper::class,

]


Step#03

composer dump-autoload


Step#04

#Apply your function in SampleControlle


<?php

 namespace App\Http\Controllers\HR\Employee;
 use App\Helpers\HrHelper;


 public function index(Request $request){

$headPersonList =HrHelper::getHeadPersonList();
return view('employee',compact('headPersonList'));

}

Thursday, October 24, 2019

Image Upload with javascript validation in Laravel

Step#01

Create blade page in View
image_upload.blade.php
 
<form class="form-horizontal" method="post" action="{{ route('add-job-application') }}" enctype="multipart/form-data">
 
@csrf
<div class="col-md-6 mb-3">
  <
label for="validationTooltip04">Photo</label>
  <
input type="file" name="photo" class="form-control photo" id="photo" onchange='image(this)'>
   

 
<div class="panel-body center-block" style="margin-top: 5px;">
    <
img id="showPhoto"  src="" style="height:200px;width:200px;border-width:0px;">
  </
div>
</
div>
</form >

Modal for alert
<div class="modal fade" id="error_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
    
aria-hidden="true">
  <
div class="modal-dialog" role="document" style="width: 30%;">
    <
div class="modal-content">
      <
div class="modal-header">
        <
button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <
span aria-hidden="true">&times;</span>
        </
button>
        <
h4 class="modal-title" id="myModalLabel" style="color: red;">Warning</h4>
      </
div>
      <
div id="warning_message" class="modal-body"></div>
      <
div class="modal-footer">
        <
button type="button" class="btn btn-secondary btn-danger" data-dismiss="modal" style="color:white;">
          Cancel
        </
button>
      </
div>
    </
div>
  </
div>
</
div>
<script type="text/javascript">

   
/*----------------Start  photo show ---------------------------*/
   
function image(input) {
       
var fup = document.getElementById('photo');
       
var fileName = fup.value;
       
var extension = fileName.substring(fileName.lastIndexOf('.') + 1);
       
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif') {
           
var file_size = '';
           
var photo = $('.photo ').val();
           
if (photo) {
               
var file_size = $('.photo')[0].files[0].size;
            }
           
if (file_size > 80000) {
                $(
'.photo').val('');
                $(
'#showPhoto').attr('src', '');
                $(
'#warning_message').text("The photo may not be greater than 80KB");
                $(
'#error_modal').modal(300, 'show');
               
return false;
            }
           
if (input.files && input.files[0]) {
                
var reader = new FileReader();
               
reader.onload = function (e) {
                    $(
'#showPhoto').attr('src', e.target.result);
                };
               
reader.readAsDataURL(input.files[0]);
            }
        }
else {
            $(
'.photo').val('');
            $(
'#showPhoto').attr('src', '');
            $(
'#warning_message').text("Only JPEG, JPG, PNG or GIF type images are allowed");
            $(
'#error_modal').modal(300, 'show');
           
return false;
        }
    }

   
   
/*----------------End photo show ---------------------------*/
</script>
Step#02
Route::post('add-job-application', 'HomeController@addJobApplication')->name('add-job-application');

Step#03 

public function addJobApplication(Request $request){ 

$input = $request->all(); 
$image = $request->file('photo');
if($image){
   
$imgName=md5(str_random(30).time().'_'.$request->file('photo')).'.'.$request->file('photo')->getClientOriginalExtension();
    Image::make(
$request->file('photo'))->resize(600, 600)->save(public_path('frontEnd/uploads/applicationPhoto/') . $imgName);
   
$input['photo']=$imgName;
}

  
JobApplication::create($input);

}

Ajax load lage with laravel.

 step-1:  HTML <div class="row">                     <div class="col-lg-12">                           <d...