224 lines
7.4 KiB
PHP
224 lines
7.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\VendiZapConfig;
|
|
use App\Models\CategoriaVendiZap;
|
|
use Illuminate\Support\Str;
|
|
|
|
class VendiZapCategoriaController extends Controller
|
|
{
|
|
|
|
protected $url = "https://app.vendizap.com/api";
|
|
|
|
public function index(Request $request){
|
|
|
|
$config = VendiZapConfig::where('empresa_id', $request->empresa_id)->first();
|
|
if($config == null){
|
|
session()->flash("flash_error", "Configure as credenciais!");
|
|
return redirect()->route('vendizap-config.index');
|
|
}
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"X-Auth-Id: " . $config->auth_id,
|
|
"X-Auth-Secret: " . $config->auth_secret,
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $this->url . '/categorias');
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$data = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
if(!is_array($data)){
|
|
session()->flash("flash_error", $data);
|
|
return redirect()->route('vendizap-config.index');
|
|
}
|
|
foreach($data as $c){
|
|
$item = CategoriaVendiZap::where('empresa_id', $request->empresa_id)
|
|
->where('_id', $c->id)->first();
|
|
|
|
if($item == null){
|
|
CategoriaVendiZap::create([
|
|
'_id' => $c->id,
|
|
'empresa_id' => $request->empresa_id,
|
|
'nome' => $c->nome,
|
|
]);
|
|
}
|
|
|
|
$c->data_cadastro = $item->created_at ? __data_pt($item->created_at) : null;
|
|
}
|
|
|
|
return view('vendizap_categorias.index', compact('data'));
|
|
|
|
}
|
|
|
|
public function create(){
|
|
return view('vendizap_categorias.create');
|
|
}
|
|
|
|
public function edit($id){
|
|
$item = CategoriaVendiZap::where('_id', $id)->first();
|
|
|
|
$config = VendiZapConfig::where('empresa_id', request()->empresa_id)->first();
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"X-Auth-Id: " . $config->auth_id,
|
|
"X-Auth-Secret: " . $config->auth_secret,
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $this->url . '/categorias/'.$item->_id);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
$data = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
if($data && isset($data->imagem)){
|
|
$item->imagem = $data->imagem;
|
|
}
|
|
return view('vendizap_categorias.edit', compact('item'));
|
|
}
|
|
|
|
public function store(Request $request){
|
|
$config = VendiZapConfig::where('empresa_id', $request->empresa_id)->first();
|
|
|
|
$image = null;
|
|
|
|
if ($request->hasFile('image')) {
|
|
if (!is_dir(public_path('uploads') . 'image_temp')) {
|
|
mkdir(public_path('uploads') . 'image_temp', 0777, true);
|
|
}
|
|
|
|
$this->clearFolder(public_path('uploads'). '/image_temp');
|
|
|
|
$file = $request->image;
|
|
$ext = $file->getClientOriginalExtension();
|
|
$file_name = Str::random(20) . ".$ext";
|
|
|
|
$file->move(public_path('uploads'). '/image_temp', $file_name);
|
|
$image = env('APP_URL') . '/uploads/image_temp/'.$file_name;
|
|
}
|
|
$data = [
|
|
'nome' => $request->nome,
|
|
];
|
|
|
|
if($image != null){
|
|
$data['imagem'] = $image;
|
|
}
|
|
|
|
try{
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"X-Auth-Id: " . $config->auth_id,
|
|
"X-Auth-Secret: " . $config->auth_secret,
|
|
'Content-Type: application/json'
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $this->url . '/categorias');
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
$data = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
|
|
if($data->id){
|
|
CategoriaVendiZap::create([
|
|
'_id' => $data->id,
|
|
'empresa_id' => $request->empresa_id,
|
|
'nome' => $request->nome,
|
|
]);
|
|
session()->flash("flash_success", "Categoria cadastrada!");
|
|
return redirect()->route('vendizap-categorias.index');
|
|
}
|
|
}catch(\Exception $e){
|
|
// echo $e->getMessage();
|
|
// die;
|
|
session()->flash("flash_error", "Algo deu errado ao cadastrar!");
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function update(Request $request, $id){
|
|
$config = VendiZapConfig::where('empresa_id', $request->empresa_id)->first();
|
|
|
|
$item = CategoriaVendiZap::where('empresa_id', request()->empresa_id)
|
|
->where('id', $id)->first();
|
|
|
|
$image = null;
|
|
|
|
try{
|
|
if ($request->hasFile('image')) {
|
|
if (!is_dir(public_path('uploads') . 'image_temp')) {
|
|
mkdir(public_path('uploads') . 'image_temp', 0777, true);
|
|
}
|
|
|
|
$this->clearFolder(public_path('uploads'). '/image_temp');
|
|
|
|
$file = $request->image;
|
|
$ext = $file->getClientOriginalExtension();
|
|
$file_name = Str::random(20) . ".$ext";
|
|
|
|
$file->move(public_path('uploads'). '/image_temp', $file_name);
|
|
$image = env('APP_URL') . '/uploads/image_temp/'.$file_name;
|
|
}
|
|
|
|
$data = [
|
|
'nome' => $request->nome,
|
|
];
|
|
if($image != null){
|
|
$data['imagem'] = $image;
|
|
}
|
|
|
|
$ch = curl_init();
|
|
$headers = [
|
|
"X-Auth-Id: " . $config->auth_id,
|
|
"X-Auth-Secret: " . $config->auth_secret,
|
|
'Content-Type: application/json'
|
|
];
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $this->url . '/categorias/'.$item->_id);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
|
|
|
|
$data = json_decode(curl_exec($ch));
|
|
curl_close($ch);
|
|
// dd($data);
|
|
if($data){
|
|
$item->fill($request->all())->save();
|
|
session()->flash("flash_success", "Categoria atualizada!");
|
|
}else{
|
|
session()->flash("flash_error", "Algo deu errado!");
|
|
}
|
|
return redirect()->route('vendizap-categorias.index');
|
|
}catch(\Exception $e){
|
|
// echo $e->getMessage();
|
|
// die;
|
|
session()->flash("flash_error", "Algo deu errado: " . $e->getMessage());
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
private function clearFolder($destino){
|
|
$files = glob($destino."/*");
|
|
foreach($files as $file){
|
|
if(is_file($file)) unlink($file);
|
|
}
|
|
}
|
|
|
|
}
|