use App\Contracts\HasPositions;
use App\Position;
use Carbon\Carbon;
use App\Models\Asset;
use App\Enums\AccountType;
use App\Models\Transaction;
use App\Enums\TransactionType;
use App\Services\AccountService;
use App\Models\PositionAggregate;
use App\Contracts\Transactionable;
use Illuminate\Support\Collection;
use App\Enums\PositionAggregateType;
use App\Transactions\CashTransaction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Account extends Model implements HasPositions
{
//
public function positions(): Collection
{
return (new AccountService())->getPositions($this)
->sortByDesc(fn (Position $position) => $position->totalPosition());
}
//
}