<?php

/**
 * Works out the next ID to use for an Eloquent Table.
 *
 * If we update records, we update the record_id table
 */
namespace App\Traits;

use App\Models\Module;

trait NextKey
{
	public static function boot()
	{
		parent::boot();

		static::creating(function($model)
		{
			$model->id = self::NextId();
		});

		static::saved(function($model)
		{
			if (! $model::RECORD_ID)
				throw new \Exception('Missing record_id const for '.get_class($model));

			$mo = Module::where('name',$model::RECORD_ID)->firstOrFail();
			$mo->record->id = $model->id;
			$mo->record->save();
		});
	}

	public static function NextId()
	{
		return (new self)->max('id')+1;
	}
}