/home/dvjjulio/test.istyle.mx/app/Http/Controllers/ClienteController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Estado;
use App\Rol;
use App\Cliente;
use Validator;
use Uuid;
use Auth;
use App\Helper;
use App\Pais;
class ClienteController extends Controller
{
//
public function index($id = null, $limit = null)
{
$clientesI = new Cliente();
$clientId = null;
$pagination = null;
$clientes_found = $clientesI->Clientes();
if (Helper::getRol() == Auth::user()->rol_id) {
$clientes = $clientesI->ClientesWithLimit($id, $clientId, $limit);
$clientesCount = $clientesI->ClientesCount($id);
} else if (Helper::getRolOp() == Auth::user()->rol_id) {
$clientes = $clientesI->ClientesWithLimit($id, Auth::user()->id, $clientId, $limit);
$clientesCount = $clientesI->ClientesCount($id, Auth::user()->id);
} else {
$clientes = $clientesI->ClientesWithLimit(Auth::user()->id, $clientId, $limit);
$clientesCount = $clientesI->ClientesCount(Auth::user()->id);
}
if ($clientesCount && $clientesCount[0]->total > 100) {
$pagination = ceil($clientesCount[0]->total / 100);
}
$estado = new Estado();
$estados = $estado->estados();
$roles = Rol::all();
$paises = Pais::all();
return view('Catalogos.Cliente')->with(compact('clientes', 'estados', 'roles', 'clientes_found', 'paises', 'pagination'));
}
public function clientes(Request $request)
{
$search = $request->input('search');
$cliente = new Cliente();
return $cliente->ClientsSearchBar($search);
// return Cliente::where('nombre', 'like', '%'.$search.'%')
// ->orWhere('ape_p', 'like', '%'.$search.'%')
// ->orWhere('ape_m', 'like', '%'.$search.'%')
// ->orWhere('registro', 'like', '%'.$search.'%')
// ->take(100)
// ->get();
}
public function guardar(Request $request)
{
$data = $request->all();
$cliente = Cliente::where('registro', '=', $data['registro'])->where('status_id', 0)->first();
if (isset($cliente)) {
$data['id'] = $cliente->id;
}
if ($data['id'] == "0") {
$validacion = Validator::make(
$data,
array(
'registro' => 'required|unique:cliente',
'pass' => 'required',
'nombre' => 'required',
'rol' => 'required'
),
array(
'registro.required' => 'El nombre de la categoria es obligatorio',
'registro.unique' => 'El registro ya existe',
'pass.required' => 'El Password es obligatorio',
'nombre.required' => 'El Nombre es obligatorio',
'rol.required' => 'El Rol es obligatorio',
)
);
} else {
if ($data['pass_check']) {
$validacion = Validator::make(
$data,
array(
'nombre' => 'required',
'rol' => 'required'
),
array(
'nombre.required' => 'El Nombre es obligatorio',
'rol.required' => 'El Rol es obligatorio',
)
);
} else {
$validacion = Validator::make(
$data,
array(
'pass' => 'required',
'nombre' => 'required',
'rol' => 'required'
),
array(
'pass.required' => 'El Password es obligatorio',
'nombre.required' => 'El Nombre es obligatorio',
'rol.required' => 'El Rol es obligatorio',
)
);
}
}
if ($validacion->fails()) {
return response()->json(['status' => false, 'message' => $validacion->messages()]);
}
if ($data['id'] == "0") {
$cliente = new Cliente();
$cliente->id = Uuid::generate();
$mesage = "El Cliente ha sido creado exitosamente";
$cliente->password = bcrypt($data['pass']);
} else {
$cliente = Cliente::find($data['id']);
$cliente->status_id = 1;
$mesage = "El Cliente ha sido actualizada correctamente";
if ($data['pass_check'] == "false") {
$cliente->password = bcrypt($data['pass']);
}
}
$cliente->registro = $data['registro'];
$cliente->nombre = $data['nombre'];
$cliente->patrocinador = (isset($data['patrocinador'])) ? $data['patrocinador'] : null;
$cliente->ape_p = $data['ape_p'];
$cliente->ape_m = $data['ape_m'];
$cliente->ine = $data['ine'];
$cliente->rfc = $data['rfc'];
$cliente->sexo = $data['sexo'];
$cliente->fecha_nac = $data['fecha_nac'];
$cliente->edo_civil = $data['edo_civil'];
$cliente->profesion = $data['profesion'];
$cliente->calle = $data['calle'];
$cliente->numero = $data['no_casa'];
$cliente->num_interior = $data['noi_casa'];
$cliente->colonia = $data['colonia'];
$cliente->delegacion = $data['delegacion'];
$cliente->cp = $data['cp'];
$cliente->pais_id = $data['pais'];
$cliente->estado_id = $data['edo'];
$cliente->lada = $data['lada'];
$cliente->tel = $data['tel'];
$cliente->whatsapp = $data['whats'];
$cliente->email = $data['email'];
$cliente->rol_id = $data['rol'];
$cliente->cliente_id = Auth::user()->id;
if ($cliente->save()) {
return response()->json(['status' => true, 'message' => $mesage, 'data' => $data]);
} else {
return response()->json(['status' => false, 'message' => 'Error al insertar los datos']);
}
}
public function update(Request $request)
{
$id = $request->input('id');
$clientes = new Cliente();
return $clientes->Clientes($id); //Cliente::find($id);
}
public function delete(Request $request)
{
$cliente = Cliente::Find($request->input('id'));
$cliente->status_id = 0;
if ($cliente->save()) {
return response()->json(['status' => true, 'message' => 'Registro eliminado correctamente']);
} else {
return response()->json(['status' => false, 'message' => 'Error al eliminar registro']);
}
}
public function change_pass(Request $request)
{
$data = $request->all();
$validacion = Validator::make(
$data,
array(
'pass' => 'required'
),
array(
'pass.required' => 'El Password es obligatorio'
)
);
if ($validacion->fails()) {
return response()->json(['status' => false, 'message' => $validacion->messages()]);
}
$cliente = Cliente::find($data['id']);
$cliente->password = bcrypt($data['pass']);
$cliente->cliente_id = Auth::user()->id;
if ($cliente->save()) {
return response()->json(['status' => true, 'message' => "El cambio de contraseƱa fue exitoso", 'data' => $data]);
} else {
return response()->json(['status' => false, 'message' => 'Error al insertar los datos']);
}
}
public function estados(Request $request)
{
$pais = $request->input('pais');
$estado = new Estado();
return $estado->estados($pais);
}
public function deactivateClientes()
{
$clientes = new Cliente();
$deactivate = $clientes->clientesToDeactivate();
$activate = $clientes->clientesToActivate();
return response()->json(['status' => true]);
}
public function storeSignature(Request $request)
{
$client_id = $request->input('client_id');
$contract_url = $request->input('contract_src');
$cliente = Cliente::find($client_id);
$cliente->contract_url = $contract_url;
if ($cliente->save()) {
return response()->json(['status' => true, 'message' => "Firma guardada correctamente"]);
} else {
return response()->json(['status' => false, 'message' => 'Error al guardar la firma']);
}
}
public function getContract($id)
{
$cliente = Cliente::find($id);
if (!$cliente) return 'Error al cargar el contrato';
// $report = new ReportController();
$pdf = new \Fpdf();
$pdf::AddPage('P',"Letter");
$pdf::Image(__DIR__ . '/../../../public/img/reporte/contract.jpg', 0, 0, 216, 'JPEG');
$pdf::SetFont('Arial', '', 13);
$pdf::SetXY(170, 55);
$pdf::Cell(130, 4, $cliente->registro, 0, 0);
$pdf::SetXY(30, 63);
$pdf::Cell(130, 4, mb_convert_encoding($cliente->ape_p ." , " . $cliente->ape_m . ", " . $cliente->nombre, 'ISO-8859-1', 'UTF-8'), 0, 0);
$pdf::SetXY(30, 73);
$pdf::Cell(130, 4, $cliente->ine, 0, 0);
$pdf::SetXY(100, 73);
$pdf::Cell(130, 4, $cliente->rfc, 0, 0);
$pdf::SetXY($cliente->sexo == 'M' ? 175 : 187, 73);
$pdf::Cell(130, 4, 'X', 0, 0);
$pdf::SetXY(20, 83);
$pdf::Cell(130, 4, $cliente->fecha_nac, 0, 0);
$edo_civil = 103;
if ($cliente->edo_civil == "S") $edo_civil = 78;
if ($cliente->edo_civil == "C") $edo_civil = 90;
$pdf::SetXY($edo_civil, 83);
$pdf::Cell(130, 4, "X", 0, 0);
$pdf::SetXY(20, 95);
$pdf::Cell(130, 4, mb_convert_encoding($cliente->calle, 'ISO-8859-1', 'UTF-8'). " ". $cliente->numero, 0, 0);
$pdf::SetXY(20, 105);
$pdf::Cell(130, 4, mb_convert_encoding($cliente->colonia, 'ISO-8859-1', 'UTF-8'), 0, 0);
$pdf::SetXY(105, 105);
$pdf::Cell(130, 4, $cliente->delegacion, 0, 0);
$pdf::SetXY(20, 117);
$pdf::Cell(130, 4, $cliente->cp, 0, 0);
$pdf::SetXY(44, 117);
$pdf::Cell(130, 4, mb_convert_encoding(Estado::find($cliente->estado_id)->estado, 'ISO-8859-1', 'UTF-8'), 0, 0);
$pdf::SetXY(95, 117);
$pdf::Cell(130, 4, $cliente->lada, 0, 0);
$pdf::SetXY(110, 117);
$pdf::Cell(130, 4, $cliente->tel, 0, 0);
$pdf::SetXY(20, 128);
$pdf::Cell(130, 4, $cliente->email, 0, 0);
$pdf::SetXY(125, 128);
$pdf::Cell(130, 4, $cliente->whatsapp, 0, 0);
$patrocinador = Cliente::find($cliente->patrocinador);
$pdf::SetXY(167, 142);
$pdf::Cell(130, 4, $patrocinador->registro, 0, 0);
$pdf::SetXY(20, 152);
$pdf::Cell(130, 4, mb_convert_encoding($patrocinador->ape_p ." , " . $patrocinador->ape_m . ", " . $patrocinador->nombre, 'ISO-8859-1', 'UTF-8'), 0, 0);
$pdf::SetXY(58, 253);
$pdf::Cell(130, 4, date('d', strtotime($cliente->created_at)), 0, 0);
$pdf::SetXY(69, 253);
$pdf::Cell(130, 4, date('m', strtotime($cliente->created_at)), 0, 0);
$pdf::SetXY(82, 253);
$pdf::Cell(130, 4, date('Y', strtotime($cliente->created_at)), 0, 0);
if ($cliente->contract_url) {
$contract_url = str_replace('"', '', $cliente->contract_url);
$image_url = __DIR__ . '/../../../public/img/signature.jpeg';
$ifp = fopen($image_url, 'wb' );
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $contract_url );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
// clean up the file resource
fclose( $ifp );
$pdf::Image($image_url, 150, 246, 20, 'JPEG');
}
$pdf::AddPage('P', 'Legal');
$pdf::Image(__DIR__ . '/../../../public/img/reporte/contract2.jpg', 0, 0, 216, 'JPEG');
$pdf::Output('I', 'Contract.pdf');
}
}