355 lines
12 KiB
PHP
355 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\ConfiguracaoSuper;
|
|
use App\Models\NotaServicoConfig;
|
|
use App\Models\Empresa;
|
|
use App\Models\Cidade;
|
|
use App\Utils\UploadUtil;
|
|
use CloudDfe\SdkPHP\Softhouse;
|
|
use CloudDfe\SdkPHP\Emitente;
|
|
use Illuminate\Support\Str;
|
|
use CloudDfe\SdkPHP\Certificado;
|
|
|
|
class NotaServicoConfigController extends Controller
|
|
{
|
|
protected $util;
|
|
|
|
public function __construct(UploadUtil $util)
|
|
{
|
|
$this->util = $util;
|
|
}
|
|
|
|
public function index(Request $request){
|
|
$config = ConfiguracaoSuper::first();
|
|
|
|
if($config == null){
|
|
session()->flash('flash_error', 'Sem dados de configuração superadmin!');
|
|
return redirect()->back();
|
|
}
|
|
|
|
if($config->token_auth_nfse == null){
|
|
session()->flash('flash_error', 'Sem dados do token integra notas de configuração superadmin!');
|
|
return redirect()->back();
|
|
}
|
|
|
|
$item = NotaServicoConfig::where('empresa_id', $request->empresa_id)
|
|
->first();
|
|
|
|
$empresa = Empresa::findOrFail($request->empresa_id);
|
|
$tokenNfse = $empresa->token_nfse;
|
|
return view('nota_servico_config.index', compact('item', 'tokenNfse'));
|
|
|
|
}
|
|
|
|
public function store(Request $request){
|
|
try{
|
|
$file_name = null;
|
|
if($request->hasFile('image')){
|
|
$file_name = $this->util->uploadImage($request, '/logos');
|
|
}
|
|
$request->merge([
|
|
'logo' => $file_name
|
|
]);
|
|
|
|
$item = NotaServicoConfig::create($request->all());
|
|
$resp = $this->storeSofthouse($request);
|
|
|
|
if($resp->codigo == 200){
|
|
$item->token = $resp->token;
|
|
$item->save();
|
|
|
|
$empresa = Empresa::findOrFail($request->empresa_id);
|
|
$empresa->token_nfse = $resp->token;
|
|
$empresa->save();
|
|
|
|
session()->flash("flash_success", "Configurado com sucesso!");
|
|
}else{
|
|
session()->flash('flash_error', $resp->mensagem);
|
|
}
|
|
|
|
}catch(\Exception $e){
|
|
session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
private function storeSofthouse($request){
|
|
try {
|
|
$config = ConfiguracaoSuper::first();
|
|
|
|
$params = [
|
|
'token' => $config->token_auth_nfse,
|
|
'ambiente' => Softhouse::AMBIENTE_PRODUCAO,
|
|
'options' => [
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
],
|
|
"debug" => false,
|
|
"timeout" => 60,
|
|
"port" => 443,
|
|
"http_version" => CURL_HTTP_VERSION_NONE
|
|
];
|
|
$softhouse = new Softhouse($params);
|
|
$documento = preg_replace('/[^0-9]/', '', $request->documento);
|
|
$telefone = preg_replace('/[^0-9]/', '', $request->telefone);
|
|
$cep = preg_replace('/[^0-9]/', '', $request->cep);
|
|
|
|
$cidade = Cidade::findOrFail($request->cidade_id);
|
|
|
|
$ie = $request->ie;
|
|
if($ie == 'ISENTO'){
|
|
$ie = null;
|
|
}
|
|
$payload = [
|
|
"nome" => $request->nome,
|
|
"razao" => $request->razao_social,
|
|
"cnae" => $request->cnae,
|
|
"crt" => $request->regime == 'simples' ? 1 : 3,
|
|
"ie" => $ie,
|
|
"im" => $request->im,
|
|
"login_prefeitura" => $request->login_prefeitura,
|
|
"senha_prefeitura" => $request->senha_prefeitura,
|
|
"telefone" => $telefone,
|
|
"email" => $request->email,
|
|
"rua" => $request->rua,
|
|
"numero" => $request->numero,
|
|
"complemento" => $request->complemento,
|
|
"bairro" => $request->bairro,
|
|
"municipio" => $cidade->nome,
|
|
"cmun" => $cidade->codigo,
|
|
"uf" => $cidade->uf,
|
|
"cep" => $cep,
|
|
"plano" => 'Emitente',
|
|
"documentos" => [
|
|
"nfse" => true,
|
|
]
|
|
];
|
|
|
|
if(strlen($documento) == 11){
|
|
$payload['cpf'] = $documento;
|
|
}else{
|
|
$payload['cnpj'] = $documento;
|
|
}
|
|
// dd($payload);
|
|
$resp = $softhouse->criaEmitente($payload);
|
|
$resp = json_decode($resp);
|
|
|
|
return $resp;
|
|
}catch(\Exception $e){
|
|
session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function update(Request $request, $id){
|
|
try{
|
|
$item = NotaServicoConfig::findOrFail($id);
|
|
|
|
$file_name = $item->logo;
|
|
if($request->hasFile('image')){
|
|
$file_name = $this->util->uploadImage($request, '/logos');
|
|
}
|
|
$request->merge([
|
|
'logo' => $file_name
|
|
]);
|
|
|
|
$item->fill($request->all())->save();
|
|
|
|
$resp = $this->storeSofthouse($request);
|
|
|
|
if($resp->codigo == 200){
|
|
|
|
$item->token = $resp->token;
|
|
$item->save();
|
|
|
|
session()->flash("flash_success", "Empresa cadastrada na api com sucesso!");
|
|
}else{
|
|
|
|
if($resp->codigo == 5001){
|
|
session()->flash('flash_error', $resp->mensagem . " - " . $resp->erros[0]->erro);
|
|
}
|
|
|
|
$resp = $this->atualizaSofthouse($request, $item);
|
|
if($resp == null){
|
|
session()->flash('flash_error', 'Algo deu errado: TOKEN não configurado para atualizar!');
|
|
}else{
|
|
session()->flash("flash_success", "Atualizado com sucesso!");
|
|
}
|
|
}
|
|
|
|
}catch(\Exception $e){
|
|
session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
private function atualizaSofthouse($request, $item){
|
|
try {
|
|
$config = ConfiguracaoSuper::first();
|
|
|
|
$params = [
|
|
'token' => $item->token,
|
|
'ambiente' => Softhouse::AMBIENTE_PRODUCAO,
|
|
'options' => [
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
],
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
];
|
|
|
|
$softhouse = new Emitente($params);
|
|
$documento = preg_replace('/[^0-9]/', '', $request->documento);
|
|
$telefone = preg_replace('/[^0-9]/', '', $request->telefone);
|
|
$cep = preg_replace('/[^0-9]/', '', $request->cep);
|
|
|
|
$cidade = Cidade::findOrFail($request->cidade_id);
|
|
$ie = $request->ie;
|
|
if($ie == 'ISENTO'){
|
|
$ie = null;
|
|
}
|
|
$payload = [
|
|
"nome" => $request->nome,
|
|
"razao" => $request->razao_social,
|
|
"cnae" => $request->cnae,
|
|
"crt" => $request->regime == 'simples' ? 1 : 3,
|
|
"ie" => $ie,
|
|
"im" => $request->im,
|
|
"login_prefeitura" => $request->login_prefeitura,
|
|
"senha_prefeitura" => $request->senha_prefeitura,
|
|
"telefone" => $telefone,
|
|
"email" => $request->email,
|
|
"rua" => $request->rua,
|
|
"numero" => $request->numero,
|
|
"complemento" => $request->complemento,
|
|
"bairro" => $request->bairro,
|
|
"municipio" => $cidade->nome,
|
|
"cmun" => $cidade->codigo,
|
|
"uf" => $cidade->uf,
|
|
"cep" => $cep,
|
|
"plano" => 'Emitente',
|
|
"documentos" => [
|
|
"nfse" => true,
|
|
]
|
|
];
|
|
|
|
if(strlen($documento) == 11){
|
|
$payload['cpf'] = $documento;
|
|
}else{
|
|
$payload['cnpj'] = $documento;
|
|
}
|
|
|
|
if($item->logo != null){
|
|
if(file_exists(public_path('uploads/logos/').$item->logo)){
|
|
$file = file_get_contents(public_path('uploads/logos/').$item->logo);
|
|
$payload['logo'] = base64_encode($file);
|
|
}
|
|
}
|
|
// dd($payload);
|
|
$resp = $softhouse->atualiza($payload);
|
|
$resp = json_decode($resp);
|
|
|
|
return $resp;
|
|
}catch(\Exception $e){
|
|
session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function certificado(){
|
|
$config = ConfiguracaoSuper::first();
|
|
if($config == null){
|
|
session()->flash('flash_error', 'Sem dados de configuração superadmin!');
|
|
return redirect()->back();
|
|
}
|
|
|
|
$certificadoApi = $this->getCertificado();
|
|
return view('nota_servico_config.certificado', compact('certificadoApi'));
|
|
}
|
|
|
|
private function getCertificado(){
|
|
$item = NotaServicoConfig::where('empresa_id', request()->empresa_id)
|
|
->first();
|
|
$params = [
|
|
'token' => $item->token,
|
|
'ambiente' => Certificado::AMBIENTE_PRODUCAO,
|
|
'options' => [
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
],
|
|
"debug" => false,
|
|
"timeout" => 60,
|
|
"port" => 443,
|
|
"http_version" => CURL_HTTP_VERSION_NONE
|
|
];
|
|
$certificado = new Certificado($params);
|
|
$resp = $certificado->mostra();
|
|
$resp = json_decode($resp);
|
|
|
|
return $resp;
|
|
}
|
|
|
|
public function uploadCertificado(Request $request){
|
|
// if(!is_dir(public_path('certificado_temp'))){
|
|
// mkdir(public_path('certificado_temp'), 0777, true);
|
|
// }
|
|
|
|
if(!$request->hasFile('file')){
|
|
session()->flash('flash_error', 'Selecione o Certificado!');
|
|
return redirect()->back();
|
|
}
|
|
|
|
$file = base64_encode(file_get_contents($request->file('file')->path()));
|
|
// dd($file);
|
|
$senha = $request->senha;
|
|
|
|
try {
|
|
$config = ConfiguracaoSuper::first();
|
|
$item = NotaServicoConfig::where('empresa_id', $request->empresa_id)
|
|
->first();
|
|
$params = [
|
|
'token' => $item->token,
|
|
'ambiente' => Certificado::AMBIENTE_PRODUCAO,
|
|
'options' => [
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
],
|
|
'debug' => false,
|
|
'timeout' => 60,
|
|
'port' => 443,
|
|
'http_version' => CURL_HTTP_VERSION_NONE
|
|
];
|
|
$certificado = new Certificado($params);
|
|
|
|
$payload = [
|
|
'certificado' => $file,
|
|
'senha' => $senha
|
|
];
|
|
|
|
$resp = $certificado->atualiza($payload);
|
|
$resp = json_decode($resp);
|
|
|
|
if($resp->codigo == 200){
|
|
session()->flash('flash_success', 'Upload realizado com sucesso!');
|
|
}else{
|
|
session()->flash('flash_error', $resp->mensagem);
|
|
}
|
|
}catch(\Exception $e){
|
|
session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
}
|