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 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();
 }
 public function minhasAssinaturas()
 {
     $usuario = Auth::user();
     $comerciante = Comerciante::where('idUsuario', '=', $usuario->id)->first();
     $qtdAssinaturasTotais = Assinatura::where('idComerciante', $comerciante->id)->count();
     $assinaturasComerciantes = Assinatura::where('idComerciante', $comerciante->id)->get();
     return view('Comerciante.Assinatura')->with('qtdAssinaturas', $qtdAssinaturasTotais)->with('assinaturasComerciante', $assinaturasComerciantes);
 }