public function success(Request $request, Reservation $reservation)
 {
     //change reservation status to complete
     $payment_id = Session::get('paypal_payment_id');
     $reservation->status = 1;
     $reservation->payment_id = $payment_id;
     $cruise = Cruise::find($reservation->cruise_id);
     $cabin = Cabin::find($reservation->cabin_id);
     //deduct cabin number in the cruise
     DB::table('cruises_cabins')->where('cruise_id', $reservation->cruise_id)->where('cabin_id', $reservation->cabin_id)->increment('cabin_booked');
     $reservation->save();
     Session::forget('paypal_payment_id');
     $full = 0;
     foreach ($cruise->cabins as $cabin) {
         if ($cabin->pivot->cabin_number == $cabin->pivot->cabin_booked) {
             $full++;
         }
     }
     if ($full == Cabin::all()->count()) {
         $cruise->status = 1;
         $cruise->save();
     }
     return view('user.reservation', ['cruise' => $cruise, 'cabin' => $cabin, 'amenities' => $reservation->amenities()->get(), 'reservation' => $reservation])->with('status', 'Payment succcess!');
 }
 public function postNewPromotion(Request $request)
 {
     $this->validate($request, ['name' => 'required|max:50', 'discount' => 'required|numeric|min:1|max:100', 'type' => 'required|numeric|min:1|max:100', 'image' => 'image', 'promo_date' => 'max:23']);
     //create a new promotion
     $promotion = Promotion::create(['name' => $request->name, 'discount' => $request->discount, 'type' => $request->type, 'description' => $request->description]);
     //process dates
     if (!empty($request->promo_date)) {
         $dates = explode(" - ", $request->promo_date);
         $promotion->start_date = DateTime::createFromFormat('m/d/Y', $dates[0])->format('Y-m-d');
         $promotion->end_date = DateTime::createFromFormat('m/d/Y', $dates[1])->format('Y-m-d');
         //check if promotion is activated on create
         if ($dates[0] <= new DateTime("now") && $dates[1] > new DateTime("now")) {
             $promotion_status = 1;
         } else {
             $promotion_status = 0;
         }
     }
     if (Input::hasFile('image')) {
         $file = Input::file('image');
         $imagename = 'promotion_' . $promotion->id . '.' . Input::file('image')->getClientOriginalExtension();
         $file->move('uploads', $imagename);
         $promotion->image = $imagename;
     }
     $promotion->save();
     //attach promotion to selected items
     $cruises = Input::get('cruises');
     $cabins = Input::get('cabins');
     $amenities = Input::get('amenities');
     if (!empty($cruises)) {
         foreach ($cruises as $key => $val) {
             $cruise = Cruise::find($val);
             $cruise->promotion_id = $promotion->id;
             $cruise->save();
         }
     } else {
         if (!empty($cabins)) {
             foreach ($cabins as $key => $val) {
                 $cabin = Cabin::find($val);
                 $cabin->promotion_id = $promotion->id;
                 $cabin->save();
             }
         } else {
             if (!empty($amenities)) {
                 foreach ($amenities as $key => $val) {
                     $amenity = Amenity::find($val);
                     $amenity->promotion_id = $promotion->id;
                     $amenity->save();
                 }
             }
         }
     }
     return redirect('/admin/promotion/' . $promotion->id)->with('status', 'Promotion created!');
 }