Created
July 17, 2021 20:33
-
-
Save FredAzevedo/d8a974f1c1629c0b41f41f424908214c to your computer and use it in GitHub Desktop.
PedidoController
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers; | |
use Illuminate\Validation\ValidationException; | |
use Illuminate\Support\Facades\Crypt; | |
use Illuminate\Http\Request; | |
use App\Models\Site; | |
use App\Models\SiteBanner; | |
use App\Models\SiteLogoParceiros; | |
use App\Models\Pedido; | |
use App\Models\Produto; | |
use App\Models\Cliente; | |
use App\Models\TelefonesCliente; | |
use App\Models\EmailCliente; | |
use App\Models\PedidoItens; | |
use DB; | |
Use Alert; | |
use Exception; | |
use Illuminate\Support\Facades\DB as FacadesDB; | |
use Illuminate\Support\Facades\Validator; | |
class PedidoController extends Controller | |
{ | |
/** | |
* Display a listing of the resource. | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function index(Request $request) | |
{ | |
try { | |
$id = Crypt::decrypt($request->get('id')); | |
} catch (Illuminate\Contracts\Encryption\DecryptException $e) { | |
redirect('app.home'); | |
} | |
$banner = SiteBanner::all(); | |
$logo = SiteLogoParceiros::all(); | |
$site = Site::all(); | |
$pedido = Pedido::all(); | |
$produto = Produto::where('id',$id)->first(); | |
if(!$produto){ | |
redirect('app.home'); | |
} | |
return view('site.pedido', [ | |
'site' => $site, | |
'banner' => $banner, | |
'logos' => $logo, | |
'pedidos' => $pedido, | |
'produto' => $produto | |
]); | |
} | |
/** | |
* Show the form for creating a new resource. | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function create() | |
{ | |
// | |
} | |
/** | |
* Store a newly created resource in storage. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function store(Request $request) | |
{ | |
$request->validate([ | |
'cpf_cnpj' => 'required', | |
'razao_social' => 'required', | |
'representante_nome' => 'required', | |
'representante_cpf' => 'required', | |
'nascimento' => 'required', | |
'email' => 'email', | |
'ddd' => 'required', | |
'telefone' => 'required', | |
'cep' => 'required', | |
'logradouro' => 'required', | |
'numero' => 'required', | |
'bairro' => 'required', | |
'cidade' => 'required', | |
'uf' => 'required', | |
], | |
[ | |
'cpf_cnpj.required' => 'O CPF/CNPJ é obrigatório', | |
'razao_social.required' => 'A Razão Social é obrigatória', | |
'representante_nome.required' => 'O Nome do Representante da empresa é obrigatório', | |
'representante_cpf.required' => 'O CPF do Representante da empresa é obrigatório', | |
'nascimento.required' => 'O Nascimento do Representante da empresa é obrigatório', | |
'email.required' => 'O E-mail é obrigatório', | |
'ddd.required' => 'O DDD é obrigatório', | |
'telefone.required' => 'O Telefone é obrigatório', | |
'cep.required' => 'O CEP é obrigatório', | |
'logradouro.required' => 'O Logradouro é obrigatório', | |
'numero.required' => 'O Número do Logradouro é obrigatório', | |
'bairro.required' => 'O Bairro é obrigatório', | |
'cidade.required' => 'A Cidade é obrigatória', | |
'uf.required' => 'A UF é obrigatória', | |
]); | |
$dados = $request->all(); | |
$produto_id = Crypt::decrypt($dados['produto_id']); | |
$preco = $dados['valor']; | |
$promocode = $dados['promocode'] ?? null; | |
$razao_social = $dados['razao_social'] ?? null; | |
$cpf_cnpj = $dados['cpf_cnpj'] ?? null; | |
$rg = $dados['rg'] ?? null; | |
$representante_nome = $dados['representante_nome'] ?? null; | |
$representante_cpf = $dados['representante_cpf'] ?? null; | |
$nascimento = $dados['nascimento'] ?? null; | |
$cei = $dados['cei'] ?? null; | |
$nis = $dados['nis'] ?? null; | |
$cep = $dados['cep'] ?? null; | |
$logradouro = $dados['logradouro'] ?? null; | |
$numero = $dados['numero'] ?? null; | |
$bairro = $dados['bairro'] ?? null; | |
$cidade = $dados['cidade'] ?? null; | |
$uf = $dados['uf'] ?? null; | |
$ibge = $dados['ibge'] ?? null; | |
$email = $dados['email'] ?? null; | |
$ddd = $dados['ddd'] ?? null; | |
$telefone = $dados['telefone'] ?? null; | |
if($promocode){ | |
$fornecedor_tabela = DB::table('fornecedor_tabela') | |
->where('promocode',$promocode) | |
->first(); | |
} | |
$fornecedor_id = $fornecedor_tabela->fornecedor_id ?? null; | |
if($fornecedor_id){ | |
$comissao_tabela = DB::table('fornecedor') | |
->select('comissao_tabela_id') | |
->where('id','=',$fornecedor_id) | |
->first(); | |
$produto_tabela_preco_id = DB::table('produto_tabela_preco as tp') | |
->join('fornecedor_tabela as ft','ft.digital_credencial_id','=', 'tp.tabela_preco_id') | |
->where('tp.produto_id',$produto_id) | |
->where('ft.fornecedor_id',$fornecedor_id) | |
->where('tp.tabela_preco_id',$fornecedor_tabela->digital_credencial_id) | |
->select('tp.id','preco') | |
->first(); | |
} | |
try{ | |
DB::beginTransaction(); | |
$consultar_cliente = Cliente::where('cpf_cnpj',$cpf_cnpj)->first(); | |
if($consultar_cliente){ | |
editar(); | |
}else{ | |
salvar(); | |
} | |
//cliente | |
$cliente = Cliente::create([ | |
'razao_social' => $razao_social, | |
'cpf_cnpj' => $cpf_cnpj, | |
'unit_id' => 1, | |
'tipo' => (strlen($cpf_cnpj) == 14) ? 'F' : 'J', | |
'cliente_grupo_id' => 1, | |
'nome_fantasia'=> $razao_social, | |
'rg_ie' => $rg, | |
//'documento_identificacao', | |
//'im', | |
'nascimento' => $nascimento, | |
'sexo' => '', | |
'fornecedor_id' => $fornecedor_id, | |
'comissao_parceiro' => $comissao_tabela->comissao_tabela_id, | |
'unit_id' => 1, | |
'user_id' =>1, | |
'representante_nome' => $representante_nome, | |
'representante_cpf' => $representante_cpf, | |
'cep' => $cep, | |
'logradouro' => $logradouro, | |
'numero' => $numero, | |
'complemento' => '', | |
'bairro'=> $bairro, | |
'cidade' => $cidade, | |
'uf' => $uf, | |
'codMuni' => $ibge, | |
'cei' => $cei, | |
'nis' => $nis, | |
'num_eleitor' => '', | |
'zona_eleitoral' => '', | |
'secao_eleitoral' => '', | |
'municipio_eleitoral' => '' | |
]); | |
// telefone | |
$telefone_cliente = TelefonesCliente::create([ | |
'cliente_id' => $cliente->id, | |
'responsavel' => $razao_social, | |
'telefone'=> $ddd.$telefone | |
]); | |
$email_cliente = EmailCliente::create([ | |
'cliente_id' => $cliente->id, | |
'responsavel' => $razao_social, | |
'email' => $email | |
]); | |
// pedido | |
$pedido = Pedido::create([ | |
'data_vencimento' => date('Y-m-d'), | |
'data_competencia' => date('Y-m-d'), | |
'data_faturado' => null, | |
'referencia' => chr(rand(65,90)) . rand(65,90) . chr(rand(65,90)) . chr(rand(65,90)) . rand(65,90) . chr(rand(65,90)), | |
'tipo' => 'Venda', | |
'user_id' => 1, | |
'total_itens' => $produto_tabela_preco_id->preco, | |
'total_desconto' => 0.00, | |
'total_pedido' => $produto_tabela_preco_id->preco, | |
'notas' => 'Pedido gerado pelo Site.', | |
'faturado' => 'N', | |
'status' => 'A', | |
'tipo_pgto_id' => 4, | |
'tipo_forma_pgto_id' => 1, | |
'num_aprovacao' => null, | |
'certificadora' => null, | |
'status_certificadora_id' => 1, | |
'boleto_id' => null, | |
'boleto_emitido' => 'S', | |
'boleto_status' => null, | |
'geraNFe' => 'S', | |
'unit_id' => 1, | |
'cliente_id' => $cliente->id, | |
'pc_receita_id' => 1, | |
'pc_receita_nome' => '1.01.01.01 - Certificados e Tokens', | |
'orcamento_id' => null, | |
'conta_bancaria_id' => null, | |
'boleto_account_id' => null, | |
'tabela_precos_id' => 1, | |
'resultado' => null, | |
'codigo' => null, | |
'mensagem' => null, | |
'orderid' => null, | |
'reqid' => null, | |
'cn' => null, | |
'promocode' => null, | |
'orderbase' => null, | |
'renewal' => 0, | |
'product_code' => null, | |
'encomenda_gerada' => 'N', | |
'boleto_pdf' => null, | |
'statusPayment' => 'Nao Pago', | |
'certType' => 'NA', | |
'status_certificado' => 'Nao Verificado', | |
'fornecedor_id' => $fornecedor_id, | |
'cliente_faturamento_id' => $cliente->id, | |
'inapto' => 'N' | |
]); | |
// pedido_item | |
$pedido_itens = PedidoItens::create([ | |
'pedido_id' => $pedido->id, | |
'sequencia' => 1, | |
'produto_id' => $produto_id, | |
'vaucher_id' => null, | |
'produto_tabela_preco_id'=> $produto_tabela_preco_id->id, | |
'descricao' => null, | |
'custo' => 0.00, | |
'preco' => $produto_tabela_preco_id->preco, | |
'quantidade' => 1, | |
'acrescimo' => 0.00, | |
'desconto' => 0.00, | |
'total_item' => $produto_tabela_preco_id->preco, | |
'total' => $produto_tabela_preco_id->preco | |
]); | |
DB::commit(); | |
}catch(\Exception $e){ | |
dd($e); | |
DB::rollBack(); | |
} | |
} | |
public function promocode(Request $request) | |
{ | |
try { | |
$produto = Crypt::decrypt($request->get('produto')); | |
} catch (Illuminate\Contracts\Encryption\DecryptException $e) { | |
return response()->json([ 'error'=> $e->getMessage() ], 500); | |
} | |
$promocode = $request->get('promocode'); | |
if(!$promocode){ | |
$produto = Produto::where('id',$produto)->first(); | |
return response()->json(['preco' => $produto->preco_site]); | |
} | |
$preco = DB::table('produto_tabela_preco as tp') | |
->join('fornecedor_tabela as ft','ft.digital_credencial_id','=', 'tp.tabela_preco_id') | |
->where('tp.produto_id',$produto) | |
->where('ft.promocode',$promocode) | |
->select('tp.preco') | |
->first(); | |
\Log::debug(print_r($preco,true)); | |
if(!$preco){ | |
$produto = Produto::where('id',$produto)->first(); | |
return response()->json(['preco' => $produto->preco_site]); | |
} | |
return response()->json($preco); | |
} | |
/** | |
* Display the specified resource. | |
* | |
* @param \App\Models\Pedido $pedido | |
* @return \Illuminate\Http\Response | |
*/ | |
public function show(Pedido $pedido) | |
{ | |
// | |
} | |
/** | |
* Show the form for editing the specified resource. | |
* | |
* @param \App\Models\Pedido $pedido | |
* @return \Illuminate\Http\Response | |
*/ | |
public function edit(Pedido $pedido) | |
{ | |
// | |
} | |
/** | |
* Update the specified resource in storage. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @param \App\Models\Pedido $pedido | |
* @return \Illuminate\Http\Response | |
*/ | |
public function update(Request $request, Pedido $pedido) | |
{ | |
// | |
} | |
/** | |
* Remove the specified resource from storage. | |
* | |
* @param \App\Models\Pedido $pedido | |
* @return \Illuminate\Http\Response | |
*/ | |
public function destroy(Pedido $pedido) | |
{ | |
// | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment