Example #1
0
 public function removeMembership(GrantRemoveMembershipRequest $request)
 {
     $user = User::findOrFail($request->user_id);
     $spaces_left = $user->membership_spaces_left($request->membership_id);
     if ($spaces_left < $request->spaces_to_change) {
         return Redirect::back()->with("bad", "You cannot remove more passes than the user currently has (currently " . $spaces_left . " passes left of that type).");
     }
     $membership = Membership::findOrFail($request->membership_id);
     $spaces_to_remove = $request->spaces_to_change;
     while ($spaces_to_remove > 0) {
         $user_membership_id = DB::table('user_memberships')->join('transactions', 'user_memberships.transaction_id', '=', 'transactions.id')->where('transactions.successful', '=', 1)->where('user_memberships.membership_id', '=', $request->membership_id)->where('user_memberships.user_id', '=', $user->id)->where('user_memberships.spaces_left', '>', 0)->select('user_memberships.id')->first();
         $user_membership = User_Membership::findOrFail($user_membership_id->id);
         $spaces_removing_now = min($spaces_to_remove, $user_membership->spaces_left);
         $user_membership->spaces_left = $user_membership->spaces_left - $spaces_removing_now;
         $user_membership->save();
         $spaces_to_remove = $spaces_to_remove - $spaces_removing_now;
     }
     $transaction = new Transaction();
     $transaction->payment_method_id = 4;
     $transaction->name = "Admin Removed Memberships";
     $transaction->description = $request->spaces_to_change . " x " . $membership->name . " spaces removed";
     $transaction->amount = 0;
     $transaction->successful = 1;
     $user->transactions()->save($transaction);
     $this->emailAdminActionComplete($user, $transaction);
     return Redirect::back()->with("good", "Successfully removed " . $request->spaces_to_change . " memberships.");
 }
 private function doRemoveFromClass($class, $user)
 {
     $classe_user_row = DB::table('classe_user')->where('classe_id', '=', $class->id)->where('user_id', '=', $user->id)->select('transaction_id', 'used_free_space', 'user_membership_id')->first();
     DB::table('classe_user')->where('classe_id', '=', $class->id)->where('user_id', '=', $user->id)->delete();
     if ($classe_user_row->used_free_space == True) {
         $user_membership = User_Membership::findOrFail($classe_user_row->user_membership_id);
         $user_membership->spaces_left = $user_membership->spaces_left + 1;
         $user_membership->save();
     } else {
         $transaction = Transaction::findOrFail($classe_user_row->transaction_id);
         $transaction->delete();
     }
 }