mardi 8 mai 2018

laravel implement languageCode_Country_Code in url

laravel implement languageCode_Country_Code in url along with page name translations.

en-us/contact es-ES/contacto de-DE/Kontakt



via Chebli Mohamed

lundi 7 mai 2018

upstream timed out (110: Connection timed out) while reading response header from upstream

I'm new to nginx server. The problem I'm facing currently is connection timed out issue after making a call from the iOS app. The Json I'm receiving is huge hence there is a timeout logged on the server.

Also checked with various answers posted here on stackoverflow regarding the same. But didn't help me out.

Below is my access log and error log. Please help.

Error log

upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxxxxxxxx, server: xxxxxxxxxxx, request: "POST /api/event/gallery HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", host: "xxxxxxxxxxx"

Access log

"POST /api/event/gallery HTTP/1.1" 504 192 "-" "mysite/2 CFNetwork/889.9 Darwin/16.7.0"

nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    client_max_body_size 50M;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}



via Chebli Mohamed

jeudi 3 mai 2018

how to display the average rate of "tarifs" for a selected "tache"

i have 2 tables the first tache and table tarification tache .I would like to display in the interface tache.show the average rate of "tarifs" of this selected tache for all technicien. below is the code i used.........................................................................................................................................................................................................................................................................................................

@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
@if(count($errors))
<div class="alert alert-danger" role="alert">
<ul>
@foreach($errors ->all() as $message)
<li></li>
@endforeach
</ul>
</div>
@endif
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>



<script type="text/javascript">

var getMetiersByTechnicienUrl = "";
var getTachesByMetierUrl = "";

 //console.log(getMetiersByTechnicienUrl,getTachesByMetierUrl, 
 getTarificationsByTacheUrl);
 function getMetiersByTechnicien(val) {
if(val.length>0) {
var technicien_id = val;
$.get(getMetiersByTechnicienUrl+'/'+technicien_id,function(res) {
    var html = '<option value="">-Select-</option>' ;
    $.each(res.metiers,function(index,item) {
        html+='<option 
 value="'+item.id+'">'+item.libelle_metier+'</option>';
    });
    $('#metiers').html(html);

});
}
}
function getTachesByMetier(val) {
 if(val.length>0) {
var metier_id = val;
$.get(getTachesByMetierUrl+'/'+metier_id,function(res) {
    var html = '<option value="">-Select-</option>' ;
    $.each(res.taches,function(index,item) {
        html+='<option 
value="'+item.id+'">'+item.libelle_tache+'</option>';
    });
    $('#taches').html(html);

});
}
}

</script>
<div class="container">
<div class="row"></div>
<div class="col-md-12">
Z
<div class="col-md-10">
<h1>Tarification tache</h1>
<form action=" " method="post">
 

<div class="form-group">
 <label for="technicien">Technicien</label>
    <select onchange="getMetiersByTechnicien(this.value)" 
name="technicien_id" 
id="technicien" class="form-control">
        <option value="">-Select-</option>
        @foreach($technicien as $t)
            <option value="">
                
            </option>
        @endforeach
    </select>
    </div>
    <div class="form-group">
    <div class="col-md-12">
        <div class="col-md-4">
    <label>Metier: </label>
    <select onchange="getTachesByMetier(this.value)" style="width: 
200px"    
    class="productm form-control" id="metiers">
     <option value="">-Select-</option>


    </select>
        </div>
        <div class="col-md-4">
            <label>tache: </label>
            <select style="width: 200px" class="productname form- 
control" 
name="tache_id" id="taches">
                <option value="">-Select-</option>
            </select>
        </div>
        <div class="col-md-4">
            <label>tarification: </label>
            <input style="width: 200px" class="productname form- 
control" type="text"  
name ="Tarif" class="form-control" value="">


        </div>


    </div>
    </div>
    <div class="form-group">
    <input type="submit" value = "enregistrer" class="form-control btn btn-primary">
     </div>
    </div>
    </div>
 </div>

@endsection

tarificationcontroller:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\tarificationtache;
use App\technicien;
use App\tache;
use App\metier;

class TarificationController extends Controller
{
  /**
   * Display a listing of the resource.
   *
   * @return \Illuminate\Http\Response
   */
public function index()
{
$Listtache=tache::orderBy('libelle_tache')->get();
$Listtarification=tarificationtache::all();
return view('tarification.index',['tarification'=>$Listtarification]);
}

  /**
   * Show the form for creating a new resource.
   *
   * @return \Illuminate\Http\Response
   */
   public function create()

$technicien = technicien::orderBy('id','desc')->get();
$taches = Tache::orderBy('libelle_tache', 'asc')->get();
$metiers = Metier::orderBy('libelle_metier', 'asc')->get();
return view('tarification.create')->with('taches', $taches)- 
>with('technicien', $technicien)- 
>with('metiers', $metiers);
}

  /**
   * Store a newly created resource in storage.
   *
   * @param  \Illuminate\Http\Request  $request
   *@return \Illuminate\Http\Response
   */
public function store(Request $request)
{

$tarification = new tarificationtache();
$tarification ->tache_id = $request->input('tache_id');
$tarification ->Tarif =$request->input('Tarif');
$tarification->save();
$tarification->techniciens()->attach($request->technicien_id);
return redirect('technicien');  }

  /**
   * Display the specified resource.
   *
   * @param  int  $id
   * @return \Illuminate\Http\Response
   */
   public function show($id)
   {
   //
   }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
    $tache=Tache::find($id);
    return view('tache.edit',['libelle_tache'=>$tache], 
    ['Tarif'=>$tache], 
    ['metier_id'=>$tache]);
    }

   /**
    * Update the specified resource in storage.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  int  $id
    * @return \Illuminate\Http\Response
    */
    public function update(Request $request, $id)
    {
    //
    }

   /**
    * Remove the specified resource from storage.
    *
    * @param  int  $id
    * @return \Illuminate\Http\Response
    */
    public function destroy($id)
    {
    $tache =Tache::find($id);
    $tache->delete();

    return redirect('tache');
    }
    public function getTarificationsByTache($tache_id)
    {
    $t =tache::find($tache_id);
    return response()->json(['tarifications' => $t- 
    >tarificationtache]);
    }

tache.show

@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
<div class="row">
    <div class="col-md-10">





<h1 align="center">Detail Tache</h1>

<div class="form-group">
        <label for="libelle_Tache">Libelle Tache</label>
        <label id="libelle_Tache" type="text" class="form-control"                      name="tache[libelle_Tache]" ></label>
    </div>
    <div class="form-group">
        <label for="Tarif">Tarif moyenne </label>
        <label id="Tarif" type="text" class="form-control" name="tache[Tarif]" ></label>
    </div>
    <div class="form-group">
        <label for="libelle_metier">Libelle Metier</label>
        <label id="prenom" type="text" class="form-control" name="metier[libelle_metier]" >         {$tache->metier->libelle_metier}}</label>
    </div>




        <div class="form-group" align="right">

                    <form action="" method="post">
                        
                        

                        <a href="" class="btn btn-default" class="btn btn-         primary">Retour</a>
                        <a href="" class="btn btn-default">Editer</a>
                        <button type="submit" class="btn btn-danger">Supprimer</button>
                    </form>
        </div>
</div>
@endsection

tache controler

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Tache;
use App\Metier;
use App\Technicien;
class TacheController extends Controller
{

protected function validator(array $data)
{
return Validator::make($data, [
    'Tarif' => 'required|floatval(6.3)',

]);
}
   /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
public function index(Request $request)
{


$tache=tache::with(['metier'])->get();

$search = $request->get('search');

$field = $request->get('field') != '' ? $request->get('field') : 
'libelle_tache';
$sort = $request->get('sort') != '' ? $request->get('sort') : 'asc';
$tache = new tache();
if ($request)

$tache = $tache->where('libelle_tache', 'like', '%' . $search . '%')
    ->orderBy($field, $sort)
    ->paginate(5)
    ->withPath('?search=' . $search . '&libelle_tache=' . $tache . 
'&field=' . $field . '&sort=' .          $sort);
    return view('tache.index',['tache'=>$tache]);

}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
*/
public function create()
{

//$metiers = Costcenter::lists('libelle_metier', 'id');
$metiers = Metier::orderBy('libelle_metier', 'asc')->get();
return view('tache.create')->with('metiers', $metiers);
}

/**
* Store a newly created resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$tache = new Tache();
$tache ->libelle_tache =$request->input('libelle_tache');
$tache ->Tarif =$request->input('Tarif');
$tache ->metier_id = $request->input('metier_id');
$tache->save();
return redirect('tache');
}

/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{

$tache = tache::findOrFail($id);
$metier = $tache->metier;
return view('tache.show' , compact('tache'))->with('metier',$metier);

}

/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$tache=Tache::find($id);
$metiers = Metier::orderBy('libelle_metier', 'asc')->get();
return view('tache.edit',['libelle_tache'=>$tache],['Tarif'=>$tache], 
['metier_id'=>$tache])-    >with('metiers', $metiers);
}

public function update(Request $request, $id)
{
// do some request validation
$tache=Tache::find($id);
$tache->update($request->all());
return redirect('tache');
}

/**
* Remove the specified resource from storage.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$tache =Tache::find($id);
$tache->delete();

return redirect('tache');
}
public function getTachesByMetier($metier_id)
{
$t = Metier::find($metier_id);
return response()->json(['taches' => $t->taches]);
}

}



via Chebli Mohamed

How to autofill form with id from the previous Form

I'm trying to autofill form with id of techinician from the previous form after clicking add button. I have a list of technicians and each technician has multiple "tarification tache"associated with him then when i press the add button i am directed to the form to add "tarification tache" in this form i have to choose the technician. So I want the form to be autofilled with the ID of the technician in question and this from the previous form.

@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
@if(count($errors))
<div class="alert alert-danger" role="alert">
<ul>
@foreach($errors ->all() as $message)
<li></li>
@endforeach
</ul>
</div>
@endif
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>



<script type="text/javascript">

var getMetiersByTechnicienUrl = "";
var getTachesByMetierUrl = "";

//console.log(getMetiersByTechnicienUrl,getTachesByMetierUrl,
getTarificationsByTacheUrl);
function getMetiersByTechnicien(val) {
if(val.length>0) {
    var technicien_id = val;
    $.get(getMetiersByTechnicienUrl+'/'+technicien_id,function(res) {
        var html = '<option value="">-Select-</option>' ;
        $.each(res.metiers,function(index,item) {
            html+='<option 
value="'+item.id+'">'+item.libelle_metier+'</option>';
        });
        $('#metiers').html(html);

    });
 }
 }
    function getTachesByMetier(val) {
     if(val.length>0) {
    var metier_id = val;
    $.get(getTachesByMetierUrl+'/'+metier_id,function(res) {
        var html = '<option value="">-Select-</option>' ;
        $.each(res.taches,function(index,item) {
            html+='<option 
value="'+item.id+'">'+item.libelle_tache+'</option>';
        });
        $('#taches').html(html);

    });
    }
    }

    </script>
<div class="container">
    <div class="row"></div>
    <div class="col-md-12">
    Z
    <div class="col-md-10">
    <h1>Tarification tache</h1>
    <form action=" " method="post">
     

    <div class="form-group">
     <label for="technicien">Technicien</label>
        <select onchange="getMetiersByTechnicien(this.value)" 
name="technicien_id" 
    id="technicien" class="form-control">
            <option value="">-Select-</option>
            @foreach($technicien as $t)
                <option value="">
                    
                </option>
            @endforeach
        </select>
    </div>
    <div class="form-group">
    <div class="col-md-12">
            <div class="col-md-4">
    <label>Metier: </label>
    <select onchange="getTachesByMetier(this.value)" style="width: 
200px"    
    class="productm form-control" id="metiers">
         <option value="">-Select-</option>


    </select>
            </div>
            <div class="col-md-4">
                <label>tache: </label>
                <select style="width: 200px" class="productname form- 
control" 
name="tache_id" id="taches">
                    <option value="">-Select-</option>
                </select>
            </div>
            <div class="col-md-4">
                <label>tarification: </label>
                <input style="width: 200px" class="productname form- 
 control" type="text"  
 name ="Tarif" class="form-control" value="">


            </div>


        </div>
        </div>
        <div class="form-group">
        <input type="submit" value = "enregistrer" class="form-control 
 btn btn-primary">
    </div>
    </div>
        </div>
    </div>

@endsection

tarificationcontroller:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\tarificationtache;
use App\technicien;
use App\tache;
use App\metier;

class TarificationController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$Listtache=tache::orderBy('libelle_tache')->get();
$Listtarification=tarificationtache::all();
return view('tarification.index',['tarification'=>$Listtarification]);
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$technicien = technicien::orderBy('id','desc')->get();
$taches = Tache::orderBy('libelle_tache', 'asc')->get();
$metiers = Metier::orderBy('libelle_metier', 'asc')->get();
return view('tarification.create')->with('taches', $taches)- 
>with('technicien', $technicien)- 
>with('metiers', $metiers);
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 *@return \Illuminate\Http\Response
 */
 public function store(Request $request)
 {

$tarification = new tarificationtache();
$tarification ->tache_id = $request->input('tache_id');
$tarification ->Tarif =$request->input('Tarif');
$tarification->save();
$tarification->techniciens()->attach($request->technicien_id);
return redirect('technicien');  }

/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}

/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$tache=Tache::find($id);
return view('tache.edit',['libelle_tache'=>$tache],['Tarif'=>$tache], 
['metier_id'=>$tache]);
}

 /**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
//
}

 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
public function destroy($id)
{
$tache =Tache::find($id);
$tache->delete();

return redirect('tache');
}
public function getTarificationsByTache($tache_id)
{
$t =tache::find($tache_id);
return response()->json(['tarifications' => $t->tarificationtache]);
}



via Chebli Mohamed

jquery document.ready function is not working in iframe

I have an iframe. The iframe's src calls a specific controller's method to load a view in it. In the main view there are three buttons; Register, Login and Contact.

When I click on any of above buttons, a bootstrap modal is opened and using AJAX I render a HTML view page in the modal body section.

My problem is that when I click any of the buttons for the first time, my document.ready function works successfully but after closing that modal if I again click on same button my jQuery does not work at all.



via Chebli Mohamed

Which is best way about delete row and insert row in Laravel

As title, I have a table like student and another table is class. User can edit about student having some class. There is one to many relationship. When user edit student's class, I always must to delete this student's class. And insert the new class after that.

\App\class:where('student_id',$student->id)->delete();
foreach($request->input('class') as $class){
  $new = new \App\class;
  $new->student_id = $student->id;
  $new->class_id = $class;
  $new->save();
}

Is there have any solution about this issue? Thanks.



via Chebli Mohamed

mardi 1 mai 2018

Parse JSON Data from File upload

I have an input that select json file

in my controller, I did

dd(Input::all());

I got

enter image description here

My goal is to parse the JSON file that I got and loop through them.

I've tried

$string = file_get_contents(Input::get('fileinput'));
$json = json_decode($string, true);


Questions

How would one go about and debug this further ?


I'm open to any suggestions at this moment.

Any hints/suggestions / helps on this be will be much appreciated!



via Chebli Mohamed