<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Conversation extends Model
{
	protected $fillable = [
		'article_id',
		'user_id',
		'type',
		'step',
		'context',
		'messages',
		'ai_responses',
		'status',
	];
	
	protected $casts = [
		'context'      => 'array',
		'messages'     => 'array',
		'ai_responses' => 'array',
	];
	
	public function user(): BelongsTo
	{
		return $this->belongsTo(User::class);
	}
	
	public function addMessage(string $role, string $content, array $metadata = []): void
	{
		$messages = $this->messages ?? [];
		$messages[] = [
			'role'      => $role, // 'user' or 'assistant'
			'content'   => $content,
			'metadata'  => $metadata,
			'timestamp' => now()->toISOString(),
		];
		
		$this->update(['messages' => $messages]);
	}
	
	public function updateContext(array $context): void
	{
		$this->update(['context' => array_merge($this->context ?? [], $context)]);
	}
	
	public function updateAiResponse(string $key, $value): void
	{
		$responses = $this->ai_responses ?? [];
		$responses[$key] = $value;
		$this->update(['ai_responses' => $responses]);
	}
}
