public function guardar(Request $request) { $codigo = $request->input('codigo'); $entrada = Entrada::where('codigo', $codigo)->first(); $entrada->base_grava = $request->input('Esubtotal'); $entrada->total = $request->input('Etotal'); $detalles = DetalleEntrada::where('compra_id', $entrada->codigo)->get(); foreach ($detalles as $key => $value) { $producto = Producto::where('codigo', $value->producto_id)->first(); $producto->stock += $value->cantidad; $producto->save(); } $entrada->estado = 1; $entrada->save(); $kardex = new Kardex(); $kardex->factcmp_id = $entrada->codigo; $kardex->tipo_entrdsald = 1; $kardex->estado = 1; $kardex->save(); $empresa = Empresa::where('id', 1)->first(); $empresa->conse_entrada = $entrada->codigo; $empresa->save(); $msg = 'Se ha guardado la entrada.'; return redirect()->route('entradas')->with('status', $msg); }
public function desempenho() { $usuario = Auth::User(); $novos_clientes = Empresa::where(DB::raw('MONTH(dataCadastro)'), '=', date('n'))->where('idVendedor', '=', $usuario)->count(); // dd($novos_clientes); return view('Vendedor.Desempenho')->with("novos_clientes", $novos_clientes); }
/** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $empresaslista = Empresa::orderBy('nombre', 'ASC')->lists('nombre', 'nombre'); $localidades = Localidad::orderBy('nombre', 'ASC')->lists('nombre', 'id'); $rubros = Rubro::orderBy('nombre', 'ASC')->lists('nombre', 'id'); $view->with('rubros', json_decode($rubros, true))->with('empresaslista', json_decode($empresaslista, true))->with('localidades', json_decode($localidades, true)); }
/** * Create a new user instance after a valid registration. * * @param array $data * @return User */ protected function create(array $data) { if (isset($data['comprador'])) { $comprador = $data['comprador']; } else { $comprador = 0; } if (isset($data['vendedor'])) { $vendedor = $data['vendedor']; } else { $vendedor = 0; } if (isset($data['gestor'])) { $gestor = $data['gestor']; } else { $gestor = 0; } //$request = Request::all(); $file = $data['file']; $nombre = $file->getClientOriginalName(); $hash = hash_file('md5', $file); \Storage::disk('local')->put("/camara/" . $nombre, \File::get($file)); Empresa::create(['idEmpresa' => $data['email'], 'nombre' => $data['name'], 'nit' => $data['nit'], 'comprador' => $comprador, 'vendedor' => $vendedor, 'gestor' => $gestor, 'razonSocial' => $data['razonSocial'], 'idEmpresaResiduo' => $data['residuo'], 'telefono' => $data['telefono'], 'direccion' => $data['direccion'], 'camara' => $nombre, 'hash' => $hash]); return User::create(['name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password'])]); }
public function guardar(Request $request) { $this->validate($request, ['nombre' => 'required', 'codigo' => 'required', 'tipo' => 'required']); $tipo = $request->input('tipo'); $padre = $request->input('padre'); if ($tipo == 2 && !isset($padre)) { return redirect()->route('grupos_nuevo')->withErrors(['Si el grupo es hijo, debe indicar un grupo padre.']); } if ($request->input('edit')) { $grupo = Grupo::where('codigo', $request->input('codigo'))->first(); $msg = 'Se ha editado el grupo ' . $request->input('nombre'); } else { $grupo = new Grupo(); $msg = 'Se ha creado el grupo ' . $request->input('nombre'); } $grupo->nombre = $request->input('nombre'); $grupo->codigo = $request->input('codigo'); $grupo->tipo = $tipo == 1 ? 1 : $padre; $grupo->save(); if (!$request->input('edit')) { $empresa = Empresa::where('id', 1)->first(); $empresa->conse_grupos = $grupo->codigo; $empresa->save(); } return redirect()->route('grupos')->with('status', $msg); }
/** * Rota para ser acessada por post para trocar a entidadeAtiva, * @param $id id da entidade a ser acessada * @todo a ser deprecated, criado um metodo PaginaController@getAcessarcomo($id, $tipo) */ public function postTrocaentidadeativa($id, Request $request) { $entidadeAtiva_id = $id; $entidadeAtiva_tipo = $request->get('entidadeAtiva_tipo'); if ($entidadeAtiva_tipo && $entidadeAtiva_id) { $entidadeExiste = false; switch ($entidadeAtiva_tipo) { case 'ong': # Retorna a ong na lista de ongs do usuario, ou o perfil $ong = Ong::find($entidadeAtiva_id); $entidadeExiste = $ong ? true : false; break; case 'empresa': # Retorna a empresa na lista de empresas do usuario, ou o perfil $empresa = Empresa::find($entidadeAtiva_id); $entidadeExiste = $empresa ? true : false; break; default: break; } if ($entidadeExiste) { Session::put('entidadeAtiva_id', $entidadeAtiva_id); Session::put('entidadeAtiva_tipo', $entidadeAtiva_tipo); return redirect('conectar'); } } }
public function guardar(Request $request) { $this->validate($request, ['nombre' => 'required', 'codigo' => 'required|numeric', 'descripcion' => 'required', 'padre' => 'required|numeric', 'hijo' => 'required|numeric', 'costo' => 'required|numeric', 'pvp1' => 'required|numeric', 'pvp2' => 'required|numeric', 'pvp3' => 'required|numeric', 'color' => 'required']); $codigo = $request->input('codigo'); $existe = Producto::where('codigo', $codigo)->first(); if ($request->input('edit') && isset($existe)) { $producto = $existe; $msg = 'Se ha editado el producto ' . $producto->nombre; } else { if (isset($existe)) { return redirect()->route('productos_nuevo')->withErrors(['El código ingresado ya existe.']); } $producto = new Producto(); $msg = 'Se ha creado el producto '; } $producto->codigo = $request->input('codigo'); $producto->nombre = $request->input('nombre'); $producto->descripcion = $request->input('descripcion'); $producto->marca_id = $request->input('hijo'); $producto->costo = $request->input('costo'); $producto->pvp1 = $request->input('pvp1'); $producto->pvp2 = $request->input('pvp2'); $producto->pvp3 = $request->input('pvp3'); $producto->pvp4 = $request->input('pvp4'); $producto->pvp5 = $request->input('pvp5'); $producto->color = $request->input('color'); $producto->estado = 1; $producto->save(); if (!$request->input('edit')) { $empresa = Empresa::where('id', 1)->first(); $empresa->conse_productos = $producto->codigo; $empresa->save(); } return redirect()->route('productos')->with('status', $msg); }
public function calcIndiceCrecimiento(Request $request) { $inicio = $request->get('inicio'); $fin = $request->get('fin'); // Empresas que han comprado en el rango de tiempo $empresas = Empresa::all(); $empresas = $empresas->filter(function ($empresa) use($inicio, $fin) { $protocolos = $empresa->protocolos; foreach ($protocolos as $protocolo) { $fecha = $protocolo->created_at; if ($fecha >= $inicio && $fecha <= $fin) { return true; } } return false; }); // Total de empresas $total = $empresas->count(); // De tales empresas cuántas son nuevas? $nuevas = 0; foreach ($empresas as $empresa) { if ($empresa->created_at >= $inicio) { ++$nuevas; } } $respuesta['indice'] = 100 * $nuevas / $total; $respuesta['nuevas'] = $nuevas; $respuesta['antiguas'] = $total - $nuevas; return $respuesta; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $empresa = new \App\Empresa(); $empresa->find($id)->delete(); //$book->delete(); return redirect('empresas'); }
public function guardar(Request $request) { $this->validate($request, ['nombre' => 'required', 'codigo' => 'required', 'apellido' => 'required', 'ruc' => 'required', 'ciudad' => 'required', 'telefono' => 'required', 'celular' => 'required', 'email' => 'required', 'direccion' => 'required', 'lista' => 'required']); $codigo = $request->input('codigo'); $existe = User::where('codigo', $codigo)->where('tipo_id', 2)->first(); if ($request->input('edit') && isset($existe)) { $cliente = $existe; $msg = 'Se ha editado el Cliente ' . $cliente->nombre . ' ' . $cliente->apellido; } else { if (isset($existe)) { return redirect()->route('clientes_nuevo')->withErrors(['El código ingresado ya existe.']); } $cliente = new User(); $msg = 'Se ha creado el cliente.'; } $cliente->codigo = $request->input('codigo'); $cliente->nombre = $request->input('nombre'); $cliente->apellido = $request->input('apellido'); $cliente->ruc = $request->input('ruc'); $cliente->ciudad_id = $request->input('ciudad'); $cliente->telefono = $request->input('telefono'); $cliente->celular = $request->input('celular'); $cliente->email = $request->input('email'); $cliente->direccion = $request->input('direccion'); $cliente->tipo_lista = $request->input('lista'); $cliente->tipo_id = 2; $cliente->save(); if (!$request->input('edit')) { $empresa = Empresa::where('id', 1)->first(); $empresa->conse_cliente = $cliente->codigo; $empresa->save(); } return redirect()->route('clientes')->with('status', $msg); }
/** * Metodo para trocar a entidadeAtiva atual * @param $id Id da entidade a ser acessada * @param $tipo Tipo da entidade (ong|empresa|perfil) */ public function getAcessarcomo($id, $tipo) { $entidadeAtiva_id = $id; $entidadeAtiva_tipo = $tipo; if ($entidadeAtiva_tipo && $entidadeAtiva_id) { $entidadeExiste = false; switch ($entidadeAtiva_tipo) { case 'ong': # Retorna a ong na lista de ongs do usuario, ou o perfil $ong = Ong::find($entidadeAtiva_id); $entidadeExiste = $ong && Auth::user()->ongs->find($id) ? true : false; break; case 'empresa': # Retorna a empresa na lista de empresas do usuario, ou o perfil $empresa = Empresa::find($entidadeAtiva_id); $entidadeExiste = $empresa && Auth::user()->empresas->find($id) ? true : false; break; case 'perfil': # Retorna a empresa na lista de empresas do usuario, ou o perfil $perfil = Perfil::find($entidadeAtiva_id); $entidadeExiste = $perfil && Auth::user()->perfil->id == $id ? true : false; break; default: break; } if ($entidadeExiste) { Session::put('entidadeAtiva_id', $entidadeAtiva_id); Session::put('entidadeAtiva_tipo', $entidadeAtiva_tipo); } return redirect('conectar'); } }
public function guardar(Request $request) { $codigo = $request->input('codigo'); $factura = Factura::where('codigo', $codigo)->first(); $factura->subtotal = $request->input('Esubtotal'); $factura->total = $request->input('Etotal'); $factura->forma = $request->input('forma'); $factura->modo = $request->input('modo'); $factura->descuento = $request->input('descuento'); $detalles = DetalleFactura::where('factura_id', $factura->codigo)->get(); foreach ($detalles as $key => $value) { $producto = Producto::where('codigo', $value->producto_id)->first(); $producto->costo = $value->precio; $producto->stock -= $value->cantidad; $producto->save(); } $factura->estado = 1; $factura->save(); $kardex = new Kardex(); $kardex->factcmp_id = $factura->codigo; $kardex->tipo_entrdsald = 2; $kardex->estado = 1; $kardex->save(); $empresa = Empresa::where('id', 1)->first(); $empresa->conse_factura = $factura->codigo; $empresa->save(); $msg = 'Se ha guardado la factura.'; return redirect()->route('facturas')->with('status', $msg); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(EmpresaRequestCreate $request) { $empresa = new Empresa($request->all()); $empresa->save(); //Manipulación de Imágenes... $nombreImagen = 'sin imagen'; if ($request->file('imagen')) { $file = $request->file('imagen'); $nombreImagen = 'laAutentica_' . time() . '.' . $file->getClientOriginalExtension(); Storage::disk('empresas')->put($nombreImagen, \File::get($file)); } $imagen = new Logo_Empresa(); $imagen->nombre = $nombreImagen; $imagen->empresa()->associate($empresa); $imagen->save(); Flash::success('La empresa "' . $empresa->nombre . '"" ha sido registrada de forma existosa.'); return redirect()->route('admin.empresas.index'); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $id_compania = Empresa::where('gov_code', $request->company_id)->get(); $timbrado = new Timbrado(); $timbrado->value = $request->value; $timbrado->company_id = $id_compania[0]->id; $timbrado->end_date = $request->end_date; $timbrado->save(); return response()->json(['mensaje' => 'ok', 'valor' => $timbrado->value]); }
/** * Create a new user instance after a valid registration. * * @param array $data * @return User */ protected function create(array $data) { $newuser['name'] = $data['name']; $newuser['email'] = $data['email']; $newuser['password'] = bcrypt($data['password']); $user = User::create($newuser); $userid['user_id'] = $user->id; $userid['name'] = $data['name']; $userid['logo'] = "default.png"; Empresa::create($userid); return $user; }
public function getVisualizar($orden_id, $paciente_id) { $examenes = PacienteExamen::where('orden_id', $orden_id)->get(); $paciente = Paciente::find($paciente_id); $orden = Orden::find($orden_id); $protocolo = Protocolo::find($orden->protocolo_id); $empresa = Empresa::find($protocolo->empresa_id); //dd($empresa); $vista = view('hojaruta.pdfRuta')->with(compact(['examenes', 'paciente', 'empresa']))->render(); $pdf = app('dompdf.wrapper'); $pdf->loadHTML($vista); return $pdf->stream(); }
public function showtest($id) { $testid = $id; $resultado = Resultado::where('testmd5', $id)->first(); if ($resultado == null or $resultado["sexo"] != null) { return "Test ya tomado o no existe"; } else { $tests = Prueba::where('proyecto_id', $resultado["proyecto_id"])->get()->toArray(); $pais = Paise::all(); $departamento = Departamento::all(); $proyecto = Proyecto::find($resultado["proyecto_id"]); $empresa = Empresa::find($proyecto["user_id"]); return view('tests', compact('pais', 'departamento', 'testid', 'tests', 'empresa', 'proyecto')); } }
public function create() { $usuarioLogado = Auth::User(); $meusUsuarios = Empresa::where('idVendedor', '=', $usuarioLogado->id)->select('idUsuario'); $quantidadeTotalAssinaturas = 0; foreach ($meusUsuarios as $usuarioId) { $quantidadeAssinatura = Comerciante::where('idVendedor', '=', $usuarioLogado->id)->with('AssinaturaComerciante')->count(); $quantidadeTotalAssinaturas += $quantidadeAssinatura; } if ($quantidadeTotalAssinaturas >= 500) { $perfis = PerfilUsuario::where('tipo', '<>', 'Administrador')->lists('tipo', 'id'); } else { $perfis = PerfilUsuario::where('tipo', '<>', 'Administrador')->where('tipo', '<>', 'Vendedor')->lists('tipo', 'id'); } return View('Cliente.create')->with('perfis', $perfis); }
public function mapa() { $markers = '['; $empresas = Empresa::select(array('id', 'nomeFantasia'))->get(); foreach ($empresas as $empresa) { $filiais = Filial::select(array('id', 'idEmpresa', 'idEndereco'))->where('idEmpresa', '=', $empresa->id)->get(); foreach ($filiais as $filial) { $endereco = Endereco::select(array('id', 'endereco', 'bairro', 'cidade', 'estado', 'lat', 'lon'))->where('id', '=', $filial->idEndereco)->first(); $markers .= '{"id": ' . $empresa->id . ', "nome": "' . $empresa->nomeFantasia . '", "endereco": "' . $endereco->endereco . ', ' . $endereco->bairro . ', ' . $endereco->cidade . ' - ' . $endereco->estado . '", "lat": "' . $endereco->lat . '", "lon": "' . $endereco->lon . '"},'; } } $markers .= ']'; //$markers = '[{"id":1, "nome": "Pizzaria 1", "endereco": "Avenida Paulista, 151 - São Paulo - SP", "lat": "-23", "lon": "-51"}]'; // dd($markers); return view('Mapa/mapa')->with('markers', $markers); }
public function gravarSelecionados(Request $request) { $usuario = Auth::User(); $empresa = Empresa::where('idUsuario', '=', $usuario->id)->first(); $servicos = $request['servicos']; DB::beginTransaction(); try { ServicoEmpresa::where('idEmpresa', $empresa->id)->delete(); foreach ($servicos as $servico) { ServicoEmpresa::Create(['idEmpresa' => $empresa->id, 'idServico' => $servico]); } Session::flash('flash_message', 'Serviços atualizados com sucesso!'); } catch (Exception $exception) { DB::rollBack(); Session::flash('flash_message', 'Ocorreu um erro ao atualizar os serviços!'); } return redirect()->back(); }
public function store(Request $request) { $regras = array('estado' => 'required|not_in:-1', 'endereco' => 'required', 'bairro' => 'required', 'cidade' => 'required', 'telefone' => 'required', 'isPrincipal' => 'required'); $mensagens = array('estado.required' => 'O campo Estado deve ser selecionado.', 'estado.not_in' => 'O campo Estado deve ser selecionado.', 'endereco.required' => 'O campo Endereço deve ser preenchido.', 'bairro.required' => 'O campo Bairro deve ser preenchido.', 'cidade.required' => 'O campo Cidade deve ser preenchido.', 'telefone.required' => 'O campo Telefone deve ser preenchido'); $validator = Validator::make($request->all(), $regras, $mensagens); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } DB::beginTransaction(); try { $endereco = Endereco::create(['endereco' => $request['endereco'], 'bairro' => $request['bairro'], 'estado' => $request['estado'], 'cidade' => $request['cidade'], 'lon' => $request['lon'], 'lat' => $request['lat'], 'cep' => $request['cep']]); $telefone = Telefone::create(['numero' => $request['telefone']]); $whatsAppNumero = $request['whatsapp']; if (!empty($whatsAppNumero)) { $whatsApp = WhatsApp::create(['numero' => $whatsAppNumero]); } $usuario = Auth::user(); $empresa = Empresa::where('idUsuario', '=', $usuario->id)->first(); $idEmpresa = $empresa->id; if (empty($idEmpresa)) { DB::rollBack(); return redirect()->back(); } $filial = Filial::create(['idEmpresa' => $idEmpresa, 'idEndereco' => $endereco->id, 'idTelefone' => $telefone->id, 'idWhatsApp' => $whatsApp->id, 'isPrincipal' => $request['isPrincipal']]); $idComerciante = Comerciante::where('idUsuario', '=', $usuario->id)->first(); $idsAssinaturasLiberadas = DB::select(DB::raw("select a.id from assinaturas a inner join assinaturasComerciantes ac on a.id = ac.idAssinatura where ac.idComerciante = :idComerciante and a.id not in(select idAssinatura from assinaturasFiliais)"), ['idComerciante' => 1]); if (count($idsAssinaturasLiberadas) > 0) { AssinaturaFilial::create(['idAssinatura' => $idsAssinaturasLiberadas[0]->id, 'idFilial' => $filial->id]); } else { DB::rollBack(); $errors = $validator->getMessageBag(); $errors->add('ErroTags', 'Não existe assinatura disponivel.'); return redirect()->back()->withErrors($errors); } } catch (ValidationException $exception) { DB::rollBack(); $errors = $validator->getMessageBag(); $errors->add('ErroTags', $exception); return redirect()->back()->withErrors($errors); } DB::commit(); Session::flash('flash_message', 'Filial adicionada com sucesso!'); return redirect()->back(); }
/** * Estabele a relação de seguir uma empresa * @param String $id Id da empresa a ser seguida * @return JSON Resultado da requisicao */ public function getFollowempresa($id) { //$entidadeAtiva do usuario logado. $entidadeAtiva = Auth::user()->entidadeAtiva; $empresa = Empresa::findOrFail($id); //se ja nao seguir essa empresa if (!$entidadeAtiva->followEmpresa->find($empresa->id)) { $entidadeAtiva->followEmpresa()->attach($empresa->id); $entidadeAtiva->push(); //Criando nova notificacao $novaNotificacao = Notificacao::create(['titulo' => 'Voce tem um novo seguidor', 'mensagem' => $entidadeAtiva->apelido . ' agora está te seguindo e vai receber seus posts', 'tipo_notificacao' => 'seguidor', 'url' => $entidadeAtiva->getUrl()]); //associando a entidadeAtiva com o from e o $empresa seguido como target $entidadeAtiva->fromNotificacoes()->save($novaNotificacao); $empresa->notificacoes()->save($novaNotificacao); $novaNotificacao->push(); } $return['success'] = true; return json_encode($return); }
public function updatedatos() { $data = Empresa::where('user_id', $this->user->id)->firstOrFail(); $data->fill(Input::all()); $data->save(); $data = User::find($this->user->id); $data->name = Input::get('name'); $data->email = Input::get('email'); if (Input::get('password1') == Input::get('password2') and Input::get('password1') != null) { $data->password = bcrypt(Input::get('password1')); } $data->save(); if (Input::hasFile('logo')) { $image = Input::file('logo'); $filename = time() . '.' . $image->getClientOriginalExtension(); $path = public_path('img/' . $filename); Image::make($image->getRealPath())->resize(200, 200)->save($path); $user = Empresa::where('user_id', $this->user->id)->firstOrFail(); $user->logo = $filename; $user->save(); } return redirect('/cuenta'); }
/** * Metodo para se recuperar a entidade que tem o $id passado por parametro * OBS: necessita do input hidden tipoEntidade; */ public function getEntidade($id) { $tipoEntidade = Input::get('tipoEntidade', ''); switch ($tipoEntidade) { case 'App\\Perfil': $entidade = Perfil::findOrFail($id); break; case 'App\\Ong': $entidade = Ong::findOrFail($id); break; case 'App\\Empresa': $entidade = Empresa::findOrFail($id); break; case 'App\\Post': $entidade = Post::findOrFail($id); break; default: $entidade = ''; // Se nao encontrar nenhuma entidade, quebrar? // App::abort(500, 'Entidade nao identificada'); break; } return $entidade ? $entidade : false; }
public function getSugestoesEmpresas($view) { $sugestoesEmpresas = Empresa::getSugestoes(Auth::user()->entidadeAtiva); $view->with('sugestoesEmpresas', $sugestoesEmpresas); }
/** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $empresa = Empresa::paginate(100)->lists('name', 'id'); return view('admin.account_form')->with('empresas', $empresa); }
/** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $centro_costo = CostCenter::findOrFail($id); $tipo = null; if ($centro_costo->isprodut) { $tipo = 1; } else { if ($centro_costo->isfixedasset) { $tipo = 2; } else { if ($centro_costo->is_expense) { $tipo = 3; } } } $empresa = Empresa::paginate(1000)->lists('name', 'id'); return view('admin/edit_centro_costo')->with('empresas', $empresa)->with('tipo', $tipo)->with('centro_costo', $centro_costo); }
public function getOrdenes() { $empresas = Empresa::all(); $protocolos = Protocolo::where('estado', 'Pendiente')->get(); return view('protocolo.verificar')->with(compact(['empresas', 'protocolos'])); }
/** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $empresas = Empresa::orderBy('nombre', 'ASC')->searchValidos()->lists('nombre', 'id'); $marcaslista = Marca::orderBy('nombre', 'ASC')->searchActivos()->lists('nombre', 'nombre'); $view->with('marcaslista', json_decode($marcaslista, true))->with('empresas', json_decode($empresas, true)); }
/** * Retorna sugestoes de perfils que já oa entidadeAtiva ja nao esteja seguindo. * @param Perfil|Ong|Empresa $entidadeAtiva * @param integer $minSugestoes * @param integer $maxSugestoes * @return Collection Collection de perfils para sugestao */ public static function getSugestoes($entidadeAtiva, $minSugestoes = 3, $maxSugestoes = 3) { //Obtendo um array de Collections de Perfils que tem interesses em comum $arrayCollectionPerfil = $entidadeAtiva->interesses()->with('perfil')->get()->lists('perfil'); //Obtendo um array de ids dos perfils que já sigo $notAllowed_ids = $entidadeAtiva->followPerfil()->lists('id'); //Adicionando o meu $perfil->id para a lista de ids nao permitidos //fix adicionando id do perfil associado a conta dessa entidadeAtiva array_push($notAllowed_ids, $entidadeAtiva->user->perfil->id); $sugestoes = Collection::make(); //Iterando sob o array de collections e mergeando as collections em uma collection final //TODO: melhorar isso Collection::flat? foreach ($arrayCollectionPerfil as $key => $collection) { //Se for primeira iteração... if ($sugestoes->isEmpty()) { $sugestoes = $collection; } else { $sugestoes = $sugestoes->merge($collection); } } //pegando lista de ids de perfils com interesses em comum $arraySugestoes = $sugestoes->lists('id'); //Removendo lista de ids nao permitidos da lista de sugestoes $arrayFinal = array_diff($arraySugestoes, $notAllowed_ids); $totalSugestoes = count($arrayFinal); //Criando uma Collection $extra, que ira conter sugestoes extras caso numero de //sugestoes insuficiente $extras = Collection::make(); if ($totalSugestoes < $minSugestoes) { $diferenca = $minSugestoes - $totalSugestoes; //Obtendo lista de ids que nao quero, (todos que ja me sugeriram + todos que nao posso seguir) $merged = array_merge_recursive($notAllowed_ids, $arraySugestoes); $notAllowed_ids = array_unique($merged); //Pegando perfils extras para sugerir.. $extras = Perfil::whereNotIn('id', $notAllowed_ids)->limit($diferenca)->get(); } //Pegando Collection de perfils para retornar $sugestaoFinal = Perfil::whereIn('id', $arrayFinal)->get()->merge($extras); //Limitando o total de elementos ao valor de $maxSugestoes ou o total da query $qnt = count($sugestaoFinal); $max = $qnt < $maxSugestoes ? $qnt : $maxSugestoes; //Se tiver apenas 1 elemento, nao aplicar random(), pois perco a collection externa $sugestaoFinal = $qnt == 1 ? $sugestaoFinal : $sugestaoFinal->random($max); return $sugestaoFinal; }