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(); } }