223 lines
7.5 KiB
PHP
223 lines
7.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Ecommerce;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Carrinho;
|
|
use App\Models\Cliente;
|
|
use App\Models\EcommerceConfig;
|
|
use App\Models\EnderecoEcommerce;
|
|
use App\Models\CategoriaProduto;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
|
|
class ClienteController extends Controller
|
|
{
|
|
public function __construct(){
|
|
// Session managed by Laravel
|
|
}
|
|
|
|
public function cadastro(Request $request){
|
|
$config = EcommerceConfig::findOrfail($request->loja_id);
|
|
$carrinho = $this->_getCarrinho();
|
|
$categorias = CategoriaProduto::where('ecommerce', 1)->where('status', 1)
|
|
->where('empresa_id', $config->empresa_id)->get();
|
|
return view('loja.cadastro', compact('carrinho', 'config', 'categorias'));
|
|
}
|
|
|
|
public function update(Request $request, $id){
|
|
$item = Cliente::findOrFail($id);
|
|
try{
|
|
$item->razao_social = $request->nome;
|
|
$item->email = $request->email;
|
|
if($request->senha){
|
|
if(strlen($request->senha) < 6){
|
|
session()->flash("flash_error", 'Senha deve ter no mínimo 6 caracteres!');
|
|
return redirect()->back();
|
|
}
|
|
$item->senha = md5($request->senha);
|
|
}
|
|
$item->save();
|
|
session()->flash("flash_success", "Dados atualizados!");
|
|
}catch(\Exception $e){
|
|
session()->flash("flash_error", 'Algo deu errado: ' . $e->getMessage());
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
private function _getCarrinho(){
|
|
$data = [];
|
|
if(isset($_SESSION["session_cart"])){
|
|
$data = Carrinho::where('session_cart', $_SESSION["session_cart"])
|
|
->first();
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
public function cadastroStore(Request $request){
|
|
$this->_validate($request);
|
|
$config = EcommerceConfig::findOrfail($request->loja_id);
|
|
|
|
try {
|
|
|
|
$nfe = DB::transaction(function () use ($request, $config) {
|
|
|
|
$code = rand() % 9000 + 999;
|
|
$telefone = preg_replace('/[^0-9]/', '', $request->telefone);
|
|
|
|
$request->merge([
|
|
'senha' => md5($request->senha),
|
|
'telefone' => $telefone,
|
|
'uid' => Str::random(30),
|
|
'token' => $code,
|
|
'status' => 1,
|
|
'razao_social' => $request->nome,
|
|
'empresa_id' => $config->empresa_id
|
|
]);
|
|
$cli = Cliente::create($request->all());
|
|
|
|
EnderecoEcommerce::create([
|
|
'cliente_id' => $cli->id,
|
|
'cidade_id' => $request->cidade_id,
|
|
'rua' => $request->rua,
|
|
'numero' => $request->numero,
|
|
'referencia' => $request->referencia,
|
|
'cep' => $request->cep,
|
|
'padrao' => 1,
|
|
'bairro' => $request->bairro
|
|
]);
|
|
|
|
$_SESSION['cliente_ecommerce'] = $cli->id;
|
|
return $cli;
|
|
});
|
|
session()->flash("flash_success", "Bem vindo " . $request->nome);
|
|
|
|
} catch (\Exception $e) {
|
|
// echo $e->getMessage() . '<br>' . $e->getLine();
|
|
// die;
|
|
session()->flash("flash_error", 'Algo deu errado: '. $e->getMessage());
|
|
return redirect()->back();
|
|
}
|
|
return redirect()->route('loja.carrinho', 'link='.$config->loja_id);
|
|
|
|
}
|
|
|
|
private function _validate(Request $request){
|
|
$doc = $request->cpf_cnpj;
|
|
|
|
$rules = [
|
|
'senha' => 'required|min:6|same:repita_senha',
|
|
'email' => 'required',
|
|
'nome' => 'required',
|
|
'termos' => 'required',
|
|
];
|
|
|
|
$messages = [
|
|
'senha.same' => 'Senhas não coincidem',
|
|
'senha.min' => 'Mínimo de 6 caracteres',
|
|
'senha.required' => 'Campo obrigatório',
|
|
'nome.required' => 'Campo obrigatório',
|
|
'email.required' => 'Campo obrigatório',
|
|
'termos.required' => 'Aceite os termos e condições',
|
|
];
|
|
|
|
$this->validate($request, $rules, $messages);
|
|
}
|
|
|
|
private function _getClienteLogado(){
|
|
if(isset($_SESSION['cliente_ecommerce'])){
|
|
return $_SESSION['cliente_ecommerce'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function minhaConta(Request $request){
|
|
$clienteLogado = $this->_getClienteLogado();
|
|
$config = EcommerceConfig::findOrfail($request->loja_id);
|
|
|
|
if($clienteLogado == null){
|
|
return redirect()->route('loja.cadastro', 'link='.$config->loja_id);
|
|
}
|
|
|
|
$cliente = Cliente::findOrFail($clienteLogado);
|
|
$categorias = CategoriaProduto::where('ecommerce', 1)->where('status', 1)
|
|
->where('empresa_id', $config->empresa_id)->get();
|
|
$carrinho = $this->_getCarrinho();
|
|
|
|
\MercadoPago\SDK::setAccessToken($config->mercadopago_access_token);
|
|
foreach($cliente->pedidosEcommerce as $p){
|
|
if($p->transacao_id && $p->status_pagamento != 'approved'){
|
|
$payStatus = \MercadoPago\Payment::find_by_id($p->transacao_id);
|
|
if($payStatus){
|
|
$p->status_pagamento = $payStatus->status;
|
|
$p->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
return view('loja.minha_conta', compact('cliente', 'config', 'categorias', 'carrinho'));
|
|
}
|
|
|
|
public function storeEndereco(Request $request){
|
|
$clienteLogado = $this->_getClienteLogado();
|
|
$request->merge([
|
|
'cliente_id' => $clienteLogado,
|
|
'padrao' => $request->padrao ? 1 : 0,
|
|
]);
|
|
|
|
if($request->padrao){
|
|
EnderecoEcommerce::where('cliente_id', $clienteLogado)->update(['padrao' => 0]);
|
|
}
|
|
if($request->endereco_id){
|
|
$endereco = EnderecoEcommerce::findOrfail($request->endereco_id);
|
|
|
|
$endereco->fill($request->all())->save();
|
|
session()->flash("flash_success", "Endereço atualizado!");
|
|
|
|
}else{
|
|
EnderecoEcommerce::create($request->all());
|
|
session()->flash("flash_success", "Endereço cadastrado!");
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function logoff(){
|
|
$_SESSION['cliente_ecommerce'] = null;
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function login(Request $request){
|
|
$clienteLogado = $this->_getClienteLogado();
|
|
$config = EcommerceConfig::findOrfail($request->loja_id);
|
|
|
|
if($clienteLogado){
|
|
return redirect()->route('loja.minha-conta', 'link='.$config->loja_id);
|
|
}
|
|
$categorias = CategoriaProduto::where('ecommerce', 1)->where('status', 1)
|
|
->where('empresa_id', $config->empresa_id)->get();
|
|
return view('loja.login', compact('config', 'categorias'));
|
|
|
|
}
|
|
|
|
public function auth(Request $request){
|
|
$config = EcommerceConfig::findOrfail($request->loja_id);
|
|
|
|
$email = $request->email;
|
|
$senha = $request->senha;
|
|
$cliente = Cliente::where('email', $email)
|
|
->where('empresa_id', $config->empresa_id)
|
|
->where('senha', md5($senha))
|
|
->first();
|
|
|
|
if($cliente == null){
|
|
session()->flash("flash_error", "Credenciais incorretas!");
|
|
return redirect()->back();
|
|
}
|
|
|
|
$_SESSION['cliente_ecommerce'] = $cliente->id;
|
|
return redirect()->route('loja.index', 'link='.$config->loja_id);
|
|
|
|
}
|
|
}
|