Advertisement
Guest User

Untitled

a guest
Nov 16th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 23.80 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use App\Contatos;
  6. use App\Etnias;
  7. use App\Generos;
  8. use App\Instituicoes;
  9. use App\Mail\AtivarUsuario;
  10. use App\Mail\EmailChanged;
  11. use App\Mail\PasswordChanged;
  12. use App\Municipios;
  13. use App\Nacionalidades;
  14. use App\Perfis;
  15. use App\UserAtivarConta;
  16. use Illuminate\Support\Facades\Hash;
  17. use App\User;
  18. use Illuminate\Http\Request;
  19.  
  20. use App\Http\Requests;
  21. use DB;
  22. use Illuminate\Support\Facades\Input;
  23. use Illuminate\Validation\Rules\In;
  24. use League\Flysystem\Exception;
  25. use Validator;
  26. use App\Enderecos;
  27. use Mail;
  28. use Session;
  29.  
  30. use Illuminate\Support\Facades\Auth;
  31. use App\RelacionamentoUsuarioPerfil;
  32. use Illuminate\Http\File;
  33. use Illuminate\Support\Facades\Storage;
  34.  
  35. use App\UserTrocarEmail;
  36. use App\UserTrocarSenha;
  37. use App\Jobs\EnviarTrocaSenha;
  38. use App\Jobs\EnviarTrocaEmail;
  39.  
  40. class UsersController extends CrudController
  41. {
  42.  
  43.     public function __construct()
  44.     {
  45.         $this->paginatorLimit = 10;
  46.         parent::__construct(User::class);
  47.         $this->route_base_name = str_plural(mb_strtolower(class_basename(get_class($this->getModel()))));
  48.     }
  49.  
  50.     public function validateRulesOnCreate(Request $request)
  51.     {
  52.         $rules = [
  53.             'nome_completo' => 'required',
  54.             'email' => 'required',
  55.             'cpf' => 'required',
  56.             'rg' => 'required',
  57.             'data_nascimento' => 'required',
  58.             'nome_da_mae' => 'required',
  59.             'naturalidade_id' => 'required',
  60.             'nacionalidade_id' => 'required',
  61.             'etnia_id' => 'required',
  62.             'genero_id' => 'required',
  63.             'telefone' => 'required',
  64.         ];
  65.  
  66.  
  67.         $messages = [
  68.             'required' => 'O campo :attribute é obrigatório',
  69.             'integer' => 'O campo :attribute deve ser um número inteiro'
  70.         ];
  71.  
  72.         return Validator::make($request->all(), $rules, $messages);
  73.     }
  74.  
  75.     public function validateRulesOnUpdate(Request $request)
  76.     {
  77.         $rules = [
  78.             'nome_completo' => 'required',
  79.             'email' => 'required',
  80.             'cpf' => 'required',
  81.             'rg' => 'required',
  82.             'data_nascimento' => 'required',
  83.             'nome_da_mae' => 'required',
  84.             'naturalidade_id' => 'required',
  85.             'nacionalidade_id' => 'required',
  86.             'etnia_id' => 'required',
  87.             'genero_id' => 'required',
  88.             'telefone' => 'required'
  89.         ];
  90.  
  91.  
  92.         $messages = [
  93.             'required' => 'O campo :attribute é obrigatório',
  94.             'integer' => 'O campo :attribute deve ser um número inteiro'
  95.         ];
  96.  
  97.         return Validator::make($request->all(), $rules, $messages);
  98.     }
  99.  
  100.     public function create()
  101.     {
  102.         $instituicoes = Instituicoes::all();
  103.  
  104.         $perfis = Perfis::all();
  105.  
  106.         $nacionalidades = Nacionalidades::all();
  107.  
  108.         $municipios = Municipios::all();
  109.  
  110.         $etnias = Etnias::all();
  111.  
  112.         $generos = Generos::all();
  113.  
  114.         return view($this->templatePrefix. '.create', compact("municipios", "nacionalidades", "etnias", "generos",
  115.             "instituicoes", "perfis"));
  116.     }
  117.  
  118.     public function store(Request $request)
  119.     {
  120.         $validator = $this->validateRulesOnCreate($request);
  121.         if($validator->fails())
  122.         {
  123.             return redirect(route($this->route_base_name . '.create'))->withErrors($validator)->withInput();
  124.         }
  125.  
  126.         foreach($this->getModel()->getFillables() as $column)
  127.         {
  128.             $this->getModel()->$column = $request->get($column);
  129.         }
  130.  
  131.         DB::beginTransaction();
  132.         try
  133.         {
  134.             if(empty($this->getModel()->passaporte)){
  135.                 $this->getModel()->passaporte = null;
  136.             };
  137.             if(empty($this->getModel()->foto_perfil)){
  138.                 $this->getModel()->foto_perfil = 'public/avatar/avatar-default.png';
  139.             };
  140.  
  141.             $this->getModel()->save();
  142.             $relacionamento = new RelacionamentoUsuarioPerfil;
  143.             $relacionamento->perfil_id = Input::get('perfil_id');
  144.             $relacionamento->instituicao_id = Session::get('instituicao');
  145.             $relacionamento->usuario_id = $this->getModel()->id;
  146.             $relacionamento->save();
  147.             DB::commit();
  148.  
  149.             $token = str_random(30);
  150.             $usuarioativar = UserAtivarConta::updateOrCreate(['email'=>$request->email],
  151.                 ['email'=>$request->email, 'token'=>$token]);
  152.  
  153.             try{
  154.                 $this->EnviarAtivacao($request->email, $token);
  155.             }
  156.             catch(\Exception $e) {
  157.                 dd($e);
  158.                //Ver a melhor forma de tratar o erro. Acredito que colocar o DB::commit dentro do try seria melhor.
  159.                 //se não enviar o email nao salva o usuário e mostra uma mensagem
  160.             }
  161.  
  162.             return redirect(route($this->route_base_name . '.index'))->with('success', 'registro criado com sucesso');
  163.         }
  164.         catch(\Exception $ex)
  165.         {
  166.             DB::rollBack();
  167.             return redirect(route($this->route_base_name . '.create'))->withErrors($ex->getMessage())->withInput();
  168.         }
  169.     }
  170.  
  171.     public function dataTable(Request $request)
  172.     {
  173.         $query = $this->getModel()->select('nome_completo', 'cpf', 'email', 'id')->where(function($q) use ($request)
  174.         {
  175.             if($search = $request->input('search.value'))
  176.             {
  177.                 if (strlen($search)) {
  178.                     $q->where('nome_completo', 'like', "%{$search}%")->orWhere('cpf', 'like', "%{$search}%")
  179.                         ->orWhere('email', 'like', "%{$search}%");
  180.                 }
  181.             }
  182.         });
  183.  
  184.         $total = $query->count();
  185.  
  186.         if($request->get('columns'))
  187.         {
  188.             $query->orderBy($request->get('columns')[$request->get('order')[0]['column']]['data'], $request->get('order')[0]['dir']);
  189.         }
  190.  
  191.         $return = [
  192.             'draw' => $request->get('draw'),
  193.             'recordsTotal' => $total,
  194.             'recordsFiltered' => $query->get()->count(),
  195.             'data' => $query->forPage(($request->get('start') / $request->get('length')) + 1, $request->get('length'))->get()
  196.         ];
  197.  
  198.         return response()->json($return);
  199.     }
  200.  
  201.     public function EnviarAtivacao($email, $data)
  202.     {
  203.         Mail::to($email)->send(new AtivarUsuario($email, $data));
  204.     }
  205.  
  206.     public function validateRulesToActivate(Request $request){
  207.  
  208.         $rules = [
  209.             'senha'=>'required',
  210.             'confirmar_senha'=>'required',
  211.             'logradouro' => 'required',
  212.             'numero' => 'required',
  213.             'cep'=>'required',
  214.             'bairro'=>'required',
  215.         ];
  216.  
  217.  
  218.         $messages = [
  219.             'required' => 'O campo :attribute é obrigatório',
  220.             'integer' => 'O campo :attribute deve ser um número inteiro'
  221.         ];
  222.  
  223.         return Validator::make($request->all(), $rules, $messages);
  224.     }
  225.  
  226.     public function AtivarConta(Request $request ,$token, $email)
  227.     {
  228.         $validator = $this->validateRulesToActivate($request);
  229.  
  230.         if($validator->fails())
  231.         {
  232.             return redirect()->back()->withErrors($validator)->withInput();
  233.         }
  234.  
  235.         $usuario_inativo = UserAtivarConta::where('email', $email)->first();
  236.         if($usuario_inativo != null){
  237.             $usuario = User::where('email', $email)->first();
  238.             if ($token == $usuario_inativo->token)
  239.             {
  240.                 if ($request->senha == $request->confirmar_senha){
  241.                     $usuario->password = Hash::make($request->senha);
  242.                     $usuario->ativo = true;
  243.  
  244.                     DB::beginTransaction();
  245.                     try {
  246.                         $endereço = Enderecos::create(['logradouro' => $request->logradouro, 'numero' => $request->numero,
  247.                             'complemento' => $request->complemento, 'cep' => $request->cep, 'bairro' => $request->bairro,
  248.                             'municipio_id' => $request->municipio
  249.                         ]);
  250.  
  251.                         $contato = Contatos::create(['telefone_alternativo' => $request->telefone_alterantivo,
  252.                             'email_alternativo' => $request->email_alternativo,
  253.                         ]);
  254.  
  255.                         $usuario->enderecos()->associate($endereço);
  256.                         $usuario->contatopessoasfisica()->associate($contato);
  257.                         $usuario->save();
  258.                         $usuario_inativo->delete();
  259.                         DB::commit();
  260.                     }
  261.                     catch(\Exception $e)
  262.                     {
  263.                         DB::rollback();
  264.                         return redirect()->back()->withErrors($e->getMessage())->withInput();
  265.                     }
  266.  
  267.                     Auth::logout();
  268.                     Session::forget('perfil');
  269.                     Session::forget('perfis');
  270.                     if (Auth::attempt(array('email' => $usuario->email, 'password' => $request->senha)))
  271.                     {
  272.                         return redirect('/');
  273.                     }
  274.  
  275.                     else{
  276.                         return view('autenticacao.login');
  277.                     }
  278.                 }
  279.  
  280.                 else{
  281.                     Session::flash('danger-senha-ativar', 'As senhas não combinam. Tente novamente');
  282.                     return view('perfil.ativar_usuario')->with(['token'=>$token, 'email'=>$email]);
  283.                 }
  284.             }
  285.             else{
  286.                 Session::flash('danger-senha-ativar', 'Esse link não é válido, provavelmente sua conta já foi ativada');
  287.                 return view('perfil.ativar_usuario')->with(['token'=>$token, 'email'=>$email]);
  288.             }
  289.         }
  290.         else{
  291.             return redirect('/login');
  292.         }
  293.     }
  294.  
  295.     public function AtivarContaGET($token, $email)
  296.     {
  297.         Auth::logout();
  298.         $municipios = Municipios::all();
  299.         return view('perfil.ativar_usuario', compact('token', 'email', 'municipios'));
  300.     }
  301.  
  302.     public function perfil()
  303.     {
  304.         return view('perfil.perfil', [
  305.             'usuario' => Auth::user(),
  306.             'contas' => Auth::user()->contasVinculadas()->pluck('driver')
  307.         ]);
  308.     }
  309.  
  310.     public function alterarAvatar(Request $request)
  311.     {
  312.         $usuario = auth()->user();
  313.         $contas = $usuario->contasVinculadas()->pluck('driver');
  314.  
  315.         DB::beginTransaction();
  316.         if ($request->file('photo')->isValid()) {
  317.             $path = $request->photo->store('public/avatar');
  318.             $usuario->foto_perfil = $path;
  319.             $usuario->save();
  320.             DB::commit();
  321.         }
  322.         else
  323.         {
  324.             DB::rollBack();
  325.         }
  326.  
  327.         return view('perfil.perfil', [
  328.             'usuario' => Auth::user(),
  329.             'contas' => Auth::user()->contasVinculadas()->pluck('driver')
  330.         ]);
  331.     }
  332.  
  333.     public function SolicitarEmail(Request $request){
  334.         $token = str_random(30);
  335.         $user = Auth::user();
  336.  
  337.         $rules = ['email_antigo' => 'email|required|',
  338.             'email_novo' => 'email|required|unique:users,email'];
  339.         $messages = [
  340.             'email_antigo.required'=>'Preencha o campo Email',
  341.             'email_novo.required'=>'Preencha o campo Novo Email',
  342.             'email_novo.unique'=>'Algum usuario ja possui esse Email',
  343.         ];
  344.         $validator = Validator::make(Input::all(), $rules, $messages);
  345.  
  346.         Session::flash('danger-email', null);
  347.  
  348.         if($validator->fails()) return view('perfil.perfil', [
  349.             'usuario' => Auth::user(),
  350.             'contas' => Auth::user()->contasVinculadas()->pluck('driver')
  351.         ])->withErrors($validator);
  352.  
  353.         else
  354.         {
  355.             DB::beginTransaction();
  356.             try{
  357.                 if($request->email_antigo == $user->email){
  358.                     $email = UserTrocarEmail::updateOrCreate(['usuario_id'=>$user->id],
  359.                         ['usuario_id'=>$user->id, 'novo_email'=>$request->email_novo,
  360.                             'validade'=>date('Y-m-d H:i:s', strtotime("+1 day")), 'token'=>$token]
  361.                     );
  362.                     DB::commit();
  363.                     $data = $token;
  364.                     try{
  365.                         $this->EnviarEmail($user, $email, $data);
  366.                         Session::flash('success-email', 'Um email de confirmação foi enviado para '. $user->email . ". Voce
  367.                        tem 24 para confirmar a troca");
  368.                     }
  369.                     catch(Exception $e) {
  370.                         Session::flash('danger-email', 'Algum problema aconteceu, tente novamente.');
  371.                     }
  372.                 }
  373.                 else{
  374.                     Session::flash('danger-email', 'O email inserido nao corresponde ao seu email atual');
  375.                 }
  376.             }
  377.  
  378.             catch(\Exception $e){
  379.                 DB::rollback();
  380.                 return redirect()->back()->withErrors($e->getMessage())->withInput();
  381.             }
  382.             return redirect('/perfil');
  383.         }
  384.     }
  385.  
  386.     public function SolicitarSenha(Request $request){
  387.         $token = str_random(30);
  388.         $user = Auth::user();
  389.  
  390.         $rules = ['senha' => 'required'];
  391.         $messages = ['senha.required'=>'Preencha o campo Senha'];
  392.         $validator = Validator::make(Input::all(), $rules, $messages);
  393.  
  394.         Session::flash('danger-senha', null);
  395.  
  396.         if($validator->fails()) return view('perfil.perfil', [
  397.             'usuario' => Auth::user(),
  398.             'contas' => Auth::user()->contasVinculadas()->pluck('driver')
  399.         ])->withErrors($validator);
  400.  
  401.         else{
  402.             if(Hash::check($request->senha, $user->password))
  403.             {
  404.                 DB::beginTransaction();
  405.                 try{
  406.                     $senha = UserTrocarSenha::updateOrCreate(['usuario_id' => $user->id],
  407.                         ['usuario_id'=>$user->id, 'validade'=>date('Y-m-d H:i:s', strtotime("+1 day")), 'token'=>$token]
  408.                     );
  409.                     DB::commit();
  410.                     $data = $token;
  411.                     try {
  412.                         $this->EnviarSenha($user, $senha, $data);
  413.                         Session::flash('success-senha', 'Um email de confirmação foi enviado para '. $user->email);
  414.                     }
  415.                     catch(Exception $e){
  416.                         Session::flash('danger-senha', 'Algum problema aconteceu, tente novamente.');
  417.                     }
  418.                 }
  419.                 catch(\Exception $e){
  420.                     DB::rollback();
  421.                     return redirect()->back()->withErrors($e->getMessage())->withInput();
  422.                 }
  423.             }
  424.             else{
  425.                 Session::flash('danger-senha', 'A senha inserida nao corresponde a sua senha');
  426.                 return redirect('/perfil');
  427.             }
  428.         }
  429.         return redirect('/perfil');
  430.     }
  431.  
  432.     public function ConfirmarEmailGET($token, $usuario_id){
  433.         Auth::logout();
  434.         $usuario_troca = UserTrocarEmail::where('usuario_id', $usuario_id)->first();
  435.         if($usuario_troca != null){
  436.             if($usuario_troca->validade > date('Y-m-d H:i:s')){
  437.                 return view('perfil.confirmar_email', compact('token', 'usuario_id'));
  438.             }
  439.             else{
  440.                 Session::flash('danger-email', 'A validade da solicitaçao expirou. Solicite uma nova.');
  441.                 return view('perfil.confirmar_email' , compact('token', 'usuario_id'));
  442.             }
  443.         }
  444.         else{
  445.             Session::flash('danger-email', 'Este link nao é válido. Solicite uma nova troca');
  446.             return view('perfil.confirmar_email', compact('token', 'usuario_id'));
  447.         }
  448.     }
  449.  
  450.     public function ConfirmarEmailPOST(Request $request, $token, $usuario_id){
  451.         $usuario = User::find($usuario_id);
  452.         $usuario_troca = UserTrocarEmail::where('usuario_id', $usuario->id)->first();
  453.         if(Hash::check($request->senha, $usuario->password)) {
  454.             DB::beginTransaction();
  455.             try{
  456.                 if($token === $usuario_troca->token){
  457.                     $usuario->email=$usuario_troca->novo_email;
  458.                     $usuario->save();
  459.                     $usuario_troca->delete();
  460.                     DB::commit();
  461.                     if(Auth::check()){
  462.                         Session::flash('danger-email', null);
  463.                         Session::flash('success-email', 'Seu email foi alterado para ' . $usuario->email);
  464.                         return redirect('/perfil');
  465.                     }
  466.                     else{
  467.                         Auth::logout();
  468.                         Session::forget('perfil');
  469.                         Session::forget('perfis');
  470.                         if (Auth::attempt(array('email' => $usuario->email, 'password' => $request->senha))){
  471.                             Session::flash('danger-email', null);
  472.                             Session::flash('success-email', 'Seu email foi alterado para ' . $usuario->email);
  473.                             return redirect('/perfil');
  474.                         }
  475.                         else
  476.                             return view('autenticacao.login');
  477.                     }
  478.                 }
  479.                 else{
  480.                     Session::flash('danger-email', 'Este link nao e valido. Solicite uma nova troca');
  481.                     return redirect('/perfil');
  482.                 }
  483.             }
  484.             catch(\Exception $e){
  485.                 DB::rollback();
  486.                 return redirect()->back()->withErrors($e->getMessage())->withInput();
  487.             }
  488.         }
  489.         else{
  490.             Session::flash('danger-email', 'A senha nao corresponde. Tente novamente');
  491.             return view('perfil.confirmar_email', compact('token', 'usuario_id'));
  492.         }
  493.     }
  494.  
  495.     public function ConfirmarSenhaGET($token, $usuario_id)
  496.     {
  497.         $usuario_troca = UserTrocarSenha::where('usuario_id', $usuario_id)->first();
  498.         if($usuario_troca != null){
  499.             if($usuario_troca->validade > date('Y-m-d H:i:s')){
  500.                 return view('perfil.confirmar_senha', compact('token', 'usuario_id'));
  501.             }
  502.             else{
  503.                 Session::flash('danger-senha', 'A validade da solicitaçao expirou. Solicite uma nova.');
  504.                 return view('perfil.confirmar_senha');
  505.             }
  506.         }
  507.         else{
  508.             Session::flash('danger-senha', 'Este link não é válido. Solicite outro');
  509.             return view('perfil.confirmar_senha');
  510.         }
  511.     }
  512.  
  513.     public function ConfirmarSenhaPOST(Request $request, $token, $usuario_id)
  514.     {
  515.         $usuario = User::find($usuario_id);
  516.         $usuario_troca = UserTrocarSenha::where('usuario_id', $usuario_id)->first();
  517.         if(Hash::check($request->password_antigo, $usuario->password)){
  518.             if($request->password_novo == $request->password_novo_confirmar){
  519.                 if($token == $usuario_troca->token){
  520.                     DB::beginTransaction();
  521.                     try{
  522.                         $usuario->password = Hash::make($request->password_novo);
  523.                         $usuario->save();
  524.                         $usuario_troca->delete();
  525.                         DB::commit();
  526.                         Auth::logout();
  527.                         Session::forget('perfil');
  528.                         Session::forget('perfis');
  529.                         if (Auth::attempt(array('email' => $usuario->email, 'password' => $request->password_novo)))
  530.                         {
  531.                             Session::flash('danger-senha', null);
  532.                             Session::flash('success-senha', 'Sua senha foi alterada');
  533.                             return redirect('/perfil');
  534.                         }
  535.                         else
  536.                             return view('autenticacao.login');
  537.                     }
  538.                     catch(\Exception $e){
  539.                         DB::rollback();
  540.                         return redirect()->back()->withErrors($e->getMessage())->withInput();
  541.                     }
  542.                 }
  543.                 else{
  544.                     Session::flash('danger-senha', 'Esse link nao e valido. Solicite outro');
  545.                     return view('perfil.confirmar_senha', compact('token', 'usuario_id'));
  546.                 }
  547.             }
  548.             else{
  549.                 Session::flash('danger-senha', 'As senhas nao correspondem');
  550.                 return view('perfil.confirmar_senha', compact('token', 'usuario_id'));
  551.             }
  552.         }
  553.         else{
  554.             Session::flash('danger-senha', 'A senha nao corresponde');
  555.             return view('perfil.confirmar_senha', compact('token', 'usuario_id'));
  556.         }
  557.     }
  558.  
  559.     public function EnviarEmail(User $user, UserTrocarEmail $user_trocar_email, $data)
  560.     {
  561.         Mail::to($user->email)->send(new EmailChanged($user, $user_trocar_email, $data));
  562.     }
  563.  
  564.     public function EnviarSenha(User $user, UserTrocarSenha $user_trocar_senha, $data)
  565.     {
  566.         Mail::to($user->email)->send(new PasswordChanged($user, $user_trocar_senha, $data));
  567.     }
  568.  
  569.     public function AlterarImagem(Request $request){
  570.         $user = Auth::user();
  571.         if( $request->hasFile('image') ){
  572.             $time=time();
  573.             $imagem = $time . $request->file('image')->getClientOriginalName();
  574.             $extension = File::extension($imagem);
  575.             if($extension != "jpg" && $extension != "png" && $extension != "jpeg")
  576.                 Session::flash('picture-danger', 'A imagem deve sem .png, .jpg ou .jpeg');
  577.             else{
  578.                 Session::flash('picture-danger', null);
  579.                 $local = public_path('resources/media/avatar/');
  580.                 $request->file('image')->move($local, $imagem);
  581.                 $user->foto_perfil = 'resources/media/avatar/' . $imagem;
  582.                 $user->save();
  583.             }
  584.         }
  585.         return redirect('/perfil');
  586.     }
  587.  
  588.     public function consultarAlunos(Request $request){
  589.         return view('users.index_aluno');
  590.     }
  591.  
  592.     public function alunosDatatables(Request $request){
  593.         $perfil = $request->session()->get('perfil');
  594.  
  595.         $query = $this->getModel()
  596.             ->join('relacionamento_usuario_perfils', 'users.id', '=', 'relacionamento_usuario_perfils.usuario_id')
  597.             ->where(function($q) use ($request, $perfil)
  598.             {
  599.                 if($search = $request->input('search.value'))
  600.                 {
  601.                     if (strlen($search)) {
  602.                         $q->orwhere('users.nome_completo', 'like', "%{$search}%")
  603.                             ->orWhere('users.cpf', 'like', "%{$search}%")
  604.                             ->orWhere('users.email', 'like', "%{$search}%");
  605.                     }
  606.                 }
  607.  
  608.                 $q->where('relacionamento_usuario_perfils.perfil_id', '=', 1);
  609.  
  610. //                Verifica se o usuário possui o perfil de Setor ou Secretário para que com isso seja aplicado um filtro
  611. //                de instituição
  612.                 if(in_array($perfil, [3, 4])){
  613.                     $q->where('relacionamento_usuario_perfils.instituicao_id', '=', $request->session()->get('instituicao'));
  614.                 }
  615.  
  616.                 $q->select('users.nome_completo', 'users.cpf', 'users.email', 'users.id');
  617.             });
  618.  
  619.         $total = $query->count();
  620.  
  621.         if($request->get('columns'))
  622.         {
  623.             $query->orderBy($request->get('columns')[$request->get('order')[0]['column']]['data'], $request->get('order')[0]['dir']);
  624.         }
  625.  
  626.         $return = [
  627.             'draw' => $request->get('draw'),
  628.             'recordsTotal' => $total,
  629.             'recordsFiltered' => $query->get()->count(),
  630.             'data' => $query->forPage(($request->get('start') / $request->get('length')) + 1, $request->get('length'))->get()
  631.         ];
  632.  
  633.         return response()->json($return);
  634.     }
  635. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement