Вы находитесь на странице: 1из 6

<?

php

namespace App\Http\Controllers;

use App\Categoria;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator;
use Yajra\DataTables\Facades\DataTables;
use App\Post;
use App\Tag;
use Purifier;
use Image;

class PostController extends Controller


{
public function __construct()
{
//$this->middleware('auth');
}

public function index()


{
$categorias = Categoria::where('status_publicacao', 1)->get(['id',
'categoria_nome']);
$tags = Tag::where('status_publicacao', 1)->get(['id', 'tag_nome']);
return view('admin.post.index', compact('categorias', 'tags'));
}

public function listarPosts()


{
return DataTables::of(Post::query())
->addColumn('nome_usuario', function ($posts) {
return $posts->user->name;
})
->editColumn('post_titulo', '{{ str_limit($post_titulo, 30) }}')
->addColumn('status_publicacao', function ($posts) {
if ($posts->status_publicacao == 1) {
return '<button id="btn-status-despublicado" class="btn btn-
success btn-xs btn-flat btn-block" data-id="' . $posts->id . "," . $posts-
>post_titulo . '"data-toggle="tooltip" data-original-title="Clique para n�o
Publicar">
Publicado
</button>';
}
return '<button id="btn-status-publicado" class="btn btn-warning
btn-xs btn-flat btn-block" data-id="' . $posts->id . "," . $posts->post_titulo .
'"data-toggle="tooltip" data-original-title="Clique para Publicar">
N�o Publicado
</button>';
})
->addColumn('acao', function ($posts) {
return '<button id="visualizar" class="btn btn-warning" data-
id="' . $posts->id . '" data-toggle="tooltip" data-original-title="View">
<i class="fa fa-eye"></i>
</button>
<button id="editar" class="btn btn-info" data-id="' .
$posts->id . '" data-toggle="tooltip" data-original-title="Edit">
<i class="fa fa-edit"></i>
</button>
<button id="excluir" class="btn btn-danger js-sweetalert"
data-id="' . $posts->id . '"data-toggle="tooltip" data-original-title="Delete">
<i class="fa fa-trash"></i>
</button>';
})
->addColumn('imagem', function ($posts) {
return '<img src="' . imagem_pequena_url($posts->imagem) . '?' .
rand() . '" width="60" class="img img-thumbnail img-responsive">';
})
->addColumn('created_at', function ($posts){
return $posts->created_at->format('H:i:s d/m/Y');
})
->addColumn('updated_at', function ($posts){
return $posts->created_at->format('H:i:s d/m/Y');
})
->rawColumns(['imagem', 'nome_usuario', 'status_publicacao', 'acao',
'created_at', 'update_at'])
->setRowId('id')
->make(true);
}

public function store(Request $request)


{
$validacao = Validator::make($request->all(), [
'post_titulo' => 'required|max:250',
'conteudo' => 'required|string',
'imagem' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:10240|
dimensions:max_width=10000,max_height=10000',
'categoria_id' => 'required|integer',
'post_data' => 'required|date_format:d/m/Y',
'status_publicacao' => 'required|integer',
'post_slug' => 'required|alpha_dash|min:5|max:150|unique:posts',
'meta_title' => 'required|max:250',
'meta_keywords' => 'required|max:250',
'meta_description' => 'required|max:400',
], [
'post_titulo.required' => 'O campo t�tulo do post � obrigat�rio',
'categoria_id.integer' => 'Selecione a categoria da postagem',
'status_publicacao.integer' => 'Selecione o status da publica��o',
]);

if ($validacao->passes()) {
$data = \DateTime::createFromFormat('d/m/Y', $request['post_data']);
$data_formatada = $data->format('Y-m-d');

$post = new Post();


$post->user_id = 1;
$post->categoria_id = $request['categoria_id'];
$post->data = $data_formatada;
$post->post_titulo = $request['post_titulo'];
$post->post_slug = $request['post_slug'];
$post->conteudo = Purifier::clean($request['conteudo']);
$post->visualizacoes = 1;
$post->status_publicacao = $request['status_publicacao'];
$post->meta_title = $request['meta_title'];
$post->meta_keywords = $request['meta_keywords'];
$post->meta_description =
Purifier::clean($request['meta_description']);
$post->save();

$post_tags = array_map('intval', explode(',', $request->post_tags));

if (isset($post_tags)) {
$post->tags()->sync($post_tags, false);
} else {
$post->tags()->sync(array());
}

if ($request->hasFile('imagem')) {
$imagem = $request->file('imagem');
$nomeArquivo = $this->imagem_destaque($post->id, $imagem);
$this->imagemDestaquePequena($post->id, $imagem);
Post::find($post->id)->update(['imagem' => $nomeArquivo]);
}

return Response::json(['success' => '1']);


}
return Response::json(['errors' => $validacao->errors()]);
}

public function update(Request $request, $id)


{
$post = Post::find($id);

if ($post->post_slug == $request->post_slug) {
$post_slug = "required|alpha_dash|min:5|max:150";
} else {
$post_slug = "required|alpha_dash|min:5|max:150|unique:posts";
}

if($post->imagem == $request['nomeImagem']){
if ($request->hasFile('imagem2')) {
$imagem = 'required|image|mimes:jpeg,png,jpg,gif,svg|max:10240|
dimensions:max_width=10000,max_height=10000';
}else{
$imagem = 'nullable';
}
}else{
$imagem = 'required|image|mimes:jpeg,png,jpg,gif,svg|max:10240|
dimensions:max_width=10000,max_height=10000';
}

$validacao = Validator::make($request->all(), [
'post_titulo' => 'required|max:250',
'conteudo' => 'required|string',
'imagem2' => $imagem,
'categoria_id' => 'required|integer',
'post_data' => 'required|date_format:d/m/Y',
'status_publicacao' => 'required|integer',
'post_slug' => $post_slug,
'meta_title' => 'required|max:250',
'meta_keywords' => 'required|max:250',
'meta_description' => 'required|max:400',
],[
'post_titulo.required' => 'O campo t�tulo do post � obrigat�rio',
'categoria_id.integer' => 'Selecione a categoria da postagem',
'status_publicacao.integer' => 'Selecione o status da publica��o',
'imagem2.required' => 'Selecione a imagem de destaque da postagem',
'imagem2.image' => 'Selecione a imagem de destaque da postagem',
]);

if ($validacao->passes()) {
$data = \DateTime::createFromFormat('d/m/Y', $request['post_data']);
$data_formatada = $data->format('Y-m-d');

$post->user_id = 1;
$post->categoria_id = $request['categoria_id'];
$post->data = $data_formatada;
$post->post_titulo = $request['post_titulo'];
$post->post_slug = $request['post_slug'];
$post->conteudo = Purifier::clean($request['conteudo']);
$post->visualizacoes = 1;
$post->status_publicacao = $request['status_publicacao'];
$post->meta_title = $request['meta_title'];
$post->meta_keywords = $request['meta_keywords'];
$post->meta_description =
Purifier::clean($request['meta_description']);
$post->save();

$post_tags = array_map('intval', explode(',', $request->post_tags));

$post->tags()->detach();

if (isset($post_tags)) {
$post->tags()->sync($post_tags, false);
}else {
$post->tags()->sync(array());
}

if ($request->hasFile('imagem2')) {
$imagem = $request->file('imagem2');
$nomeArquivo = $this->imagem_destaque($post->id, $imagem);
$this->imagemDestaquePequena($post->id, $imagem);
Post::find($post->id)->update(['imagem' => $nomeArquivo]);
}

return Response::json(['success' => '1']);


}
return Response::json(['errors' => $validacao->errors()]);
}

public function imagem_destaque($id, $imagem) {


$nomeArquivo = $id . '.' . $imagem->getClientOriginalExtension();
$localizacao = imagem_caminho($nomeArquivo);

$background = Image::canvas(688, 387);

$img = Image::make($imagem);

$altura = $img->height();

$largura = $img->width();
$x = NULL;
$y = NULL;
if ($largura > $altura) {
$y = 800;
} else {
$x = 450;
}

$img->resize($x, $y, function ($restricao) {


$restricao->aspectRatio();
$restricao->upsize();
});

$background->insert($img, 'center');

$background->save($localizacao);
return $nomeArquivo;
}

public function imagemDestaquePequena($id, $imagem) {


$nomeArquivo = $id . '.' . $imagem->getClientOriginalExtension();
$localizacao = imagem_pequena_caminho($nomeArquivo);

$background = Image::canvas(370, 235);

$img = Image::make($imagem);

$altura = $img->height();

$largura = $img->width();
$x = NULL;
$y = NULL;
if ($largura > $altura) {
$y = 370;
} else {
$x = 235;
}

$img->resize($x, $y, function ($restricao) {


$restricao->aspectRatio();
$restricao->upsize();
});

$background->insert($img, 'center');

$background->save($localizacao);
return $nomeArquivo;
}

public function show($id)


{
$post = Post::with(['categoria:id,categoria_nome', 'user:id,name',
'tags:tag_id,tag_nome'])->where('id', $id)
->first();
$data = \DateTime::createFromFormat('Y-m-d', $post->data);
$dataFormatada = $data->format('d/m/Y');
$post->data = $dataFormatada;
return json_encode($post);
}

public function edit($id)


{
$post = Post::with(['categoria:id,categoria_nome', 'user:id,name',
'tags:tag_id,tag_nome'])->where('id', $id)
->first();
$data = \DateTime::createFromFormat('Y-m-d', $post->data);
$dataFormatada = $data->format('d/m/Y');
$post->data = $dataFormatada;
return $post;
}

public function destroy($id)


{
$post = Post::find($id);
$post->comentarios()->delete();
$post->delete();
}

public function publicar($id)


{
Post::where('id', $id)->update(['status_publicacao' => 1]);
}

public function despublicar($id)


{
Post::where('id', $id)->update(['status_publicacao' => 0]);
}
}

Вам также может понравиться