Professional Documents
Culture Documents
Clientes Controller
Clientes Controller
php
namespace App\Http\Controllers;
use App\Models\AnteProyecto;
use App\Models\Area;
use App\Models\AvisoLlamada;
use App\Models\BarriosCerrados;
use App\Models\ChecklistPostVenta;
use App\Models\ClientAreas;
use App\Models\ClientsActivitiesTypes;
use App\Models\ComentarioAnteproyecto;
use App\Models\ComentarioPlano;
use App\Models\ComentarioPlanoPostVenta;
use App\Models\ComentarioVeriArquitectura;
use App\Models\Competencia;
use App\Models\ComentarioPeticiones;
use App\Models\DeclaracionJurada;
use App\Models\HistorialAnteproyecto;
use App\Models\HistorialPeticiones;
use App\Models\HistorialPlano;
use App\Models\HistorialPlanoPostVenta;
use App\Models\HistorialVeriArquitectura;
use App\Models\MarcasVehiculos;
use App\Models\ModelosVehiculos;
use App\Models\NotiCita;
use App\Models\NotiWA;
use App\Models\ObservacionEntrega;
use App\Models\Operacion;
use App\Models\Plano;
use App\Models\PlanoPostVenta;
use App\Models\RecibosEuroCasa;
use App\Models\RecibosLaEsperanza;
use App\Models\RecibosWhiteHouse;
use App\Models\ComentarioRenders;
use App\Models\HistorialRenders;
use App\Models\NotiRenders;
use App\Models\Renders;
use App\Models\SolicitudLlamada;
use App\Models\SolicitudLlamadaHabilitado;
use App\Models\StatusStadistics;
use App\Models\Subarea;
use App\Models\UserAreas;
use App\Models\Validacion;
use App\Models\VerificacionArquitectura;
use App\Models\VerificacionArquitecturaHabilitado;
use App\Models\Vivienda;
use App\Models\Peticiones;
use Auth;
use Gate;
use GuzzleHttp\Client;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\URL;
use Validator;
use Excel;
use App\Exports\ClientesExport;
use App\Models\Activity;
use App\Models\ClientsActivities;
use App\Models\FormaPago;
use App\Models\Paises;
use App\Models\Planes;
use App\Models\Proyecto;
use App\Models\ProyectoStatus;
use App\Models\Razon;
use App\Models\Reuniones;
use App\Models\Tareas;
use App\Models\UserTypes;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Log;
use App\Models\Cliente;
use App\Models\User;
use App\Models\ClienteStatus;
use App\Models\Empresa;
use App\Models\UserGroup;
use App\Models\Group;
use App\Models\Producto;
use App\Models\Provincia;
use App\Models\Origen;
use App\Models\Consultas;
use App\Models\Campaign;
use App\Models\Financiacion;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use App\Models\ClientCampaign;
use Yajra\Datatables\Datatables;
use App\Jobs\ReasignClients;
use App\Models\HistorialWhatsapp;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Box\Spout\Writer\WriterFactory;
use Box\Spout\Common\Type;
use App\Utils\Utils;
use Illuminate\Support\Facades\Auth as FacadesAuth;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function __construct() {
$this->middleware('auth');
}
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedores = $vendedores->sortBy('secondary_group');
$user = Auth::user();
if ($user->tipo == Config::get('constant.user_types.recepcion')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.updated_at',
'clientes.nombre_apellido',
'clientes.telefono',
'cliente_status.status',
'origens.nombre as canal',
'provincias.nombre_provincia as provincia',
'clientes.created_at'])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('provincias', 'clientes.provincia', '=',
'provincias.id')
->where('clientes.id_usuario', $user->id)
->whereIn('cliente_status.id', [5, 6, 12]);
return Datatables::of($clientes)->make(true);
}
}
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
$user = Auth::user();
if ($user->tipo == Config::get('constant.user_types.recepcion')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'clientes.updated_at'])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->whereIn('clientes.status', [10])
->whereIn('users.tipo', [4, 5]);
return Datatables::of($clientes)->make(true);
}
}
if (Auth::user()->tipo == Config::get('constant.user_types.recepcion')) {
extract($this->reasign_modal_vars());
return view('pages.clientes.supervisor.plazo_callcenter',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups'));
}else{
return view('errors.accesodenegado');
}
}
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedores_LEC = $this->getTodosVendedoresyCantidadAtendidosLEC();
$primary_groups = Group::all()->where('primary', true);
$secondary_groups = Group::all()->where('primary', false);
foreach ($vendedores as $vendedor) {
$vendedor->groups = UserGroup::where('user_id', $vendedor->id)-
>groupBy('group_id')->lists('group_id')->toArray();
$sec_groups = UserGroup::join('groups', 'user_groups.group_id', '=',
'groups.id')->where('user_id', $vendedor->id)
->where('groups.primary', false)->get();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
$vendedores_LEC = $vendedores_LEC->sortBy('secondary_group');
$user = Auth::user();
if ($user->tipo == Config::get('constant.user_types.recepcion')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'r.razon as razon',
'clientes.updated_at',
'chu.updated_at as modificado_cliente'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->join('razones as r', 'clientes.id_razon', '=', 'r.id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->whereIn('clientes.status', [13]);
return Datatables::of($clientes)->make(true);
}
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'r.razon as razon',
'clientes.updated_at',
'chu.updated_at as modificado_cliente'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->join('razones as r', 'clientes.id_razon', '=', 'r.id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->whereIn('clientes.status', [13])
->whereIn('users.tipo', [4, 5]);
return Datatables::of($clientes)->make(true);
}
}
$user = Auth::user();
$groups_logged = UserGroup::select('group_id')->where('user_id',$user->id)-
>get();
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'r.razon as razon',
'clientes.updated_at',
're.fecha as freunion',
're.visitado as reunionvisitado',
'chu.updated_at as modificado_cliente'
])
return Datatables::of($clientes)->make(true);
}
}
$user = Auth::user();
$groups_logged = UserGroup::select('group_id')->where('user_id',$user->id)-
>get();
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.fecha_tentativa',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'origens.nombre as canal',
'e.nombre_empresa as empresa',
'r.razon as razon',
'clientes.updated_at',
'chu.updated_at as modificado_cliente'
])
//Filtros
if(!empty($request->fecha_tentativa)) $clientes-
>whereBetween('clientes.fecha_tentativa', [Utils::startdate($request-
>fecha_tentativa), Utils::enddate($request->fecha_tentativa)]);
if(!empty($request->id_empresa))$clientes->whereIn("e.id",$request-
>id_empresa);
if(!empty($request->id_razones)) $clientes->whereIn("r.id",$request-
>id_razones);
if(!empty($request->query_date)) $clientes-
>whereBetween('clientes.query_date', [Utils::startdate($request->query_date),
Utils::enddate($request->query_date)]);
if(!empty($request->updated_at)) $clientes-
>whereBetween('clientes.updated_at', [Utils::startdate($request->updated_at),
Utils::enddate($request->updated_at)]);
return Datatables::of($clientes)->make(true);
}
}
$groups_logged = UserGroup::select('group_id')->where('user_id',$user->id)-
>get();
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.fecha_tentativa',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'origens.nombre as canal',
'e.nombre_empresa as empresa',
'r.razon as razon',
'clientes.updated_at',
'chu.updated_at as modificado_cliente'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->join('razones as r', 'clientes.id_razon', '=', 'r.id')
->join('user_groups as ug', 'users.id', '=', 'ug.user_id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->whereIn('ug.group_id',$groups_logged )
->whereIn('clientes.status', [13])
->whereIn('users.tipo', [3])
->whereNull('users.deleted_at')
->groupBy('clientes.id');
//Filtros
if(!empty($request->fecha_tentativa)) $clientes-
>whereBetween('clientes.fecha_tentativa', [Utils::startdate($request-
>fecha_tentativa), Utils::enddate($request->fecha_tentativa)]);
if(!empty($request->id_empresa))$clientes->whereIn("e.id",$request-
>id_empresa);
if(!empty($request->id_razones)) $clientes->whereIn("r.id",$request-
>id_razones);
if(!empty($request->query_date)) $clientes-
>whereBetween('clientes.query_date', [Utils::startdate($request->query_date),
Utils::enddate($request->query_date)]);
if(!empty($request->updated_at)) $clientes-
>whereBetween('clientes.updated_at', [Utils::startdate($request->updated_at),
Utils::enddate($request->updated_at)]);
return Datatables::of($clientes)->make(true);
}
}
extract($this->reasign_modal_vars());
return view('pages.clientes.recepcion.comprador', compact('vendedores',
'empresas', 'primary_groups', 'secondary_groups'));
}
extract($this->reasign_modal_vars());
return view('pages.clientes.supervisor.compradorcallcenter',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups'));
}
}
$user = Auth::user();
if ($user->tipo == Config::get('constant.user_types.recepcion')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'clientes.updated_at'])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->whereIn('clientes.status', [1, 2]);
return Datatables::of($clientes)->make(true);
}
}
$groups_logged = UserGroup::select('group_id')->where('user_id',$user->id)-
>get();
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'users.name as asesor',
'e.nombre_empresa as empresa',
'clientes.updated_at',
'chu.updated_at as modificado_cliente'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->join('user_groups as ug', 'users.id', '=', 'ug.user_id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->whereIn('ug.group_id',$groups_logged )
->whereIn('clientes.status', [1, 2])
->whereIn('users.tipo', [3])
->whereNull('users.deleted_at')
->groupBy('clientes.id');
return Datatables::of($clientes)->make(true);
}
}
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
$clientes = Cliente::select([
'clientes.query_date',
'clientes.id',
'clientes.nombre_apellido',
'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status',
'origens.nombre as canal',
'ut.tipo as tipo',
'e.nombre_empresa as empresa',
'clientes.updated_at',
'r.fecha as freunion',
'r.visitado as reunionvisitado',
'chu.updated_at as modificado_cliente'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_types as ut', 'users.tipo', '=', 'ut.id')
->join('empresas as e', 'clientes.id_empresa', '=', 'e.id')
->join('user_groups as ug', 'users.id', '=', 'ug.user_id')
->leftjoin('reuniones as r','r.id_cliente','=','clientes.id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->whereIn('clientes.status', [2])
->whereIn('ug.group_id',$groups_logged )
->whereIn('users.tipo', [5])
->whereNull('users.deleted_at')
->groupBy('clientes.id');
return Datatables::of($clientes)->make(true);
}
}
$usuario = User::select('tipo')->where('id',$vendedor)->pluck('tipo');
if($usuario == Config::get('constant.user_types.asesor_comercial') ||
$usuario == Config::get('constant.user_types.call_center')){
Consultas::where('id_cliente',$cliente->id)->update(['leido' => 0]);
}
$notiWAOld = NotiWA::where('id_usuario',$cliente->id_usuario)->first();
$bandeNoti = false;
if(!empty($notiWAOld->ids)){
$notiWAOld->ids = json_decode($notiWAOld->ids);
$arrayWAOld = $notiWAOld->ids->ids;
foreach($arrayWAOld as $key => $noti){
$jnoti = json_decode($noti);
if($jnoti->id == $cliente->id){
unset($arrayWAOld[$key]);
$bandeNoti = true;
}
}
if($bandeNoti){
$notiWAOld->cant--;
$notiWAOld->ids->ids = array_values($arrayWAOld);
$notiWAOld->ids = json_encode($notiWAOld->ids);
$notiWAOld->save();
$notiWA = NotiWA::where('id_usuario',$vendedor)->first();
if(!empty($notiWA->ids)){
$notiWA->ids = json_decode($notiWA->ids);
$esta = false;
foreach($notiWA->ids->ids as $key => $client){
$jclient = json_decode($client);
if($jclient->id == $cliente->id){
$esta = true;
}
}
if(!$esta){
$data_client = [
"name" => $cliente->nombre_apellido,
"id" => $cliente->id
];
array_push($notiWA->ids->ids,json_encode($data_client));
$notiWA->cant++;
$notiWA->ids = json_encode($notiWA->ids);
} else {
$notiWA->ids = json_encode($notiWA->ids);
}
} else {
$notiWA->cant++;
$data_client = [
"name" => $cliente->nombre_apellido,
"id" => $cliente->id
];
$data_final = [
"ids" => [json_encode($data_client)]
];
$notiWA->ids = json_encode($data_final);
}
$notiWA->save();
}
}
$cliente->id_usuario = $vendedor;
$cliente->fecha_asignacion = Carbon::now();
$cliente->status = Config::get('constant.cliente_status.nuevo');
}elseif($cliente->status == Config::get('constant.cliente_status.a_plazo')
|| $cliente->status == Config::get('constant.cliente_status.no_interesado') ||
$cliente->status == Config::get('constant.cliente_status.reasignando')){
$cliente->status = Config::get('constant.cliente_status.nuevo');
$consultas = Consultas::ConsultasDelCliente($cliente->id)-
>with(['user'])->get();
foreach($consultas as $consulta){
if($consultas->last() != $consulta){
$consulta->delete();
}
}
}
$estadistica->save();
}
if ($cliente->save()) {
if(Auth::user()){
if(!empty($request) && !empty($request->all())){
if($request->vendedor == 0){
ClientsActivities::register(env('USER_API_ID'), $cliente-
>id, ClientsActivities::ASIGNADO_POR, 'Asignado Por ');
} else {
ClientsActivities::register(Auth::user()->id, $cliente->id,
ClientsActivities::ASIGNADO_POR, 'Asignado Por ');
}
} else {
ClientsActivities::register(Auth::user()->id, $cliente->id,
ClientsActivities::ASIGNADO_POR, 'Asignado Por ');
}
ClientsActivities::register($vendedor, $cliente->id,
ClientsActivities::ASIGNADO_A, 'Asignado A ');
if(!empty($request)){
if($request->boolean){
ClientsActivities::register(env('USER_API_ID'),$cliente-
>id,ClientsActivities::CITA_WEB, 'Agendada por el Cliente');
}
}
}
else{
ClientsActivities::register(env('USER_API_ID'), $cliente->id,
ClientsActivities::ASIGNADO_POR, 'Asignado Por ');
ClientsActivities::register($vendedor, $cliente->id,
ClientsActivities::ASIGNADO_A, 'Asignado A ');
if(!empty($request)){
if($request->boolean){
ClientsActivities::register(env('USER_API_ID'),$cliente-
>id,ClientsActivities::CITA_WEB, 'Agendada por el Cliente');
}
}
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
$user = Auth::user();
$cliente_status = ClienteStatus::where('id',
Config::get('constant.cliente_status.nuevo'))->lists('status', 'id');
foreach ($cliente_status as $status_id => $nombre) {
if ($nombre == 'Nuevo') {
$status_default = $status_id;
}
}
$vendedores = $this-
>getTodosVendedoresyCantidadAtendidosConRecepcion();
$empresas_vendedores = Empresa::select('nombre_empresa')->whereIn('id',
[Auth::user()->empresa])->get();
$vendedores = $vendedores->sortBy('totalClientes');
$fecha_consulta = Carbon::now();
return view('pages.clientes.recepcion.agregar',
compact('paises','vendedores', 'primary_groups', 'secondary_groups', 'provincias',
'productos', 'origens', 'logo', 'forma_pagos', 'cliente_status', 'razon',
'producto_default', 'provincia_default', 'pago_default', 'status_default',
'origen_default', 'campaigns', 'campaign_default', 'empresas','fecha_consulta'));
}
else{
return view('errors.accesodenegado');
}
/**
* Guardar Cliente.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
$user_log = Auth::user();
if(!empty($request->agregacita)){
$request['boolean'] = true;
$request->cuando_cita = $request->cuando_cita.':00';
$request['fecha'] = Carbon::parse(str_replace('/','-',$request-
>cuando_cita));
}
$cliente->id_tipo = 1;
$return_json = false;
$validator = Validator::make($request->all(), [
'telefono' => 'digits_between:8,13',
]);
if ($validator->fails()) {
$request->session()->flash('alert-danger', "El teléfono no contiene mas
de 8 dígitos");
if($return_json){
$messages = $validator->errors();
return response()->json([
'success' => false,
'message' => 'El teléfono ingresado no cumple con la
validación.'.$messages->first('telefono')
], 200);
}else return redirect()->back()->withInput();
// Validación de la empresa
if (empty($cliente->id_empresa)) {
$request->session()->flash('alert-danger', 'Hubo un problema al guardar
la solicitud: La empresa esta vacía');
if($return_json){
return response()->json([
'success' => false,
'message' => 'La empresa no puede estar vacía'
], 200);
}else return redirect()->back()->withInput();
}
if ($request->vendedor == 0) {
if($request->boolean){
//Si viene con cita se asigna a Ventas
//Creo la reunión
$reunion = new Reuniones();
$reunion->id_cliente = $cliente->id;
$reunion->creado_por = env('USER_API_ID');
$reunion->modificado_por = env('USER_API_ID');
$reunion->visitado = 0;
$reunion->donde = $request->donde;
$reunion->fecha = $request->fecha;
$reunion->created_at = Carbon::now();
$reunion->updated_at = Carbon::now();
$reunion->save();
$next_user = User::asignacionCita($cliente,$reunion);
//Determino si el request viene del sitio de expo casa o no. Caso
contrario determino la empresa
if($request->utm_url == 'http://euro-casa-slim-slim.test/expo-casa-
2020' || $request->utm_url == 'https://eurocasa.com.ar/expo-casa-2020'){
Log::info('Cliente nuevo Inscripto a ExpoCasa 2020');
//Aca va el mail de cita para ExpoCasa
if(MailController::sendExpoCitaEmail($cliente, $reunion)){
Log::info('Se envía mail de expocasa');
}else{
Log::info('No se pudo enviar el mail de expocasa');
}
} else {
//Log::info('Cliente nuevo con CITA WEB');
//Aca va el mail de bienvenida a usuario nuevo con cita
if(MailController::sendBienvenidaCitaEmail($cliente, $reunion))
{
Log::info('Se envía mail de cita al nuevo cliente');
}else{
Log::info('No se pudo enviar el mail de cita al nuevo
cliente');
}
}
} elseif(isset($request->bs_as_direct)) {
//Asignar directamente a vendedores de Bs As
$next_user = User::asignacionDirectaBsAs($cliente);
} else {
$next_user = User::asignacionUniversal($cliente);
}
Log::info('Usuario asignado a ' . $next_user->name . ' (id Cliente: '.
$cliente->id.')');
ClientsActivities::register($user_log->id, $cliente->id,
ClientsActivities::CREADO, 'Cliente Creado');
} else {
if($request->boolean){
//Si viene con cita se Asigna a Ventas
//Creo la reunión
$reunion = new Reuniones();
$reunion->id_cliente = $cliente->id;
$reunion->creado_por = env('USER_API_ID');
$reunion->modificado_por = env('USER_API_ID');
$reunion->visitado = 0;
$reunion->donde = $request->donde;
$reunion->fecha = $request->fecha;
$reunion->created_at = Carbon::now();
$reunion->updated_at = Carbon::now();
$reunion->save();
$next_user = User::asignacionCita($cliente,$reunion);
//Determino si el request viene del sitio de expo casa o no. Caso
contrario determino la empresa
if($request->utm_url == 'http://euro-casa-slim-slim.test/expo-casa-
2020' || $request->utm_url == 'https://eurocasa.com.ar/expo-casa-2020'){
Log::info('Cliente nuevo Inscripto a ExpoCasa 2020');
//Aca va el mail de cita para ExpoCasa
if(MailController::sendExpoCitaEmail($cliente, $reunion)){
Log::info('Se envía mail de expocasa');
}else{
Log::info('No se pudo enviar el mail de expocasa');
}
} else {
//Log::info('Cliente nuevo con CITA WEB');
//Aca va el mail de bienvenida a usuario nuevo con cita
if(MailController::sendBienvenidaCitaEmail($cliente, $reunion))
{
Log::info('Se envía mail de cita al nuevo cliente');
}else{
Log::info('No se pudo enviar el mail de cita al nuevo
cliente');
}
}
$request->vendedor = $next_user->id;
}
$reasing = $this->reasign($cliente->id, $request->vendedor);
/* Creamos la Actividad */
$actividad = $this->create_activity($cliente->id, $user_log->id,
$request->vendedor);
ClientsActivities::register($user_log->id, $cliente->id,
ClientsActivities::CREADO, 'Cliente Creado');
}
/* Guardamos la financiacion */
$financiacion = new Financiacion($request->all());
if ($request->localidad == "0") {
$financiacion->localidad_proyecto = "No informado";
}
$financiacion->provincia = $request->provincia_proyecto;
$financiacion->posee_terreno = $request->has('posee_terreno');
$financiacion->posee_vehiculos = $request->has('posee_vehiculos');
$financiacion->posee_propiedades = $request->has('posee_propiedades');
$financiacion->localidad_proyecto = $request->localidad_proyecto;
$financiacion->barrio_cerrado = $request->barrio_cerrado?$request-
>barrio_cerrado:'';
$financiacion->barrio_cerrado_name = $request->barrio_cerrado_name;
$financiacion->m_cuadrados = $request->m_cuadrados?$request-
>m_cuadrados:'';
$financiacion->id_cliente = $cliente->id;
$financiacion->save();
/* Guardamos Consulta */
$consulta->id_cliente = $cliente->id;
$consulta->id_producto = $request->id_producto;
$consulta->id_origen = $request->id_lugar;
$consulta->comentario = $cliente->comentario;
$consulta->id_usuario = $user_log->id;
$consulta->id_status = $cliente->status;
$consulta->id_razon = $request->id_razon;
$consulta->leido = 0;
$consulta->save();
if ($request->recordatorio == 1) {
$recordatorio = new Tareas();
$recordatorio->nombre = $request->titulo;
$recordatorio->leido = false;
$recordatorio->id_usuario = $user_log->id;
$recordatorio->id_cliente = $cliente->id;
$recordatorio->id_consulta = $consulta->id;
$recordatorio->save();
}
if ($user_log->tipo == 3 || $user_log->tipo == 4) {
if($return_json){
return response()->json([
'success' => true,
'message' => 'Cliente agregado correctamente!',
'cliente_id' => $cliente->id
], 200);
}else return redirect()->route('clientes.todos');
} elseif ($user_log->tipo == 5) {
if ($return_json) {
return response()->json([
'success' => true,
'message' => 'Cliente agregado correctamente!',
'cliente_id' => $cliente->id
], 200);
} else return redirect()->route('clientes.asignados');
} elseif ($user_log->tipo == 8 || $user_log->tipo == 6 || $user_log->tipo
== 10 || $user_log->tipo == 1) {
if ($return_json) {
return response()->json([
'success' => true,
'message' => 'Cliente agregado correctamente!',
'cliente_id' => $cliente->id
], 200);
} else return redirect()->route('home');
} elseif ($user_log->tipo == 2) {
if($return_json){
return response()->json([
'success' => true,
'message' => 'Cliente agregado correctamente!',
'cliente_id' => $cliente->id
], 200);
} else return redirect()->route('clientes.create');
//Si el usuario es del tipo api retornamos json para control de errores
} else {
return response()->json([
'success' => true,
'message' => 'Cliente agregado correctamente!'
], 200);
}
}
public function nuevo_cliente_referido(Request $request){
$user = Auth::user();
//TELEFONO
$telefono_parsed = preg_replace('/\D/', '',$request->telefono);
$tel_valid = strlen ($telefono_parsed) < 20;
$request->telefono = $telefono_parsed;
$tel_explode = Utils::tel_argentino($telefono_parsed);
$request->merge(['telefono' => $tel_explode['numero'] ]);
$request->merge(['vendedor' => $user->id ]);
$data = $request->all();
$response = $this->validateData($data);
if ($response != 'valido') {
return response()->json([
'success' => false,
'message' => 'Hubo un problema, ' . $response
], 422);
}
if ($c->id_empresa == $request->id_empresa) {
if($c->status ==
Config::get('constant.cliente_status.a_plazo')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO
A PLAZO (encontrado por telefono alternativo)");
} elseif($c->status ==
Config::get('constant.cliente_status.no_interesado')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO
NO INTERESADO (encontrado por telefono alternativo)");
$reasing = $this->reassignReferido($c->id,
$user->id);
$nuevaconsulta= $this-
>new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia ,
se ha creado un nuevo comentario',
'cliente_id' => $c->id
], 200);
}
else {
Log::info('INTENTO FALLIDO DE CREAR
REFERIDO POR '.strtoupper($user->name).', CLIENTE YA EXISTE POR TELEFONO
ALTERNATIVO ('.$c->id.')');
$c->save();
return response()->json([
'success' => false,
'message' => 'El cliente ya existia!',
'cliente_id' => $c->id
], 200);
}
}
} else {
return response()->json([
'success' => false,
'message' => 'Teléfono inválido'
], 400);
}
}
$response_newclient = $this->newClient($request);
if ($response_newclient->success) {
return response()->json([
'success' => true,
'message' => 'El cliente se ha cargado con exito',
'cliente_id' => $response_newclient->cliente_id
], 200);
} else {
return response()->json([
'success' => false,
'message' => $response_newclient->message
], 400);
}
} else {
foreach ($clientes as $c) {
if ($c->id_empresa == $request->id_empresa) {
if ($tel_valid) {
if(($c->email == '' && $request->email != '') ||
$c->email != $request->email){
$c->email = $request->email;
}
if(!empty($request->nombre_apellido)){
$c->nombre_apellido = $request-
>nombre_apellido;
}
if(!empty($request->edad)){
$c->edad = $request->edad;
}
if(!empty($request->telefono) && !empty($c-
>telefono) && $c->telefono != $request->telefono){
$c->telefono = $request->telefono;
} elseif(!empty($request->telefono_alt) &&
empty($c->telefono_alt)){
$c->telefono_alt = $request->telefono_alt;
}
if(!empty($request->from)){
$c->contact_from = $request->from;
}
if(!empty($request->to)){
$c->contact_to = $request->to;
}
if(!empty($request->campana)){
$campaign = Campaign::where('name',$request-
>campana)->pluck('id');
$c_campaign =
ClientCampaign::where('client_id',$c->id)->first();
if($c_campaign){
$c_campaign->campaign_id = $campaign;
$c_campaign->save();
} else {
$c_campaign = new ClientCampaign();
$c_campaign->client_id = $c->id;
if($campaign){
$c_campaign->campaign_id = $campaign;
}
$c_campaign->created_at = Carbon::now();
$c_campaign->updated_at = Carbon::now();
if(!empty($request->url)){
$c_campaign->url = $request->url;
}
$c_campaign->save();
}
}
if($c->status ==
Config::get('constant.cliente_status.a_plazo')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO A
PLAZO (encontrado por mail)");
$reasing = $this->reassignReferido($c->id,
$user->id,$request);
$nuevaconsulta= $this-
>new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha
creado un nuevo comentario',
'cliente_id' => $c->id
], 200);
} elseif($c->status ==
Config::get('constant.cliente_status.no_interesado')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO NO
INTERESADO (encontrado por mail)");
$reasing = $this->reassignReferido($c->id,
$user->id);
$nuevaconsulta= $this-
>new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha
creado un nuevo comentario',
'cliente_id' => $c->id
], 200);
} else {
Log::info('INTENTO FALLIDO DE CREAR REFERIDO
POR '.strtoupper($user->name).', CLIENTE YA EXISTE POR EMAIL ('.$c->id.')');
}
$c->save();
return response()->json([
'success' => false,
'message' => 'El cliente ya existia!',
'cliente_id' => $c->id
], 200);
}
}
$response_newclient = $this->newClient($request);
if ($response_newclient->success) {
return response()->json([
'success' => true,
'message' => 'El cliente se ha cargado con exito',
'cliente_id' => $response_newclient->cliente_id
], 200);
} else {
return response()->json([
'success' => false,
'message' => $response_newclient->message
], 400);
}
}
} else {
if($request->telefono_alt){
if(!$tel_alt_valid || ($clientes =
Cliente::existbyphone($request->telefono_alt)) == false){
$response_newclient = $this->newClient($request);
if ($response_newclient->success) {
return response()->json([
'success' => true,
'message' => 'El cliente se ha cargado con exito',
'cliente_id' => $response_newclient->cliente_id
], 200);
} else {
return response()->json([
'success' => false,
'message' => $response_newclient->message
], 400);
}
} else {
//Buscamos si algunos de los clientes que existen estan en
la misma empresa
foreach ($clientes as $c) {
if ($c->id_empresa == $request->id_empresa) {
if ($c->status ==
Config::get('constant.cliente_status.a_plazo')) {
Log::info("CLIENTE REFERIDO YA EXISTIA COMO A
PLAZO (encontrado por telefono alternativo)");
Log::info('Cliente autoasignado a ' . $user-
>name . ' (id ' . $user->id . ')');
$reasing = $this->reassignReferido($c->id,
$user->id);
$nuevaconsulta = $this-
>new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha
creado un nuevo comentario',
'cliente_id' => $c->id
], 200);
} elseif ($c->status ==
Config::get('constant.cliente_status.no_interesado')) {
Log::info("CLIENTE REFERIDO YA EXISTIA COMO NO
INTERESADO (encontrado por telefono alternativo)");
$reasing = $this->reassignReferido($c->id,
$user->id);
$nuevaconsulta = $this-
>new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha
creado un nuevo comentario',
'cliente_id' => $c->id
], 200);
} else {
Log::info('INTENTO FALLIDO DE CREAR REFERIDO
POR ' . strtoupper($user->name) . ', CLIENTE YA EXISTE POR TELEFONO ALTERNATIVO
(' . $c->id . ')');
$c->save();
return response()->json([
'success' => false,
'message' => 'El cliente ya existia!',
'cliente_id' => $c->id
], 200);
}
}
}
} else {
$response_newclient = $this->newClient($request);
if ($response_newclient->success) {
return response()->json([
'success' => true,
'message' => 'El cliente se ha cargado con exito',
'cliente_id' => $response_newclient->cliente_id
], 200);
} else {
return response()->json([
'success' => false,
'message' => $response_newclient->message
], 400);
}
}
}
//si existe por telefono y es valido
} else if ($tel_valid) {
//Buscamos si algunos de los clientes que existen estan en la misma
empresa
foreach ($clientes as $c) {
if ($c->id_empresa == $request->id_empresa) {
if($c->status ==
Config::get('constant.cliente_status.a_plazo')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO A PLAZO
(encontrado por telefono)");
$this->new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha creado un
nuevo comentario',
'cliente_id' => $c->id
], 200);
} elseif($c->status ==
Config::get('constant.cliente_status.no_interesado')){
Log::info("CLIENTE REFERIDO YA EXISTIA COMO NO INTERESADO
(encontrado por telefono)");
$this->new_consulta_referido($request, $c);
return response()->json([
'success' => true,
'message' => 'El cliente ya existia , se ha creado un
nuevo comentario',
'cliente_id' => $c->id
], 200);
}
else {
Log::info('INTENTO FALLIDO DE CREAR REFERIDO POR
'.strtoupper($user->name).', CLIENTE YA EXISTE POR TELEFONO ('.$c->id.')');
}
$c->save();
return response()->json([
'success' => false,
'message' => 'El cliente ya existia!',
'cliente_id' => $c->id
], 200);
}
}
$response_newclient = $this->newClient($request);
if ($response_newclient->success) {
return response()->json([
'success' => true,
'message' => 'El cliente se ha cargado con exito',
'cliente_id' => $response_newclient->cliente_id
], 200);
} else {
return response()->json([
'success' => false,
'message' => $response_newclient->message
], 400);
}
}
}
if(!is_null($producto)){
$cliente->id_usuario = $vendedor;
$cliente->fecha_asignacion = Carbon::now();
$cliente->status = Config::get('constant.cliente_status.nuevo');
$tareas = Tareas::where('id_cliente', '=', $client_id)->get();
if ($cliente->save()) {
ClientsActivities::register($vendedor, $cliente->id,
ClientsActivities::ASIGNADO_POR, 'Referido Asignado Por ');
ClientsActivities::register($vendedor, $cliente->id,
ClientsActivities::ASIGNADO_A, 'Asignado A ');
return "ok";
} else {
return "errors";
}
}
$tel_explode = Utils::tel_argentino($request->telefono);
$tel_valid = true;
if($tel_explode == false){
$tel_valid = false;
if(empty($request->telefono)){
$request->telefono = '';
}
} else {
$provincia = Utils::codigos_area_argentina($tel_explode['area']);
}
$new_client = [
'nombre_apellido'=> preg_replace('/[^A-Za-z áÁéÉíÍóÓúüÚÜñÑ]/', '',
$request->nombre_apellido),
'edad' => $request->edad? (int)$request->edad : 0,
'telefono'=> $tel_valid ? $tel_explode['numero'] : $request->telefono,
'telefono_alt' => $request->telefono_alt? $request->telefono_alt : 0,
'contact_from'=> $request->from?$request->from:'00:00:00',
'contact_to'=> $request->to?$request->to:'00:00:00',
'provincia' => $provincia ? $provincia : 28,
'provincia_proyecto' => $request->provincia_proyecto? $request-
>provincia_proyecto : 28,
'localidad' => 'Consultar',
'localidad_proyecto' => $request->localidad_proyecto? $request-
>localidad_proyecto : 'Consultar',
//'email' => $request->email, ya esta en el request
'posee_terreno' => $request->posee_terreno?$request->posee_terreno:'',
'barrio_cerrado' => $request->barrio_cerrado?$request-
>barrio_cerrado:'',
'barrio_cerrado_name' => $request->barrio_cerrado_name?$request-
>barrio_cerrado_name:'',
'comentario' => $request->comentario ? $request->comentario : 'Cliente
Referido.',
'id_empresa' => $request->id_empresa,
'id_producto' => $producto ? $producto->id : 160,
'id_lugar' => $request->medio ? $request->medio : 3,
'status' => $request->boolean?23:5, //Si es cita web lo pongo a
confirmar, sino lo pongo nuevo
'id_razon' => 4, //sin especificar
'forma_de_pago' => 3,
'query_date' => Carbon::now(),
'campana' => !empty($campana) ? $campana->id : 1,
'utm_url' => $request->utm_url?$request->utm_url:'',
'utm_source' => $request->utm_source?$request->utm_source:'',
'utm_medium' => $request->utm_medium?$request->utm_medium:'',
'utm_campaign_name' => $request->utm_campaign?$request-
>utm_campaign:'',
'utm_ad_group' => $request->utm_term?$request->utm_term:'',
'utm_ad_name' => $request->utm_content?$request->utm_content:'',
'utm_network' => $request->utm_network?$request->utm_network:'',
'utm_keyword' => $request->utm_keyword?$request->utm_keyword:'',
'utm_matchtype' => $request->utm_matchtype?$request->utm_matchtype:'',
'utm_device'=> $request->utm_device?$request->utm_device:'',
'm_cuadrados' => $request->m_cuadrados ? $request->m_cuadrados : 0,
'cant_habitaciones' => $request->cant_habitaciones ? $request-
>cant_habitaciones : 0,
'jsonresponse' => true,
];
$request->merge($new_client);
$response = app('App\Http\Controllers\ClientesController')-
>store($request);
if(!is_null($response))
return $response->getData();
else{
Log::info($response);
return $response;
}
}
$rules = [
'nombre_apellido' => 'required',
'telefono' => 'required_without:email',
'email' => 'required_without:telefono|email',
'campana' => 'string',
'id_empresa' => 'required|digits_between:1,2|
exists:empresas,id,deleted_at,NULL',
'medio' => 'between:1,2|exists:origens,id,deleted_at,NULL'
];
$messages = [
'required' => ':attribute es obligatorio',
'size' => ':attribute debe tener 10 digitos',
'exists' => ':attribute no existe',
'min' => ':attribute tiene que ser minimo de 8 caracteres.',
'email' => ':attribute debe ser un email valido',
'numeric' => ':attribute debe ser solo numeros.',
'between' => ':attribute debe contener entre :min - :max digitos',
'required_without' => ':attribute es obligatorio',
];
if ($validator->fails()) {
$messages = $validator->errors();
if ($messages->has('nombre_apellido')) {
return $messages->first('nombre_apellido');
}
if ($messages->has('telefono')) {
return $messages->first('telefono');
}
if ($messages->has('email')) {
return $messages->first('email');
}
if ($messages->has('campana')) {
return $messages->first('campana');
}
if ($messages->has('id_empresa')) {
return $messages->first('id_empresa');
}
if ($messages->has('medio')) {
return $messages->first('medio');
}
}
else{
return 'valido';
}
$path = explode('/',URL::previous());
$sizeArray= sizeof($path);
$urlConcatenada='';
for($i=3;$i<($sizeArray-1);$i++){
$urlConcatenada= $urlConcatenada.$path[$i].'/';
}
$user = $request->user();
$reunion = Reuniones::findOrFail($request->id);
$reunion->visitado = 2;
$reunion->modificado_por = $user->id;
if($reunion->save()){
$state = true;
$request->session()->flash('alert-success', 'Reunión Cancelada');
}else{
$state = false;
$request->session()->flash('alert-danger', 'No se pudo actualizar la
reunión');
}
if($state){
if($urlConcatenada == "clientes/mostrar/"){
return redirect()->back();
} else{
return response()->json(['status' => true]);
}
} else {
return redirect()->back();
}
}
return response()-
>json(['status'=>true,'vendedores'=>$users,'user_default'=>$user_default,
'client_id'=>$request['id']]);
} else {
dd('error');
}
}
$reunion->visitado = 0;
$reunion->modificado_por = $user->id;
if($reunion->save()){
return redirect()->back();
}*/
}*/
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
$cliente = Cliente::DatosDelCliente($id)->first();
if($cliente){
$user = Auth::user();
$user->presets = $user->presets;
if($user->presets->count()){
foreach($user->presets as $preset){
$preset->content = str_replace('${empresa}',$cliente-
>nombre_empresa,$preset->content);
$cliente_pila = explode(' ',$cliente->nombre_apellido);
$preset->content = str_replace('${client_name}',
$cliente_pila[0],$preset->content);
$preset->content = str_replace('${client_fullname}',$cliente-
>nombre_apellido,$preset->content);
}
}
$cliente->historial_whatsapp = HistorialWhatsapp::
select([
'historial_whatsapp.id',
'historial_whatsapp.flow',
'historial_whatsapp.type',
'historial_whatsapp.content',
'historial_whatsapp.created_at',
'users.name'
])
->where('historial_whatsapp.client_id',$cliente->id)
->leftJoin('users','users.id','=','historial_whatsapp.user_id')
->get();
switch($cliente->id_empresa){
case 1:
$cliente->logo_emp = 'logolaesperanza.png';
$cliente->svg = false;
break;
case 2:
$cliente->logo_emp = 'Logo_color_sin-slogan.svg';
$cliente->svg = true;
break;
case 8:
$cliente->logo_emp = 'logoeurocasa.png';
$cliente->svg = false;
break;
case 14:
$cliente->logo_emp = 'casaya.png';
$cliente->svg = false;
break;
case 15:
$cliente->logo_emp = 'logo-laeconomica.png';
$cliente->svg = false;
break;
default:
$cliente->logo_emp = '';
$cliente->svg = false;
break;
}
$planos = Plano::select([
'planos.id',
'planos.id_usuario',
'planos.membrete',
'planos.status',
'planos.substatus',
'un.name as userName',
'uv.name as userVentas',
'ua.name as userArqui',
'planos.id_arquitecto',
'planos.condi_modelo',
'plano_prod.nombre as modelo',
'planos.condicion',
'planos.construccion',
'planos.terraza_files_cant',
'planos.material_files_cant',
'planos.dimensiones',
'planos.linea',
'planos.localidad',
'provincias.nombre_provincia',
'planos.obse_gral',
'planos.frame',
'planos.plantas',
'planos.superficie',
'us.name as userSugerido',
'planos.created_at',
'planos.motivo_rescicion',
'planos.modify',
'planos.visto_solicitante'
])
->join('users as un','un.id','=','planos.id_usuario')
->leftJoin('users as uv','uv.id','=','planos.aprueba_ventas')
->leftJoin('users as ua','ua.id','=','planos.id_arquitecto')
->leftjoin('productos as
plano_prod','plano_prod.id','=','planos.modelo')
->join('provincias','provincias.id','=','planos.provincia')
->leftJoin('users as us','us.id','=','planos.id_user_sugerido')
->where('id_cliente',$cliente->id)->get();
if($planos->count()){
$cliente->planos = $planos;
foreach($cliente->planos as $plano){
//Verifico si corresponde quitar de las notificaciones de
calibotside
if($user->id == $plano->id_usuario && $plano->status ==
'Finalizado'){
$calibotsession = Session::get('calibotside.planos');
if(!empty($calibotsession)){
foreach($calibotsession as $key => $cali){
if($cali['id'] == $cliente->id && !$plano-
>visto_solicitante){
unset($calibotsession[$key]);
Session::forget('calibotside.planos');
Session::put('calibotside.planos',
$calibotsession);
$plano->visto_solicitante = true;
$plano->save();
}
}
}
}
$s3 = Storage::disk('s3');
$plano->dimensiones = json_decode($plano->dimensiones);
$plano->superficie = json_decode($plano->superficie);
$plano->modify = json_decode($plano->modify);
$commentsAndFiles = [];
if($plano->construccion == 'terraza'){
$directory = "clientes/$cliente->id/solicitudPlano/$plano-
>id/terraza/";
$archivos = $s3->files($directory);
$archivosTerraza = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
array_push($archivosTerraza, $array);
}
$plano->terrazaFiles = $archivosTerraza;
}
}
if($plano->material_files_cant){
$directory = "clientes/$cliente->id/solicitudPlano/$plano-
>id/complemento/";
$archivos = $s3->files($directory);
$archivosComplemento = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosComplemento, $array);
array_push($commentsAndFiles, $array);
}
usort($archivosComplemento, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$plano->materialComplementario = $archivosComplemento;
}
}
if($plano->status == 'Solicitud Finalizado' || $plano->status
== 'Finalizado'){
$directory = "clientes/$cliente->id/solicitudPlano/$plano-
>id/final/";
$archivos = $s3->files($directory);
$archivosTerminado = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosTerminado, $array);
array_push($commentsAndFiles, $array);
}
$plano->terminadoFiles = $archivosTerminado;
}
}
if(!empty($plano->modify)){
foreach($plano->modify as $modi){
$directory =
"clientes/$cliente->id/solicitudPlano/$plano->id/modificaciones/$modi->order/";
$archivos = $s3->files($directory);
$archivosModi = [];
if(!empty($archivos)){
foreach($archivos as $file){
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosModi, $array);
array_push($commentsAndFiles, $array);
}
usort($archivosModi, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$modi->files = $archivosModi;
}
}
}
$plano->historial = HistorialPlano::select([
'userHistory.name as historyName',
'historial_planos.detail',
'historial_planos.created_at'
])
->join('users as
userHistory','userHistory.id','=','historial_planos.id_usuario')
->where('id_plano',$plano->id)->get();
$plano->comentarios = ComentarioPlano::select([
'userComment.name as usuario',
'userComment.tipo as tipo',
'comentario_plano.comentario',
'comentario_plano.created_at'
])
->join('users as
userComment','userComment.id','=','comentario_plano.id_usuario')
->where('id_plano',$plano->id)->get()->toArray();
foreach($plano->comentarios as $comment){
array_push($commentsAndFiles, $comment);
}
}
usort($commentsAndFiles, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$plano->comentarios = $commentsAndFiles;
} else {
$cliente->planos = '';
}
$planosPostVentas = PlanoPostVenta::select([
'planos_post_ventas.id',
'planos_post_ventas.id_solicitante',
'planos_post_ventas.membrete',
'planos_post_ventas.status',
'us.name as userSolicitante',
'ua.name as userArqui',
'planos_post_ventas.id_solicitante',
'planos_post_ventas.id_arquitecto',
'planos_post_ventas.observaciones',
'planos_post_ventas.enumerations',
'planos_post_ventas.motivo_rescicion',
'planos_post_ventas.created_at',
'planos_post_ventas.visto_solicitante'
])
->join('users as
us','us.id','=','planos_post_ventas.id_solicitante')
->leftJoin('users as
ua','ua.id','=','planos_post_ventas.id_arquitecto')
->where('id_cliente',$cliente->id)->get();
if($planosPostVentas->count()){
$cliente->planosPostVentas = $planosPostVentas;
foreach($cliente->planosPostVentas as $planoPost){
//Verifico si corresponde quitar de las notificaciones de
calibotside
if($user->id == $planoPost->id_solicitante && $planoPost-
>status == 'Finalizado'){
$calibotsession =
Session::get('calibotside.planosPostVentas');
if(!empty($calibotsession)){
foreach($calibotsession as $key => $cali){
if($cali['id'] == $cliente->id && !$planoPost-
>visto_solicitante){
unset($calibotsession[$key]);
Session::forget('calibotside.planosPostVentas');
Session::put('calibotside.planosPostVentas',
$calibotsession);
$planoPost->visto_solicitante = true;
$planoPost->save();
}
}
}
}
$planoPost->enumerations = json_decode($planoPost-
>enumerations);
$s3 = Storage::disk('s3');
$directory =
"clientes/$cliente->id/solicitudPlanoPostVentas/$planoPost->id/";
$archivos = $s3->files($directory);
$archivosPlanosPostVentas = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosPlanosPostVentas, $array);
}
usort($archivosPlanosPostVentas, function($a, $b) {
$first = Carbon::parse($a['last_modified']);
$second = Carbon::parse($b['last_modified']);
return $first->greaterThan($second);
});
$planoPost->archivos = $archivosPlanosPostVentas;
}
if($planoPost->status == 'Solicitud Finalizado' || $planoPost-
>status == 'Finalizado'){
$directory =
"clientes/$cliente->id/solicitudPlanoPostVentas/$planoPost->id/final/";
$archivos = $s3->files($directory);
$archivosTerminado = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosTerminado, $array);
}
$planoPost->terminadoFiles = $archivosTerminado;
}
}
$planoPost->historial = HistorialPlanoPostVenta::select([
'userHistory.name as historyName',
'historial_planos_post_ventas.detail',
'historial_planos_post_ventas.created_at'
])
->join('users as
userHistory','userHistory.id','=','historial_planos_post_ventas.id_usuario')
->where('id_plano_post',$planoPost->id)->get();
$planoPost->comentarios = ComentarioPlanoPostVenta::select([
'userComment.name as usuario',
'comentario_planos_post_venta.comentario',
'comentario_planos_post_venta.created_at'
])
->join('users as
userComment','userComment.id','=','comentario_planos_post_venta.id_usuario')
->where('id_plano_post',$planoPost->id)->get();
}
} else {
$cliente->planosPostVentas = '';
}
$anteproyectos = AnteProyecto::select([
'anteproyectos.id',
'anteproyectos.id_solicitante',
'anteproyectos.membrete',
'anteproyectos.status',
'us.name as userSolicitante',
'ua.name as userArquitecto',
'anteproyectos.id_arquitecto',
'anteproyectos.prioridad',
'anteproyectos.observaciones',
'anteproyectos.f_estimativa',
'anteproyectos.created_at',
'anteproyectos.motivo_rescicion',
'anteproyectos.visto_solicitante'
])
->join('users as us','us.id','=','anteproyectos.id_solicitante')
->leftJoin('users as ua','ua.id','=','anteproyectos.id_arquitecto')
->where('id_cliente',$cliente->id)->get();
if($anteproyectos->count()){
$cliente->anteproyectos = $anteproyectos;
foreach($cliente->anteproyectos as $anteproyecto){
//Verifico si corresponde quitar de las notificaciones de
calibotside
if($user->id == $anteproyecto->id_solicitante && $anteproyecto-
>status == 'Finalizado'){
$calibotsession =
Session::get('calibotside.anteproyectos');
if(!empty($calibotsession)){
foreach($calibotsession as $key => $cali){
if($cali['id'] == $cliente->id && !$anteproyecto-
>visto_solicitante){
unset($calibotsession[$key]);
Session::forget('calibotside.anteproyectos');
Session::put('calibotside.anteproyectos',
$calibotsession);
$anteproyecto->visto_solicitante = true;
$anteproyecto->save();
}
}
}
}
if($anteproyecto->f_estimativa)$anteproyecto->fecha_estimativa
= $anteproyecto->f_estimativa->format('d/m/Y');
$s3 = Storage::disk('s3');
$directory =
"clientes/$cliente->id/solicitudAnteproyecto/$anteproyecto->id/";
$archivos = $s3->files($directory);
$archivosAnteproyecto = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosAnteproyecto, $array);
}
usort($archivosAnteproyecto, function($a, $b) {
$first = Carbon::parse($a['last_modified']);
$second = Carbon::parse($b['last_modified']);
return $first->greaterThan($second);
});
$anteproyecto->archivos = $archivosAnteproyecto;
}
if($anteproyecto->status == 'Solicitud Finalizado' ||
$anteproyecto->status == 'Finalizado'){
$directory =
"clientes/$cliente->id/solicitudAnteproyecto/$anteproyecto->id/final/";
$archivos = $s3->files($directory);
$archivosTerminado = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosTerminado, $array);
}
$anteproyecto->terminadoFiles = $archivosTerminado;
}
}
$anteproyecto->historial = HistorialAnteproyecto::select([
'userHistory.name as historyName',
'historial_anteproyectos.detail',
'historial_anteproyectos.created_at'
])
->join('users as
userHistory','userHistory.id','=','historial_anteproyectos.id_usuario')
->where('id_anteproyecto',$anteproyecto->id)->get();
$anteproyecto->comentarios = ComentarioAnteproyecto::select([
'userComment.name as usuario',
'comentario_antepro.comentario',
'comentario_antepro.created_at'
])
->join('users as
userComment','userComment.id','=','comentario_antepro.id_usuario')
->where('id_anteproyecto',$anteproyecto->id)->get();
}
} else {
$cliente->anteproyectos = '';
}
$renders = Renders::select([
'renders.id',
'renders.id_solicitante',
'renders.membrete',
'renders.status',
'renders.substatus',
'us.name as userSolicitante',
'ua.name as userArquitecto',
'renders.id_arquitecto',
'renders.f_estimativa',
'renders.observaciones',
'renders.created_at',
'renders.motivo_rescicion',
'renders.modify',
'renders.visto_solicitante'
])
->join('users as us','us.id','=','renders.id_solicitante')
->leftJoin('users as ua','ua.id','=','renders.id_arquitecto')
->where('id_cliente',$cliente->id)->get();
if($renders->count()){
$cliente->renders = $renders;
foreach($cliente->renders as $render){
//Verifico si corresponde quitar de las notificaciones de
calibotside
if($user->id == $render->id_solicitante && $render->status ==
'Finalizado'){
$calibotsession = Session::get('calibotside.renders');
if(!empty($calibotsession)){
foreach($calibotsession as $key => $cali){
if($cali['id'] == $cliente->id && !$render-
>visto_solicitante){
unset($calibotsession[$key]);
Session::forget('calibotside.renders');
Session::put('calibotside.renders',
$calibotsession);
$render->visto_solicitante = true;
$render->save();
}
}
}
}
$render->modify = json_decode($render->modify);
if($render->f_estimativa)$render->fecha_estimativa = $render-
>f_estimativa->format('d/m/Y');
$s3 = Storage::disk('s3');
$directory = "clientes/$cliente->id/solicitudRender/$render-
>id/";
$archivos = $s3->files($directory);
$archivosRender = [];
$commentsAndFiles = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosRender, $array);
array_push($commentsAndFiles, $array);
}
usort($archivosRender, function($a, $b) {
$first = Carbon::parse($a['last_modified']);
$second = Carbon::parse($b['last_modified']);
return $first->greaterThan($second);
});
$render->archivos = $archivosRender;
}
if(!empty($render->modify)){
foreach($render->modify as $modi){
$directory =
"clientes/$cliente->id/solicitudRender/$render->id/modificaciones/$modi->order/";
$archivos = $s3->files($directory);
$archivosModi = [];
if(!empty($archivos)){
foreach($archivos as $file){
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosModi, $array);
array_push($commentsAndFiles, $array);
}
usort($archivosModi, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$modi->files = $archivosModi;
}
}
}
$render->historial = HistorialRenders::select([
'userHistory.name as historyName',
'historial_renders.detail',
'historial_renders.created_at'
])
->join('users as
userHistory','userHistory.id','=','historial_renders.id_usuario')
->where('id_render',$render->id)->get();
$render->comentarios = ComentarioRenders::select([
'userComment.name as usuario',
'userComment.tipo as tipo',
'comentario_renders.comentario',
'comentario_renders.created_at'
])
->join('users as
userComment','userComment.id','=','comentario_renders.id_usuario')
->where('id_render',$render->id)->get();
foreach($render->comentarios as $comment){
array_push($commentsAndFiles, $comment);
}
}
usort($commentsAndFiles, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$render->comentarios = $commentsAndFiles;
} else {
$cliente->renders = '';
}
$veriArquitecturas = VerificacionArquitectura::select([
'verificacion_arquitectura.id',
'verificacion_arquitectura.membrete',
'verificacion_arquitectura.status',
'verificacion_arquitectura.substatus',
'verificacion_arquitectura.prioridad',
'us.name as userSolicitante',
'ua.name as userArquitecto',
'verificacion_arquitectura.id_arquitecto',
'verificacion_arquitectura.id_solicitante',
'verificacion_arquitectura.f_estimativa',
'verificacion_arquitectura.observaciones',
'verificacion_arquitectura.estado_entregado',
'verificacion_arquitectura.estado_recibido',
'verificacion_arquitectura.comentario_entregado',
'verificacion_arquitectura.comentario_recibido',
'verificacion_arquitectura.created_at',
'verificacion_arquitectura.motivo_rescicion',
'verificacion_arquitectura.notify',
])
->join('users as
us','us.id','=','verificacion_arquitectura.id_solicitante')
->leftJoin('users as
ua','ua.id','=','verificacion_arquitectura.id_arquitecto')
->where('id_cliente',$cliente->id)->get();
if($veriArquitecturas->count()){
$cliente->veriArquitecturas = $veriArquitecturas;
foreach($cliente->veriArquitecturas as $veriArquitectura){
if($veriArquitectura->f_estimativa)$veriArquitectura-
>fecha_estimativa = $veriArquitectura->f_estimativa->format('d/m/Y');
$s3 = Storage::disk('s3');
$directory =
"clientes/$cliente->id/veriArquitectura/$veriArquitectura->id/";
$archivos = $s3->files($directory);
$archivosVeriArquitectura = [];
$commentsAndFiles = [];
if(!empty($archivos)){
foreach($archivos as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosVeriArquitectura, $array);
array_push($commentsAndFiles, $array);
}
usort($archivosVeriArquitectura, function($a, $b) {
$first = Carbon::parse($a['last_modified']);
$second = Carbon::parse($b['last_modified']);
return $first->greaterThan($second);
});
$veriArquitectura->archivos = $archivosVeriArquitectura;
}
if($veriArquitectura->status != 'Pendiente'){
$directory =
"clientes/$cliente->id/veriArquitectura/$veriArquitectura->id/entregado/";
$archivos_e = $s3->files($directory);
$archivosEntregado = [];
if(!empty($archivos_e)){
foreach($archivos_e as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosEntregado, $array);
array_push($commentsAndFiles, $array);
}
$veriArquitectura->entregadoFiles = $archivosEntregado;
}
}
if($veriArquitectura->status != 'Pendiente'){
$directory =
"clientes/$cliente->id/veriArquitectura/$veriArquitectura->id/recibido/";
$archivos_r = $s3->files($directory);
$archivosRecibido = [];
if(!empty($archivos_r)){
foreach($archivos_r as $file) {
$array = [];
$array['path'] = $file;
$explode = explode('/', $array['path']);
$array['name'] = end($explode);
$array['extension'] = $s3->mimeType($file);
$array['size'] = $s3->size($file);
$array['size'] /= 1024;
if($array['size'] > 1024){
$array['size'] /= 1024;
$array['size'] =
number_format($array['size'],2,',','.').' MB';
} else {
$array['size'] =
number_format($array['size'],2,',','.').' KB';
}
$array['created_at'] = date(DATE_RFC822, $s3-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['created_at'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['created_at'])->format('H:i:s');
array_push($archivosRecibido, $array);
array_push($commentsAndFiles, $array);
}
$veriArquitectura->recibidoFiles = $archivosRecibido;
}
}
$veriArquitectura->historial =
HistorialVeriArquitectura::select([
'userHistory.name as historyName',
'historial_veri_arquitectura.detail',
'historial_veri_arquitectura.created_at'
])
->join('users as
userHistory','userHistory.id','=','historial_veri_arquitectura.id_usuario')
->where('id_veri_arquitectura',$veriArquitectura->id)-
>get();
$veriArquitectura->comentarios =
ComentarioVeriArquitectura::select([
'userComment.name as usuario',
'userComment.tipo as tipo',
'comentario_veri_arquitectura.comentario',
'comentario_veri_arquitectura.id_usuario',
'comentario_veri_arquitectura.created_at'
])
->join('users as
userComment','userComment.id','=','comentario_veri_arquitectura.id_usuario')
->where('id_veri_arquitectura',$veriArquitectura->id)-
>get();
foreach($veriArquitectura->comentarios as $comment){
array_push($commentsAndFiles, $comment);
}
}
usort($commentsAndFiles, function($a, $b) {
$first = Carbon::parse($a['created_at']);
$second = Carbon::parse($b['created_at']);
return $first->greaterThan($second);
});
$veriArquitectura->comentarios = $commentsAndFiles;
if($veriArquitecturas->first()->status == 'Finalizado'){
$cliente->observacionesEntrega = ObservacionEntrega::select([
'observaciones_entrega.id_usuario',
'users.name as usuario',
'observaciones_entrega.observacion',
'observaciones_entrega.public',
'observaciones_entrega.created_at'
])
-
>join('users','observaciones_entrega.id_usuario','=','users.id')
->where('id_cliente',$cliente->id)
->orderBy('created_at','desc')
->get();
$avatars = Storage::disk('avatars');
foreach($cliente->observacionesEntrega as $obseEntrega){
$files = $avatars->allFiles($obseEntrega->id_usuario);
if(!empty($files)){
$obseEntrega->avatar = '/avatars/'.$files[0];
} else {
$obseEntrega->avatar =
'/bower_components/admin-lte/dist/img/avatar7.png';
}
}
}
} else {
$cliente->veriArquitecturas = '';
}
$hoy = Carbon::today();
$diffStatus = $hoy->diffInDays($cliente->status_date);
$cliente->edad = Config::get('constant.edad.'.$cliente->edad);
$origenes = Origen::lists('nombre','id');
$reuniones = Reuniones::select([
'reuniones.id',
'reuniones.donde',
'reuniones.fecha',
'reuniones.fecha_asignacion',
'reuniones.visitado',
'reuniones.creado_por as creado_por_id',
'reuniones.modificado_por as modificado_por_id',
'user_creado.name as creado_por',
'user_modificado.name as modificado_por',
'reuniones.usuario_asignado',
'user_asignado.name as asignado_a',
'reuniones.contactado',
'provincias.nombre_provincia as provincia',
'reuniones.localidad',
'reuniones.domicilio',
'reuniones.comisionable',
'reuniones.voucher_num',
'reuniones.voucher_desc',
'reuniones.voucher_url',
'reuniones.created_at',
'reuniones.updated_at'
])
->join('users as
user_creado','user_creado.id','=','reuniones.creado_por')
->leftjoin('users as
user_modificado','user_modificado.id','=','reuniones.modificado_por')
->leftjoin('users as
user_asignado','user_asignado.id','=','reuniones.usuario_asignado')
-
>leftJoin('provincias','provincias.id','=','reuniones.id_provincia')
->where('reuniones.id_cliente',$cliente->id)->get()->take(4);
$reunion_comisiona = Reuniones::select('reuniones.id')
->where('reuniones.id_cliente',$cliente->id)
->where('reuniones.comisionable',1)
->count();
if($reuniones->count()){
foreach($reuniones as $reunion){
$reunion->created_at_string = $reunion->created_at->format('l
d, F Y');
$reunion->created_at_string =
str_replace(Config::get('constant.en_days'), Config::get('constant.esp_days'),
$reunion->created_at_string);
$reunion->created_at_string =
str_replace(Config::get('constant.en_months'), Config::get('constant.esp_months'),
$reunion->created_at_string);
$reunion->updated_at_string = $reunion->updated_at->format('l
d, F Y');
$reunion->updated_at_string =
str_replace(Config::get('constant.en_days'), Config::get('constant.esp_days'),
$reunion->updated_at_string);
$reunion->updated_at_string =
str_replace(Config::get('constant.en_months'), Config::get('constant.esp_months'),
$reunion->updated_at_string);
//dd($reunion->fecha->diffInDays(Carbon::now(),false));
$avatars = Storage::disk('avatars');
$files = $avatars->allFiles($reunion->creado_por_id);
if(!empty($files)){
$reunion->avatarCreador = '/avatars/'.$files[0];
} else {
$reunion->avatarCreador =
'/bower_components/admin-lte/dist/img/avatar7.png';
}
$files = $avatars->allFiles($reunion->modificado_por_id);
if(!empty($files)){
$reunion->avatarModificador = '/avatars/'.$files[0];
} else {
$reunion->avatarModificador = '/bower_components/admin-
lte/dist/img/avatar7.png';
}
switch($reunion->donde){
case 'bsas':
$reunion->donde_string = 'Hudson';
break;
case 'pilar':
$reunion->donde_string = 'Pilar';
break;
case 'hudson-expo':
$reunion->donde_string = 'ExpoCasa 2022-Hudson';
break;
case 'fabrica':
$reunion->donde_string = 'P. Ind. Ferreyra';
break;
case 'madero':
$reunion->donde_string = 'Puerto Madero';
break;
case 'uru':
$reunion->donde_string = 'Uruguay';
default:
$reunion->donde_string = 'A Domicilio';
break;
}
}
$subareas = Subarea::select('name')
->join('client_areas', 'client_areas.subarea_id', '=',
'subareas.id')
->where('client_areas.client_id',$cliente->id)
->get();
if ($check) {
$cliente->id_encode = base64_encode($cliente->id);
$cliente->nombre_apellido_encode = base64_encode($cliente-
>nombre_apellido);
$competencias = Competencia::lists('name','id');
$provincia_default = null;
$proyectos->provincia_instalacion = Provincia::where('id',
$proyectos->id_provincia)->pluck('nombre_provincia');
if ($proyectos->transferencia_sena->$mismo_titular ==
"true") {
$proyectos->transferencias += array($i => [
'nro_transferencia' => $proyectos-
>transferencia_sena->$nro_transferencia,
'mismo_titular' => $proyectos-
>transferencia_sena->$mismo_titular,
'banco' => $proyectos->transferencia_sena-
>$banco,
/* 'deposito_day' => $depositod,
'importe' => $imported, */
'archivos' =>
$archivosSenaFormaPagoTransferencia
]);
} else {
$proyectos->transferencias += array($i => [
'nro_transferencia' => $proyectos-
>transferencia_sena->$nro_transferencia,
'mismo_titular' => $proyectos-
>transferencia_sena->$mismo_titular,
'titular' => $proyectos->transferencia_sena-
>$titular,
'cuit' => $proyectos->transferencia_sena-
>$cuit,
'banco' => $proyectos->transferencia_sena-
>$banco,
'deposito_day' => $depositod,
'importe' => $imported,
'archivos' =>
$archivosSenaFormaPagoTransferencia
]);
}
}
}
if (!empty($proyectos->vehiculo)) {
$proyectos->vehiculo = json_decode($proyectos->vehiculo);
}
if(!empty($reciboslaesperanza)){
foreach($reciboslaesperanza as $recLA){
$recLA->total = json_decode($recLA->total);
$recLA->total = $recLA->total->importe;
switch($recLA->concepto){
case 1:
$recLA->concepto = 'Seña';
break;
case 2:
$recLA->concepto = 'Entrega';
break;
case 6:
$recLA->concepto = 'Planificación de Proyecto';
break;
case 3:
$recLA->concepto = 'Cuota';
break;
case 4:
$recLA->concepto = 'Saldo';
break;
case 5:
$recLA->concepto = 'Otros';
break;
}
//obtenemos datos de banco en recibo LA
if($recLA->banco) {
$recLA->banco = json_decode($recLA->banco);
/* if (array_key_exists('file', $recLA->banco) &&
$recLA->banco->file == "true") {
$recLA->banco->multiple = 1;
}
elseif (array_key_exists('details', $recLA->banco)) {
$countable = 0;
foreach ($recLA->banco->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recLA->banco->multiple = 2;
}
elseif($countable>1){
$recLA->banco->multiple = 3;
}
else{
$recLA->banco->multiple = 0;
}
}
else{
$recLA->banco->multiple = 0;
} */
}
if (array_key_exists('details', $recLA->otros)) {
$countable = 0;
foreach ($recLA->otros->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recLA->otros->multiple = 2;
}
elseif($countable>1){
$recLA->otros->multiple = 3;
}
else{
$recLA->otros->multiple = 0;
}
}
else{
$recLA->otros->multiple = 0;
}
}
}
}
$reciboseurocasa = RecibosEuroCasa::withTrashed()
->select([
'recibos_euro_casa.id',
'recibos_euro_casa.id_cliente',
'usa.name as asesor',
'usr.name as responsable',
'recibos_euro_casa.banco',
'recibos_euro_casa.otros',
'recibos_euro_casa.concepto',
'recibos_euro_casa.recibos_valido_por',
'recibos_euro_casa.fundamento',
'recibos_euro_casa.total',
'recibos_euro_casa.created_at',
'recibos_euro_casa.deleted_at',
'recibos_euro_casa.sucursales'
])
->join('users as
usa','usa.id','=','recibos_euro_casa.id_usuario')
->join('users as
usr','usr.id','=','recibos_euro_casa.id_responsable')
->where('recibos_euro_casa.id_cliente',$cliente->id)
->get();
if(!empty($reciboseurocasa)){
foreach($reciboseurocasa as $recEC){
$recEC->total = json_decode($recEC->total);
$recEC->total = $recEC->total->importe;
switch($recEC->concepto){
case 1:
$recEC->concepto = 'Seña';
break;
case 2:
$recEC->concepto = 'Entrega';
break;
case 6:
$recEC->concepto = 'Planificación de Proyecto';
break;
case 3:
$recEC->concepto = 'Cuota';
break;
case 4:
$recEC->concepto = 'Saldo';
break;
case 5:
$recEC->concepto = 'Otros';
break;
}
//obtenemos datos de banco en recibo EC
if($recEC->banco) {
$recEC->banco = json_decode($recEC->banco);
/* if (array_key_exists('file', $recEC->banco) &&
$recEC->banco->file == "true") {
$recEC->banco->multiple = 1;
}
elseif (array_key_exists('details', $recEC->banco)) {
$countable = 0;
foreach ($recEC->banco->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recEC->banco->multiple = 2;
}
elseif($countable>1){
$recEC->banco->multiple = 3;
}
else{
$recEC->banco->multiple = 0;
}
}
else{
$recEC->banco->multiple = 0;
} */
}
if (array_key_exists('details', $recEC->otros)) {
$countable = 0;
foreach ($recEC->otros->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recEC->otros->multiple = 2;
}
elseif($countable>1){
$recEC->otros->multiple = 3;
}
else{
$recEC->otros->multiple = 0;
}
}
else{
$recEC->otros->multiple = 0;
}
} */
}
}
$reciboswhitehouse = RecibosWhiteHouse::withTrashed()
->select([
'recibos_white_house.id',
'recibos_white_house.id_cliente',
'usa.name as asesor',
'usr.name as responsable',
'recibos_white_house.banco',
'recibos_white_house.otros',
'recibos_white_house.concepto',
'recibos_white_house.recibos_valido_por',
'recibos_white_house.fundamento',
'recibos_white_house.total',
'recibos_white_house.created_at',
'recibos_white_house.deleted_at',
'recibos_white_house.sucursales'
])
->join('users as
usa','usa.id','=','recibos_white_house.id_usuario')
->join('users as
usr','usr.id','=','recibos_white_house.id_responsable')
->where('recibos_white_house.id_cliente',$cliente->id)
->get();
if(!empty($reciboswhitehouse)){
foreach($reciboswhitehouse as $recWH){
$recWH->total = json_decode($recWH->total);
$recWH->total = $recWH->total->importe;
switch($recWH->concepto){
case 1:
$recWH->concepto = 'Seña';
break;
case 2:
$recWH->concepto = 'Entrega';
break;
case 6:
$recWH->concepto = 'Planificación de Proyecto';
break;
case 3:
$recWH->concepto = 'Cuota';
break;
case 4:
$recWH->concepto = 'Saldo';
break;
case 5:
$recWH->concepto = 'Otros';
break;
}
//obtenemos datos de banco en recibo WH
if($recWH->banco) {
$recWH->banco = json_decode($recWH->banco);
if (array_key_exists('file', $recWH->banco) && $recWH-
>banco->file == "true") {
$recWH->banco->multiple = 1;
}
elseif (array_key_exists('details', $recWH->banco)) {
$countable = 0;
foreach ($recWH->banco->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recWH->banco->multiple = 2;
}
elseif($countable>1){
$recWH->banco->multiple = 3;
}
else{
$recWH->banco->multiple = 0;
}
}
else{
$recWH->banco->multiple = 0;
}
}
if (array_key_exists('details', $recWH->otros)) {
$countable = 0;
foreach ($recWH->otros->details as $row){
if ($row->file== "true"){
$countable++;
}
}
if($countable==1){
$recWH->otros->multiple = 2;
}
elseif($countable>1){
$recWH->otros->multiple = 3;
}
else{
$recWH->otros->multiple = 0;
}
}
else{
$recWH->otros->multiple = 0;
}
}
}
}
$modelosFiles = [];
$storage = Storage::disk('public');
if($files =
$storage->files('modelos/'.$cliente->nombre_empresa.'/Todos los modelos')){
$size = 0;
foreach($files as $file){
$size += ($storage->size($file) / 1024) / 1024;
}
array_push($modelosFiles,array('name' => 'Todos los modelos',
'size' => $size));
}
foreach($modelo_cliente as $modelo){
if($files = $storage->files('modelos/'.$cliente-
>nombre_empresa.'/'.$modelo)){
$size = 0;
foreach($files as $file){
$size += ($storage->size($file) /1024 ) /1024;
}
array_push($modelosFiles,array('name' => $modelo, 'size' =>
$size));
}
}
$modelo_cliente[666] = 'Sin modelo en específico';
$tareas = Tareas::where('id_cliente',$id)->where('leido',false)-
>orderBy('fecha')->get();
if(empty($cliente->financiacion)){
$cliente->financiacion = new Financiacion();
$cliente->financiacion->id_cliente = $cliente->id;
$cliente->financiacion->provincia = 28;
$cliente->financiacion->localidad_proyecto = 'Sin especificar';
$cliente->financiacion->save();
$barrios_cerrados = BarriosCerrados::lists('name');
} else {
if($cliente->financiacion->provincia != 28 && ($cliente-
>financiacion->provincia == 3 || $cliente->financiacion->provincia == 21 ||
$cliente->financiacion->provincia == 23 || $cliente->financiacion->provincia ==
24)){
$barrios_cerrados = BarriosCerrados::where('id_provincia',
$cliente->financiacion->provincia)->lists('name');
} else {
$barrios_cerrados = BarriosCerrados::lists('name');
}
}
if(!empty($cliente->financiacion->descripcion_vehiculo)){
$cliente->financiacion->descripcion_vehiculo =
json_decode($cliente->financiacion->descripcion_vehiculo);
$datos_vehiculo['marca'] = $cliente->financiacion-
>descripcion_vehiculo->marca;
$datos_vehiculo['modelo'] = $cliente->financiacion-
>descripcion_vehiculo->modelo;
$datos_vehiculo['ano_modelo'] = $cliente->financiacion-
>descripcion_vehiculo->ano_modelo;
$tiene_vehiculo =
ModelosVehiculos::select('id','id_marca','nombre_marca','nombre_modelo')
->where('nombre_marca',$cliente->financiacion-
>descripcion_vehiculo->marca)->get();
$datos_vehiculo['modelos'] = $tiene_vehiculo-
>lists('nombre_modelo','id');
/*$cliente->financiacion->descripcion_vehiculo =
json_decode($tiene_vehiculo);*/
$datos_vehiculo['id'] = $tiene_vehiculo->where('nombre_modelo',
$cliente->financiacion->descripcion_vehiculo->modelo)->pluck('id')->first();
$datos_vehiculo['id_marca'] =$tiene_vehiculo-
>where('nombre_marca',$cliente->financiacion->descripcion_vehiculo->marca)-
>pluck('id_marca')->first();
$cliente->financiacion->descripcion_vehiculo = $datos_vehiculo;
$fecha_diferencia = Carbon::now()->diffInDays($cliente-
>pluck('created_at'));
$campanas = ClientCampaign::select('campaign_id','source',
'medium', 'campaign_name', 'ad_group', 'ad_name', 'network','url')-
>where('client_id',$id)->whereNotNull('source')->get();
foreach($campanas as $campana){
if($campana->campaign_id == 3){
$cliente->messenger = $campana->url;
}
}
$subareasPostVentas = Subarea::whereIn('id_area',[2,3])-
>lists('name','id');
$checkPostVenta = ChecklistPostVenta::select(
'checklist_postventa.check1 as check1',
'c1.name as check1_user',
'checklist_postventa.check1_time as check1_time',
'checklist_postventa.check2 as check2',
'c2.name as check2_user',
'checklist_postventa.check2_time as check2_time',
'checklist_postventa.check3 as check3',
'c3.name as check3_user',
'checklist_postventa.check3_time as check3_time',
'checklist_postventa.check4 as check4',
'c4.name as check4_user',
'checklist_postventa.check4_time as check4_time',
'checklist_postventa.check5 as check5',
'c5.name as check5_user',
'checklist_postventa.check5_time as check5_time',
'checklist_postventa.check6 as check6',
'c6.name as check6_user',
'checklist_postventa.check6_time as check6_time',
'checklist_postventa.check7 as check7',
'c7.name as check7_user',
'checklist_postventa.check7_time as check7_time',
'checklist_postventa.numAnexo as numAnexo',
'na.name as numAnexo_user',
'checklist_postventa.numAnexo_time as numAnexo_time',
'checklist_postventa.check8 as check8',
'c8.name as check8_user',
'checklist_postventa.check8_time as check8_time',
'checklist_postventa.check9 as check9',
'c9.name as check9_user',
'checklist_postventa.check9_time as check9_time',
'checklist_postventa.check10 as check10',
'c10.name as check10_user',
'checklist_postventa.check10_time as check10_time',
'checklist_postventa.check11 as check11',
'c11.name as check11_user',
'checklist_postventa.check11_time as check11_time',
'checklist_postventa.checkAdmin1 as checkAdmin1',
'ca1.name as checkAdmin1_user',
'checklist_postventa.checkAdmin1_time as checkAdmin1_time',
'checklist_postventa.checkAdmin2 as checkAdmin2',
'ca2.name as checkAdmin2_user',
'checklist_postventa.checkAdmin2_time as checkAdmin2_time',
'checklist_postventa.checkAdmin3 as checkAdmin3',
'ca3.name as checkAdmin3_user',
'checklist_postventa.checkAdmin3_time as checkAdmin3_time',
'checklist_postventa.checkAdmin4 as checkAdmin4',
'ca4.name as checkAdmin4_user',
'checklist_postventa.checkAdmin4_time as checkAdmin4_time',
'checklist_postventa.checkAdmin5 as checkAdmin5',
'ca5.name as checkAdmin5_user',
'checklist_postventa.checkAdmin5_time as checkAdmin5_time',
'checklist_postventa.checkAdmin6 as checkAdmin6',
'ca6.name as checkAdmin6_user',
'checklist_postventa.checkAdmin6_time as checkAdmin6_time',
'checklist_postventa.check12 as check12',
'c12.name as check12_user',
'checklist_postventa.check12_time as check12_time',
'checklist_postventa.check13 as check13',
'c13.name as check13_user',
'checklist_postventa.check13_time as check13_time',
'checklist_postventa.check14 as check14',
'c14.name as check14_user',
'checklist_postventa.check14_time as check14_time',
'checklist_postventa.check15 as check15',
'c15.name as check15_user',
'checklist_postventa.check15_time as check15_time')
->leftJoin('users as
c1','checklist_postventa.check1_user','=','c1.id')
->leftJoin('users as
c2','checklist_postventa.check2_user','=','c2.id')
->leftJoin('users as
c3','checklist_postventa.check3_user','=','c3.id')
->leftJoin('users as
c4','checklist_postventa.check4_user','=','c4.id')
->leftJoin('users as
c5','checklist_postventa.check5_user','=','c5.id')
->leftJoin('users as
c6','checklist_postventa.check6_user','=','c6.id')
->leftJoin('users as
c7','checklist_postventa.check7_user','=','c7.id')
->leftJoin('users as
na','checklist_postventa.numAnexo_user','=','na.id')
->leftJoin('users as
c8','checklist_postventa.check8_user','=','c8.id')
->leftJoin('users as
c9','checklist_postventa.check9_user','=','c9.id')
->leftJoin('users as
c10','checklist_postventa.check10_user','=','c10.id')
->leftJoin('users as
c11','checklist_postventa.check11_user','=','c11.id')
->leftJoin('users as
ca1','checklist_postventa.checkAdmin1_user','=','ca1.id')
->leftJoin('users as
ca2','checklist_postventa.checkAdmin2_user','=','ca2.id')
->leftJoin('users as
ca3','checklist_postventa.checkAdmin3_user','=','ca3.id')
->leftJoin('users as
ca4','checklist_postventa.checkAdmin4_user','=','ca4.id')
->leftJoin('users as
ca5','checklist_postventa.checkAdmin5_user','=','ca5.id')
->leftJoin('users as
ca6','checklist_postventa.checkAdmin6_user','=','ca6.id')
->leftJoin('users as
c12','checklist_postventa.check12_user','=','c12.id')
->leftJoin('users as
c13','checklist_postventa.check13_user','=','c13.id')
->leftJoin('users as
c14','checklist_postventa.check14_user','=','c14.id')
->leftJoin('users as
c15','checklist_postventa.check15_user','=','c15.id')
->where('checklist_postventa.id_cliente', $id)
->first();
if($checkPostVenta == null){
$checkPostVenta = 'Checklist Vacío';
}
$cliente_status =
ClienteStatus::getStatusListAvailable(Auth::user()->tipo, $cliente-
>id_status,Auth::user()->id);
$razon_cliente = RazonesController::obtenerListaArray($cliente-
>id_status);
$razon_cliente = $razon_cliente->toArray();
$razon_no_interesado = RazonesController::obtenerListaArray(3);
$razon_no_interesado = $razon_no_interesado->toArray();
$razon_a_plazo = RazonesController::obtenerListaArray(13);
$razon_a_plazo = $razon_a_plazo->toArray();
if (Gate::allows('reasign-clients')) {
if($user->tipo !=
Config::get('constant.user_types.post_ventas')){
$vendedores = $this-
>getTodosVendedoresyCantidadAtendidos();
$empresas = Empresa::select('nombre_empresa')-
>whereIn('id', [Auth::user()->empresa])->get();
}
$vendedores = $vendedores->sortBy('totalClientes');
} else {
$vendedores =
User::join('user_areas','users.id','=','user_areas.user_id')-
>whereIn('user_areas.subarea_id', [6,17])->get();
$avatars = Storage::disk('avatars');
foreach($vendedores as $vendedor){
$files = $avatars->allFiles($vendedor->id);
if(!empty($files)){
$vendedor->avatar = '/avatars/'.$files[0];
} else {
$vendedor->avatar =
'/bower_components/admin-lte/dist/img/avatar7.png';
}
}
$empresas = Empresa::select('nombre_empresa')-
>whereIn('id', [Auth::user()->empresa])->get();
}
}
//ocultamos actividades de administradores para pruebas
$actividades = $cliente->activities->groupBy('tipo');
foreach($actividades as $actividad){
$actividad->subarea = ClientsActivitiesTypes::where('id',
$actividad[0]->getOriginal('tipo'))->pluck('subarea_id');
}
$eliminado = false;
if($cliente->deleted_at != null){
$eliminado = true;
if($user->tipo ==
Config::get('constant.user_types.asesor_comercial') || $user->tipo ==
Config::get('constant.user_types.call_center')){
return view('errors.accesodenegado',
compact('eliminado','id'));
}
}
$marcas= MarcasVehiculos::lists('nombre','id')->toArray();
$solicitud_llamado = SolicitudLlamada::select([
'solicitud_llamada.id',
'solicitud_llamada.id_solicitante',
'solicitud_llamada.hora',
'solicitud_llamada.estado_cliente',
'solicitud_llamada.observacion_solicitante',
'solicitud_llamada.id_solicitante',
'solicitud_llamada.id_destinatario',
'us.name AS nombre_solicitante',
'ua.name as arquitecto',
'solicitud_llamada.estado_llamado',
'solicitud_llamada.observacion_llamado',
'solicitud_llamada.created_at',
'solicitud_llamada.visto_solicitante'
])
->where('id_cliente',$cliente->id)
->leftJoin('users as
us','solicitud_llamada.id_solicitante','=','us.id')
->leftJoin('users as
ua','ua.id','=','solicitud_llamada.id_destinatario')
->orderBy('solicitud_llamada.hora', 'ASC')
->get();
if($solicitud_llamado){
foreach($solicitud_llamado as $soli){
//Verifico si corresponde quitar de las notificaciones de
calibotside
if($user->id == $soli->id_solicitante && $soli-
>estado_llamado == 'CONTACTADO'){
$calibotsession =
Session::get('calibotside.solLlamada');
if(!empty($calibotsession)){
foreach($calibotsession as $key => $cali){
if($cali['id'] == $cliente->id && !$soli-
>visto_solicitante){
unset($calibotsession[$key]);
Session::forget('calibotside.solLlamada');
Session::put('calibotside.solLlamada',
$calibotsession);
$soli->visto_solicitante = true;
$soli->save();
}
}
}
}
$fecha_llamado = Carbon::parse($soli->hora)->format('d/m/Y
H:i');
if($soli->id_solicitante == $user->id || $soli-
>id_destinatario == $user->id){
if(!$soli->estado_llamado){
$msg = "Tu solicitud de Llamado para el
$fecha_llamado hs. no tiene un estado aún.";
} else {
$msg = "Tu solicitud de Llamado para el
$fecha_llamado hs. se encuentra: <span class='badge'>$soli->estado_llamado</span>";
}
array_push($calibot,$msg);
}
}
}
$arquitectos_habilitados =
SolicitudLlamadaHabilitado::where('status' , 1)->lists('id_arquitecto')->toArray();
$arquitectos_habilitados_lucas =
User::select('users.name','users.id')-
>where('users.tipo',Config::get('constant.user_types.post_ventas'))
->where('user_areas.subarea_id',10)
->join('user_areas','user_areas.user_id','=','users.id')
-
>leftJoin('solicitud_llamada_habilitado','users.id','=','solicitud_llamada_habilita
do.id_arquitecto')
->where('solicitud_llamada_habilitado.status',1)
->get();
$arquitectos_habilitados_veri =
VerificacionArquitecturaHabilitado::where('status' , 1)->lists('id_arquitecto')-
>toArray();
$arquitectos_habilitados_veri_lucas =
User::select('users.name','users.id')-
>where('users.tipo',Config::get('constant.user_types.post_ventas'))
->where('user_areas.subarea_id',10)
->join('user_areas','user_areas.user_id','=','users.id')
-
>leftJoin('verificacion_arquitectura_habilitado','users.id','=','verificacion_arqui
tectura_habilitado.id_arquitecto')
->where('verificacion_arquitectura_habilitado.status',1)
->get();
if($user->tipo == Config::get('constant.user_types.post_ventas') ||
$user->id == 48 || $user->id == 457){
$historial_peticiones = HistorialPeticiones::select([
'historial_peticiones.id_peticion',
'p.asunto as asunto',
'us.name as nombre_usuario',
'historial_peticiones.id_estado as id_estado',
'p.created_at as fecha_creacion',
'historial_peticiones.updated_at as fecha_update',
'sa.name as areaEmisora',
'sa2.name as areaReceptora',
'us2.name as nameReceptor'
])
->where('historial_peticiones.id_cliente',$cliente->id)
->leftjoin('peticiones as
p','historial_peticiones.id_peticion','=','p.id')
->leftjoin('users as
us','historial_peticiones.id_usuario','=','us.id')
->join('subareas as sa','p.id_AreaEmisora','=','sa.id')
->leftjoin('subareas as
sa2','p.id_AreaReceptora','=','sa2.id')
->leftjoin('users as
us2','historial_peticiones.id_usuario_asignado','=','us2.id')
->get()
->toArray();
$group = array();
$historial_peticiones=$group;
$peticiones = Peticiones::select([
'us.name as usuarioReceptor',
'peticiones.asunto',
'peticiones.mensaje',
'peticiones.created_at',
'peticiones.id',
'peticiones.id_UsuarioEmisor',
'peticiones.id_UsuarioReceptor',
'peticiones.id_EstadoPeticion',
'peticiones.id_AreaReceptora',
'sub.name as areaEmisora',
'sub2.name as areaReceptora'
])
->where('id_cliente',$cliente->id)
->leftjoin('users as
us','peticiones.id_UsuarioReceptor','=','us.id')
->leftjoin('subareas as
sub','peticiones.id_AreaEmisora','=','sub.id')
->leftjoin('subareas as
sub2','peticiones.id_AreaReceptora','=','sub2.id')
->get()->toArray();
$archivosPeticiones = [];
$canUploadFiles = [];
foreach($peticiones as $peticion){
$disk = Storage::disk('s3');
$directory = 'clientes/'.$cliente->id.'/peticiones/'.
$peticion['id'];
$archivos = $disk->files($directory);
$archivosArray = [];
foreach($archivos as $file){
$array = [];
$array['path'] = $file;
$explode = explode('/',$array['path']);
$array['name'] = end($explode);
$array['extension'] = $disk->mimeType($file);
$array['size'] = $disk->size($file);
$array['last_modified'] = date(DATE_RFC822,$disk-
>lastModified($file));
$array['last_modified_date'] =
Carbon::parse($array['last_modified'])->format('d-m-Y');
$array['last_modified_time'] =
Carbon::parse($array['last_modified'])->format('H:i:s');
array_push($archivosArray,$array);
}
$archivosPeticiones[$peticion['id']] = $archivosArray;
if($user->id == 475 || $user->id == 132 || $user->id == 490
|| $user->id == 479 || $user->id == 48 || $peticion['id_UsuarioEmisor'] == $user-
>id || $peticion['id_UsuarioReceptor'] == $user->id){
$canUploadFiles[$peticion['id']] = true;
} else {
$canUploadFiles[$peticion['id']] = false;
}
}
$areaSupervisor = '';
$areaSupervisor = UserAreas::where('user_id',$user->id)-
>lists('subarea_id')->toArray();
} else {
$userAsignables= [
0 => "Seleccionar Usuario"
];
}
$comentarios_peticiones = ComentarioPeticiones::select([
"comentario_peticiones.id",
"comentario_peticiones.id_peticion",
"comentario_peticiones.comentario",
"comentario_peticiones.created_at",
"comentario_peticiones.updated_at",
"us.name as nombre"
]) ->leftjoin('peticiones as
p','comentario_peticiones.id_peticion','=','p.id')
->leftjoin('users as
us','comentario_peticiones.id_usuario','=','us.id')
->where('p.id_cliente',$cliente->id)
->get()->toArray();
if($proyectos){
if(isset($checkPostVenta) && $checkPostVenta != 'Checklist
Vacío') {
if ($proyectos->operacion && !
$checkPostVenta['check9']) {
if ($proyectos->operacion->fecha_contrato &&
$proyectos->operacion->dias_platea) {
$f_contrato = Carbon::createFromFormat('d/m/Y',
$proyectos->operacion->fecha_contrato);
$now = Carbon::now();
$difference = $now->diffInDays($f_contrato);
$quedan_dias = $proyectos->operacion-
>dias_platea - $difference;
switch ($quedan_dias) {
case ($quedan_dias == 1):
$msg = 'HOY SE VENCE EL PLAZO PARA
DECLARAR PLATEA';
array_push($calibot, $msg);
break;
case ($quedan_dias <= 0):
$msg = 'Declaración de platea
vencida!!';
array_push($calibot, $msg);
break;
default:
$msg = "Quedan $quedan_dias días para
que el cliente declare platea";
array_push($calibot, $msg);
break;
}
}
}
}
}
if($user->id == 48){
return view('pages.clientes.ver',
compact('user','archivosLEGALESArray','reuniones','reunion_comisiona','archivosDNIC
lientesVerArray','solicitud_llamado','archivosDNIArray','archivosDNISenaArray','arc
hivosSenaFormaPagoEfectivo','archivosSenaFormaPagoTransferencia','archivosSenaForma
PagoVehiculo','reuniones','comentarios_peticiones','userAsignables','areaSupervisor
','Status','archivosPeticiones','peticiones','historial_peticiones','marcas','vende
dores','empresas','cliente', 'productos', 'proyectos', 'origens', 'cliente_status',
'consultas','razon', 'status_proyectos',
'forma_pago','primary_groups','secondary_groups','tareas', 'modelo_cliente',
'fecha_diferencia',
'lista_empresas','locKUser','campanas','eliminado','subareasPostVentas','subareas',
'subarea_cliente','actividades','checkPostVenta','provincias','diffStatus','razon_c
liente','razon_no_interesado','razon_a_plazo','provincia_default','barrios_cerrados
','canUploadFiles','modelosFiles','competencias','origenes',
'reciboswhitehouse','reciboseurocasa','reciboslaesperanza','arquitectos_habilitados
','arquitectos_habilitados_lucas','arquitectos_habilitados_veri','arquitectos_habil
itados_veri_lucas','calibot'));
}
return view('pages.clientes.ver', compact('user',/*
'archivosLEGALESArray',
'archivosDNIClientesVerArray',*/'solicitud_llamado','reuniones','reunion_comisiona'
,/*'archivosDNIArray', 'archivosDNISenaArray',
'archivosSenaFormaPagoEfectivo','archivosSenaFormaPagoTransferencia','archivosSenaF
ormaPagoVehiculo',*/'reuniones','comentarios_peticiones','userAsignables','areaSupe
rvisor','Status','archivosPeticiones','peticiones','historial_peticiones','marcas',
'vendedores','empresas','cliente', 'productos', 'proyectos', 'origens',
'cliente_status', 'consultas',/* 'razon', */ 'status_proyectos',
'forma_pago','primary_groups','secondary_groups','tareas', 'modelo_cliente',
'fecha_diferencia', 'lista_empresas',/* 'locKUser',
*/'campanas','eliminado','subareasPostVentas','subareas','subarea_cliente','activid
ades','checkPostVenta','provincias','diffStatus','razon_cliente','razon_no_interesa
do','razon_a_plazo','provincia_default','barrios_cerrados','canUploadFiles','modelo
sFiles','competencias','origenes',
'reciboswhitehouse','reciboseurocasa','reciboslaesperanza','arquitectos_habilitados
','arquitectos_habilitados_lucas','arquitectos_habilitados_veri','arquitectos_habil
itados_veri_lucas','calibot'));
} else {
return view('pages.clientes.ver', compact('user',/*
'archivosLEGALESArray',
'archivosDNIClientesVerArray',*/'solicitud_llamado','reuniones','reunion_comisiona'
,/* 'archivosDNIArray',
'archivosDNISenaArray','archivosSenaFormaPagoEfectivo','archivosSenaFormaPagoTransf
erencia','archivosSenaFormaPagoVehiculo',*/'reuniones','marcas',/* 'vendedores',
'empresas',*/'cliente', 'productos', 'proyectos', 'origens', 'cliente_status',
'consultas',/* 'razon', */ 'status_proyectos', 'forma_pago',/* 'primary_groups',
'secondary_groups',*/'tareas', 'modelo_cliente', 'fecha_diferencia',
'lista_empresas',/* 'locKUser',
*/'reuniones','campanas','eliminado','subareasPostVentas','subareas','subarea_clien
te','actividades','checkPostVenta','provincias','diffStatus','razon_cliente','razon
_no_interesado','razon_a_plazo','provincia_default','barrios_cerrados','origenes','
modelosFiles','competencias',
'reciboswhitehouse','reciboseurocasa','reciboslaesperanza','arquitectos_habilitados
','arquitectos_habilitados_lucas','arquitectos_habilitados_veri','arquitectos_habil
itados_veri_lucas'));
}
return view('pages.clientes.ver',
compact('reuniones','marcas','vendedores','empresas','solicitud_llamado','cliente',
'reuniones','reunion_comisiona', 'productos', 'proyectos', 'origens',
'cliente_status', 'consultas','razon', 'status_proyectos',
'forma_pago','primary_groups','secondary_groups','tareas', 'modelo_cliente',
'fecha_diferencia',
'lista_empresas','reuniones','campanas','eliminado','subareasPostVentas','subareas'
,'subarea_cliente','actividades','checkPostVenta','provincias','diffStatus','razon_
cliente','razon_no_interesado','razon_a_plazo','provincia_default','barrios_cerrado
s','origenes','competencias','modelosFiles',
'reciboswhitehouse','reciboseurocasa','reciboslaesperanza','arquitectos_habilitados
','arquitectos_habilitados_lucas','arquitectos_habilitados_veri','arquitectos_habil
itados_veri_lucas'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
$cliente = Cliente::DatosDelCliente($id)->first();
$user = Auth::user();
if ($user->can('edit-cliente')) {
$paises = Paises::all()->lists('name', 'id');
$provincias = Provincia::orderBy('nombre_provincia', 'asc')
->lists('nombre_provincia', 'id');
$provincia_default = $user->provincia_id;
$empresas = Empresa::lists('nombre_empresa','id');
$groups = Group::all();
$asesor_group = UserGroup::where('user_id', $cliente->id_usuario)-
>lists('group_id');
if ($cliente->id_status ==
Config::get('constant.cliente_status.senado')) {
$cliente_status = ClienteStatus::lists('status', 'id');
} elseif ($cliente->id_status ==
Config::get('constant.cliente_status.vendido')) {
$cliente_status = ClienteStatus::lists('status', 'id');
} else {
if (Auth::user()->tipo == 4) {
$cliente_status = ClienteStatus::whereIn('id',
Config::get('constant.status_habilitados_consultas_recepcion'))->lists('status',
'id');
} else {
$cliente_status = ClienteStatus::whereIn('id',
Config::get('constant.status_habilitados_consultas'))->lists('status', 'id');
}
}
$status_default = $user->status_id;
return view('errors.accesodenegado');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
$user = $request->user();
$cliente = Cliente::where('id', $id)->first();
$cliente->fill($request->all());
if (empty($financiacion)) {
$financiacion = new Financiacion;
}
#$primera_consulta = Consultas::where('id_cliente',$cliente->id)-
>orderBy('created_at','desc')->first();
#$cliente->nombre_apellido = $request->nombre_apellido;
#$cliente->email = $request->email;
#$cliente->provincia = $request->provincia;
#$cliente->localidad = $request->localidad;
#$cliente->id_producto = $request->id_producto;
#$primera_consulta->id_producto = $request->id_producto;
/* Guardamos la financiacion */
$financiacion->update($request->all());
if ($request->localidad_proyecto == "0") {
$financiacion->localidad_proyecto = "No informado";
} else {
$financiacion->localidad_proyecto = $request->localidad_proyecto;
}
$financiacion->provincia = $request->provincia_proyecto;
$financiacion->posee_terreno = $request->has('posee_terreno');
$financiacion->posee_vehiculos = $request->has('posee_vehiculos');
$financiacion->posee_propiedades = $request->has('posee_propiedades');
$financiacion->id_cliente = $cliente->id;
$financiacion->fecha_estimada_inicio_proyecto = $request-
>fecha_estimada_inicio_proyecto;
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request, $id) {
$user = Auth::user();
/* Comprobamos que el usuario logueado sea Recepcion */
if ($user->tipo == Config::get('constant.user_types.recepcion') || $user-
>tipo == Config::get('constant.user_types.supervisor') || $user->tipo ==
Config::get('constant.user_types.socio_gerente')) {
/* Obtenemos el cliente por el ID que recibimos via GET */
$cliente = Cliente::find($id);
/* Borramos el Cliente */
$cliente->delete();
/* Cargamos la actividad */
ClientsActivities::register($user->id, $id,
ClientsActivities::BORRADO);
$empresa = $id;
$empresa = $id;
$user = Auth::user();
//Si el usuario es Vendedor
if ($user->tipo == Config::get('constant.user_types.asesor_comercial')) {
return view('pages.clientes.vendedor.misclientes');
}
//si el usuario es Supervisor
if ($user->tipo == Config::get('constant.user_types.supervisor')) {
extract($this->reasign_modal_vars());
return view('pages.clientes.supervisor.misclientes',
compact('clientes','primary_groups','vendedores',
'vendedores_LEC','secondary_groups'));
}
//Si el usuario es Gerente Socio
if ($user->tipo == Config::get('constant.user_types.socio_gerente')) {
$vendedores = User::ObtenerTodosLosUsuarios();
return view('pages.clientes.vendedor.misclientes',
compact('vendedores'));
}
//Si el usuario es recepcion
if ($user->tipo == Config::get('constant.user_types.recepcion')) {
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedores = $vendedores->sortBy('secondary_group');
return view('pages.clientes.recepcion.misclientes',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups'));
}
//Si el usuario es calidad
if($user->tipo == Config::get('constant.user_types.call_center')){
return view('pages.clientes.calidad.misclientes');
}
if(isset($request->visitado))$clientes-
>whereIn('reuniones.visitado', $request->visitado);
if(!empty($request->id_empresa))$clientes->whereIn('empresas.id',
$request->id_empresa);
if(!empty($request->fecha))$clientes-
>whereBetween('reuniones.fecha', [Utils::startdate($request->fecha),
Utils::enddate($request->fecha)]);
if(!empty($request->created_at))$clientes-
>whereBetween('reuniones.created_at', [Utils::startdate($request->created_at),
Utils::enddate($request->created_at)]);
if(!empty($request->client_nombre))$clientes-
>where('clientes.nombre_apellido', 'like', '%'.$request->client_nombre.'%');
if(!empty($request->donde))$clientes->whereIn('reuniones.donde',
$request->donde);
return Datatables::of($clientes)->make(true);
}else if( $user->tipo == Config::get('constant.user_types.supervisor')
||
$user->tipo == Config::get('constant.user_types.socio_gerente') ||
$user->tipo == Config::get('constant.user_types.marketing') ||
$user->tipo == Config::get('constant.user_types.administrador') ||
$user->id == 527 ||
$user->tipo == Config::get('constant.user_types.rr_hh') ||
$user->can('asesor-can-view-all-citas')){
$clientes = Reuniones::select([
'reuniones.id as id_reunion',
'reuniones.created_at',
'clientes.id',
'users.name as asignado_name',
'usersl.name as llamador_name',
'areas.tipo as grupo',
'clientes.nombre_apellido',
'clientes.telefono',
'empresas.nombre_empresa',
'reuniones.fecha as fecha_visita',
'reuniones.visitado',
'reuniones.contactado',
'reuniones.donde',
'provincias.nombre_provincia'
])->join('clientes','reuniones.id_cliente','=','clientes.id')
->join('users','clientes.id_usuario','=','users.id')
->join('empresas','clientes.id_empresa','=','empresas.id')
->join('users as
usersl','reuniones.creado_por','=','usersl.id')
->join('user_types as areas', 'usersl.tipo','=','areas.id')
-
>leftJoin('provincias','reuniones.id_provincia','=','provincias.id');
if(isset($request->visitado))$clientes-
>whereIn('reuniones.visitado', $request->visitado);
if(!empty($request->id_empresa))$clientes->whereIn('empresas.id',
$request->id_empresa);
if(!empty($request->areas))$clientes->whereIn('areas.id', $request-
>areas);
if(!empty($request->fecha_visita))$clientes-
>whereBetween('reuniones.fecha', [Utils::startdate($request->fecha_visita),
Utils::enddate($request->fecha_visita)]);
if(!empty($request->fecha_creacion))$clientes-
>whereBetween('reuniones.created_at', [Utils::startdate($request->fecha_creacion),
Utils::enddate($request->fecha_creacion)]);
if(!empty($request->client_nombre))$clientes-
>where('clientes.nombre_apellido', 'like', '%'.$request->client_nombre.'%');
if(!empty($request->asignado_a)){
if(count($request->asignado_a)== 1){
$clientes->where('users.id',$request->asignado_a);
} else {
$clientes->whereIn('users.id',$request->asignado_a);
}
}
if(!empty($request->created_by))$clientes->whereIn('usersl.id',
$request->created_by);
if(!empty($request->donde))$clientes->whereIn('reuniones.donde',
$request->donde);
if(!empty($request->provincia))$clientes->whereIn('provincias.id',
$request->provincia);
return Datatables::of($clientes)->make(true);
}else
return 'No tienes permisos para esta petición';
$provincias = Provincia::where('id','<>',28)-
>lists('nombre_provincia','id');
$areas = UserTypes::whereIn('id' , [3,4,5] )->lists('tipo','id');
$empresas = Empresa::whereIn('id',[1,2,5,8,9,11,14])-
>lists('nombre_empresa','id');
$list_users = User::whereIn('tipo',[2,3,4,5,7])->lists('name','id');
if($user->tipo == Config::get('constant.user_types.call_center')){
return view('pages.clientes.calidad.visitasconcretadas')-
>with(compact('empresas'));
}
else if($user->tipo == Config::get('constant.user_types.supervisor') ||
$user->tipo == Config::get('constant.user_types.socio_gerente') ||
$user->tipo == Config::get('constant.user_types.marketing') ||
$user->tipo == Config::get('constant.user_types.administrador') ||
$user->id == 527 ||
$user->tipo == Config::get('constant.user_types.rr_hh') ||
$user->can('asesor-can-view-all-citas')){
return view('pages.clientes.supervisor.visitasconcretadas')-
>with(compact('empresas', 'areas','list_users','provincias'));
}else{
abort(403);
}
}
$clientes = Cliente::PotablesInteresadosSenadosDelUsuario($id);
$user = Auth::user();
//Si el usuario es Gerente o recepcion
if ($user->tipo == 4) {
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
#dd($vendedores->where('id',171));
#exit();
$asesores = User::listUserslikeView()->lists('asesor','id')->toArray();
$status = ClienteStatus::whereIn('id',
Config::get('constant.status_habilitados_consultas_post_venta'))-
>lists('status','id');
return View::make('pages.clientes.postventas.todos',
compact('empresas','asesores','subareas','provincias','status'));
} elseif($user->tipo == Config::get('constant.user_types.rr_hh') || $user-
>tipo == Config::get('constant.user_types.marketing')){
return view('errors.accesodenegado');
}
if ($this->isUserWithRestrictions($user)) {
if ($this->clientOnUser($user, $cliente)) {
return true;
}
if($this->userIsSupervisor($user)){
return true;
}
return false;
}
if ($this->isUserWithoutRestrictions($user)) {
return true;
}
return false;
}
$vendedores = User::ObtenerVendedoresDeLaEmpresa(Auth::user()->empresa);
return $vendedores;
}
private function getVendedoresyCantidadAtendidosEsperanza() {
$vendedores = User::ObtenerVendedoresDeLaEsperanza();
return $vendedores;
}
$vendedores = User::ObtenerTodosLosVendedores();
return $vendedores;
}
return $vendedores;
}
$vendedores = User::ObtenerTodosLosVendedoresYRecepcion();
return $vendedores;
}
$user = Auth::user();
return view('errors.accesodenegado');
if ($user) {
$clientes = Cliente::select('*', 'id');
//return view('pages.clientes.recepcion.repetidos', compact('clientes',
'clientes_status'));
}
}
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
$empresas = Empresa::select('nombre_empresa', 'id')->whereIn('id',
Config::get('constant.empresas_habilitadas'))->get();
return view('pages.clientes.recepcion.nointeresados',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups'));
/**
if(Auth::user()->empresa ==
Config::get('constant.empresas.la_esperanza_cba')){
$vendedores = $this->getVendedoresyCantidadAtendidosEsperanza();
return view('pages.clientes.recepcion.misclientes',
compact('vendedores','empresas'));
}
else{
$vendedores = $this->getVendedoresyCantidadAtendidos();
$empresas = Empresa::select('nombre_empresa')->whereIn('id',
[Auth::user()->empresa])->get();
return view('pages.clientes.recepcion.misclientes',
compact('vendedores','empresas'));
}
* * */
}
}
public function lesparececaro() {
//Si el usuario es recepcion
if (Auth::user()->tipo == Config::get('constant.user_types.recepcion')) {
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
return view('pages.clientes.recepcion.lesparececaro',
compact('vendedores', 'empresas'));
/**
if(Auth::user()->empresa ==
Config::get('constant.empresas.la_esperanza_cba')){
$vendedores = $this->getVendedoresyCantidadAtendidosEsperanza();
return view('pages.clientes.recepcion.misclientes',
compact('vendedores','empresas'));
}
else{
$vendedores = $this->getVendedoresyCantidadAtendidos();
$empresas = Empresa::select('nombre_empresa')->whereIn('id',
[Auth::user()->empresa])->get();
return view('pages.clientes.recepcion.misclientes',
compact('vendedores','empresas'));
}
* * */
}
}
return false;
}
private function isUserWithRestrictions($user) {
if ($user->tipo == Config::get('constant.user_types.asesor_comercial') ||
$user->tipo == Config::get('constant.user_types.supervisor') || $user->tipo ==
Config::get('constant.user_types.call_center')) {
return true;
}
return false;
}
return false;
}
$supervisor_groups = UserGroup::select('user_groups.group_id')
->join('groups', 'user_groups.group_id', '=', 'groups.id')
->where('user_id', $user->id)
->where('groups.primary', true)
->get()
->pluck('group_id')
->toArray();
$vendedor_groups = UserGroup::select('user_groups.group_id')
->join('groups', 'user_groups.group_id', '=', 'groups.id')
->where('user_id', $cliente->id_usuario)
->where('groups.primary', true)
->get()
->pluck('group_id')
->toArray();
$coincide = false;
foreach($supervisor_groups as $supervisor_group){
if (in_array($supervisor_group, $vendedor_groups)) {
$coincide = true;
}
}
return $coincide;
return false;
}
return false;
}
$user = Auth::user();
//Si el usuario es Gerente o recepcion
if ($user->tipo == 4) {
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
return view('pages.clientes.recepcion.desvinculados',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups'));
}
//si el usuario es supervisor
elseif ($user->tipo == 2){
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
$clientes = Cliente::select(
'clientes.created_at',
'clientes.fecha_asignacion',
'clientes.nombre_apellido', 'clientes.telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status', 'users.name',
'empresas.nombre_empresa',
'clientes.id','r.fecha as freunion',
'r.visitado as reunionvisitado',
'chu.updated_at as modificado_cliente'
)
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('empresas', 'clientes.id_empresa', '=', 'empresas.id')
->leftJoin('cliente_horario_update as
chu','clientes.id','=','chu.id_cliente')
->leftjoin('reuniones as r','r.id_cliente','=','clientes.id')
->whereIn('cliente_status.id', [1, 2, 4, 5, 6])
->whereNotNull('users.deleted_at');
return Datatables::of($clientes)->make(true);
}
$vendedor = Input::get('vendedor');
$clientes = Input::get('clientes');
foreach($clientes as $c){
$asignacion = $this->reasign($c,$vendedor);
}
$new_consult = $this->copy_consult($last_consult);
$c->consultas()->save($new_consult);
$tareas = Tareas::where('id_cliente', '=', $c->id)->get();
if ($asignacion != "error") {
return response()->json(['response' => 'true',
'cantidadnueva' => $cantidadnueva]);
}
$user = Auth::user();
$new_consult->id_usuario = $user->id;
$new_consult->id_origen = $last_consult->id_origen;
$new_consult->id_status = $last_consult->id_status;
$new_consult->id_producto = $last_consult->id_producto;
$new_consult->id_cliente = $last_consult->id_cliente;
$new_consult->id_razon = $last_consult->id_razon;
return $new_consult;
}
$logged_user_id = Auth::user()->id;
$now = Carbon::now();
$clientes_hoy = Cliente::select([
'clientes.query_date as query_date',
'clientes.updated_at as updated_at',
'clientes.fecha_asignacion as fecha_asignacion',
'clientes.nombre_apellido as nombre_apellido',
'clientes.telefono as telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status as status',
'users.name as name',
'groups.name as group_name',
'clientes.id as id',
'chu.updated_at as modificado_cliente'
])
return Datatables::of($clientes_hoy)->make(true);
}
$logged_user_id = Auth::user()->id;
$now = Carbon::now();
$clientes_potables = Cliente::select([
'clientes.query_date as query_date',
'clientes.updated_at as updated_at',
'clientes.fecha_asignacion as fecha_asignacion',
'clientes.nombre_apellido as nombre_apellido',
'clientes.telefono as telefono',
'clientes.contact_from as contact_from',
'clientes.contact_to as contact_to',
'cliente_status.status as status',
'users.name as name',
'groups.name as group_name',
'clientes.id as id',
'chu.updated_at as modificado_cliente'
])
return Datatables::of($clientes_potables)->make(true);
}
$logged_user_id = Auth::user()->id;
$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth();
$now = Carbon::now();
$clientes_senados = Cliente::select([
'clientes.query_date as query_date',
'clientes.nombre_apellido as nombre_apellido',
'clientes.telefono as telefono',
'cliente_status.status as status',
'users.name as name',
'groups.name as group_name',
'clientes.id as id'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_groups', 'user_groups.user_id', '=', 'users.id')
->join('groups', 'user_groups.group_id', '=', 'groups.id')
->join('proyectos', 'clientes.id', '=', 'proyectos.id_cliente')
->whereIn('user_groups.group_id', $logged_user_groups)
->whereBetween('proyectos.created_at', [$start, $end])
->where('proyectos.status', '=', 1)
->whereIn('users.tipo', [2, 3]);
return Datatables::of($clientes_senados)->make(true);
}
$logged_user_id = Auth::user()->id;
$start = Carbon::now()->startOfMonth();
$end = Carbon::now()->endOfMonth();
$now = Carbon::now();
$clientes_vendidos = Cliente::select([
'clientes.query_date as query_date',
'clientes.nombre_apellido as nombre_apellido',
'clientes.telefono as telefono',
'cliente_status.status as status',
'users.name as name',
'groups.name as group_name',
'clientes.id as id'
])
->join('cliente_status', 'clientes.status', '=',
'cliente_status.id')
->join('origens', 'clientes.id_lugar', '=', 'origens.id')
->join('users', 'clientes.id_usuario', '=', 'users.id')
->join('user_groups', 'user_groups.user_id', '=', 'users.id')
->join('groups', 'user_groups.group_id', '=', 'groups.id')
->join('proyectos', 'clientes.id', '=', 'proyectos.id_cliente')
->whereIn('user_groups.group_id', $logged_user_groups)
->whereBetween('proyectos.created_at', [$start, $end])
->where('proyectos.status', '=', 2)
->whereIn('users.tipo', [2, 3]);
return Datatables::of($clientes_vendidos)->make(true);
}
return $actividad;
}
if ($user->tipo == 2) {
return view('pages.clientes.supervisor.todos', compact('vendedores',
'empresas', 'primary_groups', 'secondary_groups'));
}
else{
return view('pages.clientes.calidad.todos', compact('vendedores',
'empresas', 'primary_groups', 'secondary_groups'));
}
}
return view('pages.clientes.vendedor.seguimientoAsignados');
}
}
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
#dd($vendedores->where('id',171));
#exit();
return view('pages.clientes.recepcion.todosllamadores',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups',
'razon','cliente_status','razon'));
}
//Si el usuario es supervisor
elseif ($user->tipo == 2){
$vendedores = $this->getTodosVendedoresyCantidadAtendidos();
$vendedor->secondary_group = $sec_groups->pluck('name');
}
$vendedores = $vendedores->sortBy('secondary_group');
#dd($vendedores->where('id',171));
#exit();
return view('pages.clientes.supervisor.todosllamadores',
compact('vendedores', 'empresas', 'primary_groups', 'secondary_groups',
'razon','cliente_status','razon'));
}
else {
return view('errors.accesodenegado');
//dd('error');
}
}
$actividad->asigned_by_id = $id_user;
$actividad->save();
ClientsActivities::register(Auth::user()->id, $id_cliente,
ClientsActivities::ASIGNADO_POR, 'Asignado Por ');
return $actividad;
}
$activity->asigned_by_id = $id_user;
$activity->save();
return true;
}
if ($user->tipo == Config::get('constant.user_types.socio_gerente') ||
$user->tipo == Config::get('constant.user_types.marketing') || $user->tipo ==
Config::get('constant.user_types.administrador') || $user->id == 500 || $user->id
== 2624) {
$provincias = Provincia::lists('nombre_provincia', 'id');
$origenes = Campaign::lists('name', 'id');
$canales = Origen::lists('nombre', 'id');
$empresas = Empresa::lists('nombre_empresa', 'id');
$asesores = User::
whereIn('tipo' ,[1,2,3,4,5,7,8] )
->where(function($q){
$q->where('tipo','<>',1)
->orWhere('id',48);
})
->lists('name','id');
$estados =
ClienteStatus::whereIn('id',Config::get('constant.status_habilitados_toda_empresa')
)->lists('status','id');
$cargos = UserTypes::lists('tipo','id');
$nombre_campana = ClientCampaign::whereNotNull('campaign_name')-
>groupBy('campaign_name')->lists('campaign_name','campaign_name');
$nombre_anuncio = ClientCampaign::whereNotNull('ad_group')-
>groupBy('ad_group')->lists('ad_group','ad_group');
$urls = ClientCampaign::whereNotNull('url')->lists('url');
foreach($urls as $key => $url){
$explode = explode("?",$url);
$urlsLanding[] = $explode[0];
}
$urlsLandingSort = array_unique($urlsLanding);
sort($urlsLandingSort);
return
view('pages.clientes.recepcion.exportar',compact('provincias','origenes','canales',
'empresas','asesores','asesoresBorrados','estados','cargos','nombre_campana','nombr
e_anuncio','arrayFinal'));
if ($user->tipo == Config::get('constant.user_types.supervisor')){
$empresas =
Empresa::whereIn('empresas.id',Config::get('constant.empresas_habilitadas'))-
>lists('nombre_empresa', 'id');
$cargos = UserTypes::whereIn('id',[3,5])->lists('tipo','id');
$grupos = UserGroup::getUserGroups($user->id);
$asesores = User::listUserslikeViewSupervisor($grupos)-
>lists('name','id');
$groups = Group::whereIn('id',$grupos)->orWhere('primary',false)-
>lists('name','id');
return
view('pages.clientes.supervisor.clientes_por_asesor',compact('empresas','asesores',
'groups','cargos'));
} else {
return view('errors.accesodenegado');
}
}
public function clientes_exportar_generate_excel(Request $request){
set_time_limit(0);
$url_previus = substr(URL::previous(),-20,20);
$time_start = time();
if($url_previus == 'seguimiento_usuarios'){
$clientes = Cliente::postventasTodos($request);
} else {
$clientes = Cliente::exportQuery($request);
}
$time_query = time() - $time_start ;
if($url_previus == 'seguimiento_usuarios'){
$filename = 'clientesPostVenta_'.time().'.csv';
} else {
$filename = 'clientes_'.time().'.csv';
}
$time_start = time();
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
if($url_previus == 'seguimiento_usuarios'){
$writer->addRow( ['Fecha Asignación','Fecha Actualización','Fecha
Creación','Fecha Seña','Fecha Venta','Fecha Contrato','Dias Contrato','Id.
Cliente','Nombre y Apellido','Provincia','Empresa','Asignado a', 'Vendido
por','Status','Subarea','Seña','Entrega','Total']);
} else {
$writer->addRow( ['Id','Fecha Creación','Fecha Consulta','Fecha
Asignación','Fecha Actualizacion','Fecha Construccion','Nombre y
Apellido','Provincia','Email','Teléfono', 'Horario de
Contacto','Origen','Canal','Nombre Campaña','Grupo
AD','URL','Empresa','Status','Razón' , 'Asesor' , 'Numero de
comentarios','Calificado por']);
}
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
$clientes = Cliente::postventasTodos($request);
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
if(isset($request->visitado))$clientes->whereIn('reuniones.visitado',
$request->visitado);
if(!empty($request->id_empresa))$clientes->whereIn('empresas.id', $request-
>id_empresa);
if(!empty($request->areas))$clientes->whereIn('areas.id', $request->areas);
if(!empty($request->fecha_visita))$clientes-
>whereBetween('reuniones.fecha', [Utils::startdate($request->fecha_visita),
Utils::enddate($request->fecha_visita)]);
if(!empty($request->fecha_creacion))$clientes-
>whereBetween('reuniones.created_at', [Utils::startdate($request->fecha_creacion),
Utils::enddate($request->fecha_creacion)]);
if(!empty($request->client_nombre))$clientes-
>where('clientes.nombre_apellido', 'like', '%'.$request->client_nombre.'%');
if(!empty($request->asignado_a)){
if(count($request->asignado_a)== 1){
$clientes->where('users.id',$request->asignado_a);
} else {
$clientes->whereIn('users.id',$request->asignado_a);
}
}
if(!empty($request->created_by)){
if(count($request->created_by) == 1){
$clientes->where('usersl.id',$request->created_by);
} else {
$clientes->whereIn('usersl.id',$request->created_by);
}
}
if(!empty($request->donde))$clientes->whereIn('reuniones.donde',$request-
>donde);
if(!empty($request->provincia))$clientes->whereIn('provincias.id',$request-
>provincia);
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
$writer->addRow(['ID Reunion','ID Cliente','Fecha Creación', 'Fecha de
Visita', 'Nombre Cliente', 'Teléfono', 'Asignado A', 'Creado Por',
'Grupo','Empresa','Visitado', 'Donde', 'Provincia']);
$clientes->chunk(5000, function($rows) use ($writer){
foreach($rows as $row){
switch($row->visitado){
case '0':
$row->visitado = 'NO';
break;
case '1':
$row->visitado = 'SI';
break;
case '2':
$row->visitado = 'CANCELADO';
break;
}
}
$writer->addRows($rows->toArray());
},false);
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()->json(['success'=>true,'url'=>url('excel/'.$filename),
'time_query'=>$time_query,'time_excel'=>$time_excel]);
}
set_time_limit(0);
$time_start = time();
$clientes = Cliente::exportQueryForIssabel($request);
$clientes = $clientes->get();
$filename = 'clientes_para_wapi_'.time().'.csv';
$time_start = time();
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
$rows = [];
foreach($clientes as $cliente){
$parcial = substr($cliente->telefono,0,3);
if($parcial == '549'){
$parcial = substr($cliente->telefono,3);
} else {
$parcial = $cliente->telefono;
}
$cliente = [
'nombre_apellido' => $cliente->nombre_apellido,
'telefono' => (int)$parcial
];
array_push($rows,$cliente);
}
$writer->addRows($rows);
$writer->addRows($rows->toArray());
},false);*/
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
$time_start = time();
$clientes = Cliente::exportQueryForGoogle($request);
$clientes = $clientes->get();
$filename = 'clientes_para_google_'.time().'.csv';
$time_start = time();
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
$writer->addRow(['Email','First Name','Last Name', 'Country', 'Zip',
'Phone']);
$rows = [];
foreach($clientes as $cliente){
$parcial = substr($cliente->telefono,0,3);
if($parcial == '549'){
$parcial = $cliente->telefono;
} else {
$parcial = '549'.$cliente->telefono;
}
$cliente = [
'email' => !empty($cliente->email)?$cliente->email:'void',
'first_name' => $cliente->nombre_apellido,
'last_name' => $cliente->nombre_apellido,
'country' => 'AR',
'zip' => $cliente->cp,
'phone' => '+'.$parcial
];
array_push($rows,$cliente);
}
$writer->addRows($rows);
$extract = $row->telefono;
$row->telefono = '99'.$extract;
$writer->addRows($rows->toArray());
},false);*/
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
$time_start = time();
$clientes = Cliente::exportQueryForDoppler($request);
$clientes = $clientes->get();
$filename = 'clientes_para_doppler_'.time().'.csv';
$time_start = time();
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
$writer->addRow(['email','nombre','apellido']);
$rows = [];
foreach($clientes as $cliente){
$cliente = [
'email' => !empty($cliente->email)?$cliente->email:'void',
'nombre' => $cliente->nombre_apellido,
'apellido' => $cliente->nombre_apellido
];
array_push($rows,$cliente);
}
$writer->addRows($rows);
$extract = $row->telefono;
$row->telefono = '99'.$extract;
$writer->addRows($rows->toArray());
},false);*/
$writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
$time_start = time();
$clientes = Cliente::exportQueryForWpp($request);
$clientes = $clientes->get();
$filename = 'clientes_para_wpp_'.time().'.csv';
$time_start = time();
$writer = WriterFactory::create(Type::CSV);
$writer->openToFile('excel/'.$filename);
/* $writer->addRow(['email','nombre','apellido']); */
/* $rows = [];
foreach($clientes as $cliente){
$parcial = substr($cliente->telefono,0,3);
if($parcial == '549'){
$parcial = substr($cliente->telefono,3);
} else {
$parcial = $cliente->telefono;
}
$cliente = [
'nombre_apellido' => $cliente->nombre_apellido.',',
'telefono' => $parcial,
'id' => $cliente->id,
];
array_push($rows,$cliente);
}
$writer->addRows($rows); */
$extract = $row->telefono;
$row->telefono = '99'.$extract;
$writer->addRows($rows->toArray());
},false);*/
/* $writer->close();
$this->clientes_exportar_delete_old_exports();
return response()
->json(['success' => true, 'url' => url('excel/'.
$filename) ,'time_query' => $time_query , 'time_excel' => $time_excel]);
} */
function clientes_exportar_delete_old_exports(){
if($c->count() == 0){
return response()->json(['status'=>true, 'detalle'=>'No se realizo
ninguna asignacion, los filtros elegidos no devolvieron ningun cliente']);
};
if($vendedores->count() == 0){
return response()->json(['status'=>true, 'detalle'=>'No se realizo
ninguna asignacion, no hay vendedores elegidos']);
};
Log::info('=====================================');
Log::info('INICIO DE REASIGNACION MASIVA MANUAL REALIZADA POR USUARIO
ID: '.Auth::user()->id.'');
$vendedores_string = "";
foreach($vendedores_collection as $key => $value)
{ $vendedores_string .= '['.$value['id'].','.$value['nclientes'].']'; }
Log::info('Listado de vendedores: [id,nclientes] '.$vendedores_string);
$result = [];
$result_count = 0;
$result_count_excepciones = 0;
if(!is_null($ultima_reunion)){
if($ultima_reunion->visitado == 0 &&
(Carbon::parse($ultima_reunion->fecha) > Carbon::now())){
$result_count_excepciones ++;
continue;
}
}
if($cliente->status == Config::get('constant.cliente_status.cita'))
{
$cliente->status =
Config::get('constant.cliente_status.para_reciclar');
$cliente->save();
}
$vendedor_selected = $vendedores_collection->pop();
if($this->asignar($cliente->id,$vendedor_selected['id'])){
$result[$vendedor_selected['id']][] = $cliente->id ;
$result_count++;
$vendedores_collection->push(['id' => $vendedor_selected['id'],
'nclientes' => $vendedor_selected['nclientes'] + 1]);
}else{
$vendedores_collection->push(['id' => $vendedor_selected['id'],
'nclientes' => $vendedor_selected['nclientes']]);
}
if($clientes->count() == 0){
return response()->json(['status'=>true, 'detalle'=>'No se realizo
ninguna asignacion, los filtros elegidos no devolvieron ningun cliente']);
};
Log::info('=====================================');
Log::info('INICIO DE CAMBIO DE ESTADO MASIVO MANUAL REALIZADO POR
USUARIO ID: '.Auth::user()->id.'');
$count_clientes = 0;
$count_total = 0;
foreach ($clientes as $c) {
$c->status = $request->nuevo_status;
$c->id_razon = $request->nuevo_substatus;
if($c->save()){
$count_clientes++;
}
$count_total++;
}
Log::info('Se le cambio el estado a '.$count_clientes.' clientes de un
total de '.$count_total.'.');
Log::info('=====================================');
switch($user->tipo){
case 1:
return view('pages.clientes.misclientes_status',compact('status'));
break;
case 2:
if ($status != "a plazo"){
return
view('pages.clientes.misclientes_status',compact('status'));
}else{
return view('errors.accesodenegado');
}
break;
case 3:
if ($status != "a plazo"){
return
view('pages.clientes.misclientes_status',compact('status'));
}else{
return view('errors.accesodenegado');
}
break;
case 4:
return view('pages.clientes.misclientes_status',compact('status'));
break;
case 5:
if ($status != "a plazo"){
return
view('pages.clientes.misclientes_status',compact('status'));
}else{
return view('errors.accesodenegado');
}
break;
case 8:
return view('pages.clientes.misclientes_status',compact('status'));
break;
default:
return view('errors.accesodenegado');
break;
}
if($request->ajax()){
$clientes = Reuniones::select([
'reuniones.id as id_reunion',
'clientes.id',
'clientes.dni',
'clientes.telefono',
'clientes.voucher_num',
'clientes.email',
'users.id as id_user',
'users.name as asignado_name',
'usersl.name as llamador_name',
'clientes.nombre_apellido',
'empresas.nombre_empresa',
'reuniones.fecha as fecha_visita',
'reuniones.visitado',
'reuniones.contactado',
'reuniones.donde',
'reuniones.voucher_num as voucher_num_cita'
])->join('clientes','reuniones.id_cliente','=','clientes.id')
->join('users','clientes.id_usuario','=','users.id')
->join('empresas','clientes.id_empresa','=','empresas.id')
->join('users as
usersl','reuniones.creado_por','=','usersl.id');
if(!empty($request->empresa))$clientes->whereIn('empresas.id',
$request->empresa);
if(!empty($request->client_nombre))$clientes-
>where('clientes.nombre_apellido', 'like', '%'.$request->client_nombre.'%');
if(!empty($request->donde))$clientes->whereIn('reuniones.donde',
$request->donde);
if(!empty($request->client_tel))$clientes-
>where('clientes.telefono','like','%'.$request->client_tel.'%');
if(!empty($request->client_mail))$clientes-
>where('clientes.email','like','%'.$request->client_mail.'%');
if(!empty($request->client_dni))$clientes->where('clientes.dni',
$request->client_dni);
if(!empty($request->voucher_num))$clientes-
>where('clientes.voucher_num',$request->voucher_num);
if(!empty($request->voucher_cita))$clientes-
>where('reuniones.voucher_num',$request->voucher_cita);
$clientes->whereBetween('reuniones.fecha',[Carbon::now()-
>startOfDay(),Carbon::now()->endOfDay()]);
return Datatables::of($clientes)->make(true);
}
$empresas = Empresa::whereIn('id',[1,2,5,8,9,11])-
>lists('nombre_empresa','id');
$list_users = User::whereIn('tipo',[2,3,4,5])->lists('name','id');
return view('pages.clientes.supervisor.visitashoy',
compact('empresas','list_users'));
} else {
return view('errors.accesodenegado');
}
}
$user = Auth::user();
if($user->id == 457){
$areaEmisora = 3;
}else{
$areaEmisora = UserAreas::where('user_id',$user->id)->first()-
>subarea_id;
}
$newPeticion->id_AreaEmisora = $areaEmisora;
$newPeticion->id_UsuarioEmisor= $user->id;
$newPeticion->id_AreaReceptora= $request->areaReceptora;
$newPeticion->id_EstadoPeticion = 1;
$newPeticion->id_cliente = $request->id_cliente;
$newPeticion->asunto = $request->asunto;
$newPeticion->mensaje = $request->mensaje;
if($newPeticion->save()){
$historial_peticiones->id_peticion = $newPeticion->id;
$historial_peticiones->id_usuario = $newPeticion->id_UsuarioEmisor;
$historial_peticiones->id_cliente = $newPeticion->id_cliente;
$historial_peticiones->id_estado = 1;
if($historial_peticiones->save()){
if($request) $request->session()->flash('alert-success', 'La
petición fue enviada con éxito!');
return redirect()->route('clientes.show',$request->id_cliente);
} else {
if($request) $request->session()->flash('alert-danger', 'Hubo un
problema al enviar la peticion');
}
}
}
$financiacion->save();
if($request->interes_cita == 'true'){//Interesado en tener cita
if($request->se_pacto == 'true'){//Se pudo pactar
$cita = $request->agendacita;
$parsed_date = Carbon::parse($cita['cuandocita']);
$cliente->status =
Config::get('constant.cliente_status.cita');
$new_s_stadistic = new StatusStadistics();
$new_s_stadistic->id_cliente = $cliente->id;
$new_s_stadistic->id_usuario = $usuario->id;
$new_s_stadistic->status = $cliente->status;
$new_s_stadistic->created_at = $ahora;
$new_s_stadistic->updated_at = $ahora;
$new_s_stadistic->save();
ClientsActivities::register($usuario->id,$cliente-
>id,ClientsActivities::CLASIFICACION_AUTOMATICA,'Cita Creada');
Log::info('NUEVA CITA PACTADA POR '.$usuario->name.'!!!
Cliente Nro: '.$cliente->id);
}
elseif($request->se_pacto == 'limit'){//Se llego al limite de
citas
$cliente->status = $usuario->tipo ==
Config::get('constant.user_types.call_center')?
Config::get('constant.cliente_status.a_confirmar'):Config::get('constant.cliente_st
atus.pendiente');
$new_s_stadistic = new StatusStadistics();
$new_s_stadistic->id_cliente = $cliente->id;
$new_s_stadistic->id_usuario = $usuario->id;
$new_s_stadistic->status = $cliente->status;
$new_s_stadistic->created_at = $ahora;
$new_s_stadistic->updated_at = $ahora;
$new_s_stadistic->save();
ClientsActivities::register($usuario->id,$cliente-
>id,ClientsActivities::CLASIFICACION_AUTOMATICA,'Cita a confirmar');
Log::info('CLIENTE PUESTO A CONFIRMAR POR '.$usuario-
>name.' (limite de citas alcanzado)!!! Cliente Nro: '.$cliente->id);
}
elseif($request->se_pacto == 'false'){//No se pudo pactar
$tarea = $request->agendatarea;
$tarea['cuandotarea'] =
Carbon::parse($tarea['cuandotarea']);
$recordatorio = new Tareas();
$recordatorio->nombre = $tarea['tengoque'];
$recordatorio->fecha = $tarea['cuandotarea'];
$recordatorio->id_usuario = $usuario->id;
$recordatorio->id_cliente = $cliente->id;
$recordatorio->created_at = $ahora;
$recordatorio->updated_at = $ahora;
$recordatorio->save();
$cliente->status = $usuario->tipo ==
Config::get('constant.user_types.call_center')?
Config::get('constant.cliente_status.a_confirmar'):Config::get('constant.cliente_st
atus.pendiente');
$new_s_stadistic = new StatusStadistics();
$new_s_stadistic->id_cliente = $cliente->id;
$new_s_stadistic->id_usuario = $usuario->id;
$new_s_stadistic->status = $cliente->status;
$new_s_stadistic->created_at = $ahora;
$new_s_stadistic->updated_at = $ahora;
$new_s_stadistic->save();
ClientsActivities::register($usuario->id,$cliente-
>id,ClientsActivities::CLASIFICACION_AUTOMATICA,'Cita a confirmar');
Log::info('CLIENTE PUESTO A CONFIRMAR POR '.$usuario-
>name.'!!! Cliente Nro: '.$cliente->id);
}
} elseif($request->interes_cita == 'false'){//No interesado en
tener cita
if($request->interes_vendedor == 'true'){
$cliente->status =
Config::get('constant.cliente_status.filtrado');
//Asigno el dato a Ventas según sea tipo A o no
//Asigno el dato a vendedores que no sean de LE y LEC
/* if($cliente->tipo_cliente ==
Config::get('constant.cliente_type.A')){
//Jesus Gimenez, Evelyn Ozan, Lucas Arias, Christian
Rouanet
$vendedores = User::whereIn('id',[107,15,2532,2534])-
>get();
} else {
//Carla Acosta, Pablo Toranzo, Matias Hereñu, Marcos
Bengston
$vendedores = User::whereIn('id',[543,2529,2530,2531])-
>get();
} */
//perfil de vendedor para Javier Miglierini 2697, no recibe
datos filtrados, solo asignación manual.
/* $filtrados_particular =
array(41,301,2646,2719,2732,2751,2752);
$random_keys=array_rand($filtrados_particular,4);
$vendedores = User::whereIn('tipo',[2,3])
->where('suspendido','!=',1)
->where('id', $filtrados_particular[$random_keys[0]])
->get(); */
$vendedores = User::where('tipo',3)
->where('suspendido','!=',1)
->whereNotIn('id',
[500,107,15,41,464,434,392,2588,563,2595,559,518,52,457,2622,2697])
->whereNotIn('empresa', [1, 15, 6])
->get();
foreach($vendedores as $seller){
$cantClient = DB::table('clientes')-
>where('id_usuario',$seller->id)->whereBetween('fecha_asignacion',
[Carbon::today(), Carbon::now()])->count();
$seller->total = $cantClient;
}
$elegido = $vendedores->sortBy('total')->first();
if(!empty($request->empresa))$clientes->whereIn('empresas.id', $request-
>empresa);
if(!empty($request->client_nombre))$clientes-
>where('clientes.nombre_apellido', 'like', '%'.$request->client_nombre.'%');
if(!empty($request->donde))$clientes->whereIn('reuniones.donde',$request-
>donde);
if(!empty($request->client_tel))$clientes-
>where('clientes.telefono','like','%'.$request->client_tel.'%');
if(!empty($request->client_mail))$clientes-
>where('clientes.email','like','%'.$request->client_mail.'%');
if(!empty($request->client_dni))$clientes->where('clientes.dni',$request-
>client_dni);
if(!empty($request->voucher_num))$clientes->where('clientes.voucher_num',
$request->voucher_num);
$clientes->whereBetween('reuniones.fecha',[Carbon::now()-
>startOfDay(),Carbon::now()->endOfDay()]);
$clientes = $clientes->get();
return response()->json(['status' => true ,'clientes' => $clientes]);
}
if ($cliente[0]->usuario_asignado){
$files = $avatars->allFiles($cliente[0]->usuario_asignado);
if(!empty($files)){
$cliente[0]->avatar = '/avatars/'.$files[0];
} else {
$cliente[0]->avatar =
'/bower_components/admin-lte/dist/img/avatar7.png';
}
}
//no es vendedor
if($creador->tipo != 3){
$usuario_asignado = $this->asignar_cita_automatica();
$id_creador = $usuario_asignado['id'];
$files = $avatars->allFiles($id_creador);
if(!empty($files)){
$usuario_asignado['avatar'] = '/avatars/'.$files[0];
} else {
$usuario_asignado['avatar'] =
'/bower_components/admin-lte/dist/img/avatar7.png';
}
}
//es vendedor
else{
if($creador->deleted_at){
//usuario eliminado
$useraux = 0;
$userdetalle = 'Asignado porque '.$creador->name.' esta
eliminado - ESPERANDO APROBACIÓN DEL VENDEDOR';
}else{
//obtenemos el presente
$declaracion = DeclaracionJurada::select('id')
->where('id_usuario' , $creador->id)
->whereBetween('declaraciones_juradas.created_at',
[$dia_inicio, $dia_fin])
->groupBy('declaraciones_juradas.id_usuario')
->count();
//obtenemos el disponible
$disponible = User::select('id')->where('id' , $creador->id)-
>where('users.estado',1)->count();
//obtenemos el activity
$activo = \Kim\Activity\Activity::usersBySeconds(35)->select([
'users.id',
'users.name',
'sessions.last_activity'
])
->join('users','users.id','=','sessions.user_id')
->where('users.id' , $creador->id)
->count();
}else{
if ($declaracion==0){
$useraux = 0;
$userdetalle = 'Asignado porque '.$creador->name.'
no esta presente - ESPERANDO APROBACIÓN DEL VENDEDOR';
}elseif ($disponible==0){
$useraux = 0;
$userdetalle = 'Asignado porque '.$creador->name.'
no esta disponible - ESPERANDO APROBACIÓN DEL VENDEDOR';
}elseif ($activo==0){
$useraux = 0;
$userdetalle = 'Asignado porque '.$creador->name.'
no esta logueado en el sistema - ESPERANDO APROBACIÓN DEL VENDEDOR';
}
}
}
}
if($useraux==1){
//el vendedor esta disponible y presente ese dia
$usuario_asignado = $creador->toArray();
$id_creador = $creador->id;
$files = $avatars->allFiles($id_creador);
if(!empty($files)){
$usuario_asignado['avatar'] = '/avatars/'.$files[0];
} else {
$usuario_asignado['avatar'] = '/bower_components/admin-
lte/dist/img/avatar7.png';
}
}
elseif($useraux==2){
//el vendedor asigna quien recibe al cliente
$id_creador = $reunion->usuario_asignado;
$usuario_asignado = User::withTrashed()->where('id',
$id_creador)->firstOrFail()->toArray();
$files = $avatars->allFiles($id_creador);
if(!empty($files)){
$usuario_asignado['avatar'] = '/avatars/'.$files[0];
} else {
$usuario_asignado['avatar'] = '/bower_components/admin-
lte/dist/img/avatar7.png';
}
}else{
//el vendedor no esta por X motivo
$usuario_asignado = $this->asignar_cita_automatica();
$id_creador = $usuario_asignado['id'];
$files = $avatars->allFiles($id_creador);
if(!empty($files)){
$usuario_asignado['avatar'] = '/avatars/'.$files[0];
} else {
$usuario_asignado['avatar'] = '/bower_components/admin-
lte/dist/img/avatar7.png';
}
}
}
if($fecha_cita == $fecha_hoy){
//notificamos al vendedor
if (!empty($id_creador)){
$this->addNotiCita($client->id, $id_creador, $reunion->id,
$useraux, $client->id_empresa);
}
if($reunion->visitado == 0){
$reunion->visitado = 1;
$reunion->usuario_asignado = null;
if($reunion->save()){
if($useraux==1) {
ClientsActivities::register($id_creador, $reunion-
>id_cliente, ClientsActivities::ASIGNA_CITA_MISMO, null);
}
elseif($useraux==2){
ClientsActivities::register($id_creador, $reunion-
>id_cliente, ClientsActivities::ASIGNA_CITA_MISMO, $userdetalle);
}
else{
if (!empty($id_creador)){
ClientsActivities::register($id_creador, $reunion-
>id_cliente, ClientsActivities::ASIGNAR_CITA_ALEATORIO, $userdetalle);
}
}
if (!empty($id_creador)) {
return response()->json(['tipo' => 'cita', 'status' =>
'true', 'id_reu' => $reunion->id]);
}else{
return response()->json(['tipo'=>'cita', 'status' =>
'false', 'info' => 'No se encuentran vendedores disponibles, contacta con
recepción.']);
}
} else {
return response()->json(['tipo'=>'cita', 'status' =>
'false', 'info' => 'Ocurrio un problema para confirmar la cita.']);
}
}
elseif ($reunion->visitado == 1){
return response()->json(['tipo'=>'cita', 'status' => 'true',
'info' => 'Esta cita fue confirmada previamente.']);
}
else{
return response()->json(['tipo'=>'cita', 'status' => 'true',
'info' =>'No puedes confirmar una cita que se encuentra cancelada.']);
}
}else{
return response()->json(['tipo'=>'cita', 'status' => 'false',
'info' => 'Hoy no es la fecha de la cita.']);
}
}
else{
return view('errors.accesodenegado');
}
}
$users = User::select([
'users.id as id',
'users.name as name'
])
->rightjoin('declaraciones_juradas',
'declaraciones_juradas.id_usuario', '=', 'users.id')
->whereBetween('declaraciones_juradas.created_at', [$dia_inicio,
$dia_fin])
->where('users.tipo',3)
->where('users.suspendido','!=',1)
->where('users.allow_supervisor',1)
->where('users.estado',1)
->orderBy('declaraciones_juradas.created_at','desc')
->groupBy('declaraciones_juradas.id_usuario')
->get();
$ultimosQuinceVentas = \Kim\Activity\Activity::usersBySeconds(35)->select([
'users.id',
'users.name',
'sessions.last_activity'
])
->join('users','users.id','=','sessions.user_id')
-
>where('users.tipo',Config::get('constant.user_types.asesor_comercial'))
->get()
->sortByDesc('last_activity');
$cita_cant = 0;
foreach ($users as $user){
$cita_cant = ClientsActivities::select('id')
->where('id_usuario',$user->id)
->where('tipo',29)
->whereBetween('clients_activities.created_at', [$mes_inicio,
$mes_fin])
->count();
$user->cantidad = $cita_cant;
}
$users = $users->toArray();
usort($users, function($a,$b){
if ($a['cantidad'] == $b['cantidad']) {
return 0;
}
return ($a['cantidad'] > $b['cantidad']) ? 1 : -1;
});
if($users){
$usuario_asignado = $users[0];
}else{
$usuario_asignado = false;
}
return $usuario_asignado;
}
if(!empty($notiCita->ids)){
$notiCita->ids = json_decode($notiCita->ids);
$esta = false;
foreach($notiCita->ids->ids as $key => $client){
$jclient = json_decode($client);
if($jclient->id == $cliente->id){
$esta = true;
}
}
if(!$esta){
$data_client = [
"name" => $cliente->nombre_apellido,
"id" => $cliente->id,
"id_reunion" => $id_reunion,
"id_empresa" => $id_empresa,
"useraux" => $useraux
];
array_push($notiCita->ids->ids,json_encode($data_client));
$notiCita->cant++;
$notiCita->ids = json_encode($notiCita->ids);
} else {
$notiCita->ids = json_encode($notiCita->ids);
}
Log::info('NOTICITA INSERTADO EN '.$id_usuario.' NOT NULL (CLIENTE:'.
$cliente->id.')');
} else {
$notiCita->cant++;
$data_client = [
"name" => $cliente->nombre_apellido,
"id" => $cliente->id,
"id_reunion" => $id_reunion,
"id_empresa" => $id_empresa,
"useraux" => $useraux
];
$data_final = [
"ids" => [json_encode($data_client)]
];
$notiCita->ids = json_encode($data_final);
Log::info('NOTICITA INSERTADO EN '.$id_usuario.' NULL (CLIENTE:'.
$cliente->id.')');
}
$notiCita->save();
}
$useres = User::where('id',$id_usuario)->firstOrFail();
$useres->estado = 0;
$useres->save();
}else{
$userdetalle = 'Cita Rechazada por';
}
ClientsActivities::register($id_usuario, $id_cliente,
ClientsActivities::ASIGNA_CITA_MISMO, $userdetalle);
//buscamos otro usuario
$usuario_asignado = $this->asignar_cita_automatica();
$id_creador = $usuario_asignado['id'];
$useraux_new = 0;
$id_empresa = Cliente::where('id',$id_cliente)->pluck('id_empresa');
ClientsActivities::register($id_creador, $id_cliente,
ClientsActivities::ASIGNAR_CITA_ALEATORIO, null);
$this->addNotiCita($id_cliente, $id_creador, $id_reunion, $useraux_new,
$id_empresa);