/** * How much money you owe to the person. * @param User::id */ public function owe($receiver_id) { $toPay = 0; $toGetPaid = 0; $receiver = User::findOrFail($receiver_id); foreach ($receiver->expenses as $expense) { $groupevent = Groupevent::findOrFail($expense->groupevent_id); if ($groupevent->participants()->contains('id', $this->id) and $groupevent->paid == false) { $toPay += $expense->cost / $groupevent->participants()->count(); } } foreach ($this->expenses as $expense) { $groupevent = Groupevent::findOrFail($expense->groupevent_id); if ($groupevent->participants()->contains('id', $receiver->id) and $groupevent->paid == false) { $toGetPaid += $expense->cost / $groupevent->participants()->count(); } } return $toPay - $toGetPaid; }