arcadiasuite/plus/app/Http/Controllers/NotaServicoConfigController...

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();
}
}