Skip to content

Instantly share code, notes, and snippets.

@FredAzevedo
Created July 17, 2021 20:33
Show Gist options
  • Save FredAzevedo/d8a974f1c1629c0b41f41f424908214c to your computer and use it in GitHub Desktop.
Save FredAzevedo/d8a974f1c1629c0b41f41f424908214c to your computer and use it in GitHub Desktop.
PedidoController
<?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
$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