/**
  * Reverse the migrations.
  *
  * @return void
  */
 public function down()
 {
     Schema::create('assinaturasComerciantes', function (Blueprint $table) {
         $table->increments('id')->unsigned();
         $table->integer('idComerciante')->unsigned();
         $table->integer('idAssinatura')->unsigned();
         $table->timestamps();
     });
     Schema::table('assinaturasComerciantes', function ($table) {
         $table->foreign('idComerciante')->references('id')->on('comerciantes');
         $table->foreign('idAssinatura')->references('id')->on('assinaturas');
     });
     //voltar os dados para a tabela antiga
     $assi = Assinatura::all()->toArray();
     foreach ($assi as $single) {
         $assinaCom = AssinaturaComerciante::create(['idAssinatura' => $single['id'], 'idComerciante' => $single['idComerciante']]);
         $assinaCom->save();
     }
     Schema::table('assinaturas', function (Blueprint $table) {
         $table->dropColumn('idComerciante');
     });
 }
 public function index()
 {
     $usuario = Auth::user();
     if (Gate::allows('AcessoComerciante')) {
         $comerciante = Comerciante::where('idUsuario', '=', $usuario->id)->first();
         $assinaturas = Assinatura::where('idComerciante', $comerciante->id)->get();
         $qtdAssinaturasTotais = $assinaturas->count();
         $qtdAssinaturasUsadas = 0;
         foreach ($assinaturas as $assinatura) {
             if (AssinaturaFilial::where('idAssinatura', $assinatura->id)->count() > 0) {
                 $qtdAssinaturasUsadas++;
             }
         }
         $qtdAssinaturasRestantes = $qtdAssinaturasTotais - $qtdAssinaturasUsadas;
         $empresa = Empresa::where('idUsuario', '=', $usuario->id)->first();
         $filiais = [];
         if ($empresa != null) {
             $filiais = Filial::where('idEmpresa', '=', $empresa->id)->get();
         } else {
             //TODO: informar o usuário para cadastrar primeiro empresa e depois filial
         }
         return view('Filial.Index')->with('filiais', $filiais)->with('numero_assinaturas', $qtdAssinaturasRestantes);
     }
 }
 public function atualizarVencimentoStore(Request $request)
 {
     $regras = array('selecionarPlano' => 'required|string', 'dataVencimento' => 'required|date');
     $mensagens = array('selecionarPlano.required' => 'O campo Plano deve ser preenchido.', 'dataVencimento.required' => 'O campo Data Vencimento deve ser preenchido.');
     $validator = Validator::make($request->all(), $regras, $mensagens);
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator)->withInput();
     }
     DB::beginTransaction();
     $idComerciante = $request['id'];
     $assinaturaComercianteUpdate = AssinaturaComerciante::where('idComerciante', '=', $idComerciante)->first();
     try {
         if ($assinaturaComercianteUpdate == null) {
             $assinatura = Assinatura::create(['dataVencimento' => $request['dataVencimento'], 'idPlano' => $request['selecionarPlano']]);
             $assinaturaComerciante = AssinaturaComerciante::create(['idComerciante' => $request['id'], 'idAssinatura' => $assinatura->id]);
         } else {
             $assinatura = $assinaturaComercianteUpdate->Assinatura()->first();
             $assinatura->dataVencimento = $request['dataVencimento'];
             $assinatura->idPlano = $request['id'];
             $assinatura->save();
         }
     } catch (Exception $exception) {
         DB::rollBack();
         $errors = $validator->getMessageBag();
         $errors->add('ErroException', 'Não foi possivel cadastrar o cliente.');
         return redirect()->back()->withErrors($errors);
     }
     DB::commit();
     Session::flash('flash_message', 'Assinatura atualizada 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);
 }