/**
  * Remove the specified resource from storage.
  * @Delete("claseschedule/delete/{id}")
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function claseScheduleDestroy($id)
 {
     $claseschedule = ClaseSchedule::find($id);
     $schedule = $claseschedule->schedule_id;
     ClaseSchedule::destroy($id);
     Session::flash('message', 'Clase de horario eliminado correctamente');
     return Redirect::to('/schedule/index/event/' . $schedule);
 }
 /**
  * @Post("reservar/{id}")
  */
 public function doReserve(Request $request, $id)
 {
     // 1. Comprobar que el usuario tenga una tarifa (si no tiene no tiene sentido hacer mas comprobaciones)
     if (\Auth::user()->payment == null && \Auth::user()->bonus == null) {
         Session::flash('message-error', 'No tiene ninguna tarifa o bono asignada. Por favor contacte con administración de su centro');
         return Redirect::to("horario");
     }
     // 2. Comprobar que la tarifa del usuario no ha caducado aun
     $paymentDay = \Auth::user()->payment_day;
     $paymentDaySegmented = explode('-', $paymentDay);
     $limitToPay = date_create($paymentDaySegmented[0] . "-" . ($paymentDaySegmented[1] + 1) . "-7");
     $today = date_create(date('Y-m-d', strtotime("now")));
     $aWeek = array('M' => 1, 'T' => 2, 'W' => 3, 'Tu' => 4, 'F' => 5, 'S' => 6, 'Su' => 7);
     $event = ClaseSchedule::find($id);
     $todayWeek = date('N');
     $reserveDay = $aWeek[$event->date];
     $daysBetween = $this->subtractDate($todayWeek, $reserveDay);
     $reserveDate = date('Y-m-d', strtotime("now + " . $daysBetween . " day"));
     if ($today > $limitToPay) {
         //2.1 Comprobar que el usuario tenga bono, si no tiene tarifa
         if (\Auth::user()->bonus != null) {
             if (\Auth::user()->bonus_days == 0) {
                 Session::flash('message-error', 'Su tarifa ha caducado y su bono no tiene clases restantes. Por favor contacte con administración de su centro');
                 return Redirect::to("horario");
             } else {
                 $user = User::find(\Auth::user()->id);
                 $user->bonus_days = $user->bonus_days - 1;
                 $user->save();
                 $reserve = new Reserve();
                 $reserve->user_id = $user->id;
                 $reserve->event_id = $id;
                 $reserve->reserve_day = $reserveDate;
                 $reserve->save();
                 Session::flash('message-success', 'Reserva realizada con exito');
                 return Redirect::to("horario");
             }
         } else {
             Session::flash('message-error', 'Su tarifa ha caducado. Por favor contacte con administración de su centro');
             return Redirect::to("horario");
         }
     }
     // 3. Comprobar que el usuario no ha reservado mas clases de las que puede reservar en esa semana
     $limiInf = strtotime($reserveDate);
     while (date('w', $limiInf) > 1) {
         $limiInf -= 86400;
     }
     $limitSup = date('Y-m-d', $limiInf + 6 * 86400);
     $limiInf = date('Y-m-d', $limiInf);
     $reservesDone = Reserve::where('user_id', \Auth::user()->id)->whereBetween('reserve_day', [$limiInf, $limitSup])->count();
     if (\Auth::user()->payment == null || \Auth::user()->payment->weekReserves - $reservesDone == 0) {
         if (\Auth::user()->bonus != null) {
             if (\Auth::user()->bonus_days == 0) {
                 Session::flash('message-error', 'Ha agotado las reservas de su tarifa semanal y su bono no tiene clases restantes. Por favor contacte con administración de su centro');
                 return Redirect::to("horario");
             } else {
                 $user = User::find(\Auth::user()->id);
                 $user->bonus_days = $user->bonus_days - 1;
                 $user->save();
                 $reserve = new Reserve();
                 $reserve->user_id = $user->id;
                 $reserve->event_id = $id;
                 $reserve->reserve_day = $reserveDate;
                 $reserve->save();
                 Session::flash('message-success', 'Reserva realizada con exito con su bono');
                 return Redirect::to("horario");
             }
         }
         Session::flash('message-error', 'Ha agotado las reservas de su tarifa semanal.');
         return Redirect::to("horario");
     } else {
         //4. Comprobar que el usuario no haya reservado ya esa clase
         if (Reserve::where('user_id', \Auth::user()->id)->where('reserve_day', $reserveDate)->where('event_id', $id)->count() > 0) {
             Session::flash('message-error', 'Ya ha reservado esta clase.');
             return Redirect::to("horario");
         } else {
             if (Reserve::where('user_id', \Auth::user()->id)->where('reserve_day', $reserveDate)->count() > 0) {
                 Session::flash('message-error', 'Lo sentimos, su tarifa solo le permite reservar ' . \Auth::user()->payment->dayReserves . ' vez por día');
                 return Redirect::to("horario");
             } else {
                 $reserve = new Reserve();
                 $reserve->user_id = \Auth::user()->id;
                 $reserve->event_id = $id;
                 $reserve->reserve_day = $reserveDate;
                 $reserve->save();
                 Session::flash('message-success', 'Reserva realizada con exito');
                 return Redirect::to("horario");
             }
         }
     }
 }