<?php
$u=current_user();
$requirements=document_requirements_for_user($u);
$roleOptions=[
 'all'=>'Todos os perfis','company'=>'Empresa','client'=>'Cliente','courier'=>'Entregador','motofreight'=>'Motofretista','mototaxi'=>'Mototaxista','taxi'=>'Taxista','private_driver'=>'Motorista Particular','service_provider'=>'Prestador de Serviços','property_owner'=>'Proprietário de Imóveis','rental_company'=>'Locadora de Veículos','employee'=>'Funcionário','moving_provider'=>'Mudanças e Fretes','shuttle_driver'=>'Motorista de Lotação'
];
$documentUsers=is_admin()?db()->query("SELECT id,name,public_id,role FROM users WHERE role NOT IN ('super_admin','sub_admin') ORDER BY name,id")->fetchAll():[];
?>
<section class="page-intro"><div><span class="mini-label">DOCUMENTAÇÃO</span><h2><?= is_admin()?'Documentos obrigatórios':'Meus documentos' ?></h2><p><?= is_admin()?'Defina documentos por perfil ou para um usuário específico e aprove ou recuse os arquivos recebidos.':'Envie os documentos exigidos para o seu perfil e acompanhe a análise.' ?></p></div><?php if(is_admin()):?><button class="btn btn-primary" type="button" data-modal-open="#requirementModal">+ Exigir documento</button><?php endif;?></section>

<?php if(is_admin()): ?>
<div class="grid-2">
<section class="panel"><div class="panel-header"><div><h3>Exigências cadastradas</h3><p>Você pode exigir documentos de um perfil inteiro ou somente de um usuário. Regras individuais podem bloquear apenas aquela conta.</p></div></div>
<?php $reqs=db()->query('SELECT dr.*,u.name target_user_name,u.public_id target_user_public_id FROM document_requirements dr LEFT JOIN users u ON u.id=dr.target_user_id ORDER BY dr.sort_order,dr.id')->fetchAll(); ?>
<?php if(!$reqs):?><div class="empty-state"><strong>Nenhuma exigência cadastrada</strong><p>Crie a primeira regra de documentação.</p></div><?php else:?><div class="cards-list document-requirement-list">
<?php foreach($reqs as $req):?><article class="item-card"><div class="item-body"><div class="item-meta"><span><?= !empty($req['target_user_id'])?'👤 '.e($req['target_user_name']?:('Usuário #'.(int)$req['target_user_id'])).(!empty($req['target_user_public_id'])?' • '.e($req['target_user_public_id']):''):e($roleOptions[$req['target_role']]??role_label($req['target_role'])) ?></span><?= status_badge($req['status']) ?></div><h3><?= e($req['name']) ?></h3><p><?= e($req['description']?:'Sem descrição.') ?></p><div class="item-meta"><span><?= $req['blocks_access']?'🔒 Bloqueia acesso até aprovação':'ℹ️ Não bloqueia o acesso' ?></span><span>Ordem <?= (int)$req['sort_order'] ?></span></div><div class="actions"><button class="btn btn-secondary btn-sm" type="button" data-modal-open="#req<?= (int)$req['id'] ?>">Editar</button><form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="delete_document_requirement"><input type="hidden" name="id" value="<?= (int)$req['id'] ?>"><button class="btn btn-danger btn-sm" type="submit" data-confirm="Apagar esta exigência e os envios vinculados?">Apagar</button></form></div></div></article>
<div class="modal" id="req<?= (int)$req['id'] ?>"><div class="modal-card"><div class="modal-head"><h2>Editar exigência</h2><button class="close-btn" type="button" data-modal-close>×</button></div><form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="save_document_requirement"><input type="hidden" name="id" value="<?= (int)$req['id'] ?>"><div class="form-grid"><div class="form-group full"><label>Usuário específico (opcional)</label><select name="target_user_id"><option value="">Aplicar por perfil</option><?php foreach($documentUsers as $du):?><option value="<?= (int)$du['id'] ?>"<?= selected($req['target_user_id']??'',$du['id']) ?>><?= e($du['name']) ?> — <?= e($du['public_id']?:'#'.$du['id']) ?></option><?php endforeach;?></select><small>Se escolher um usuário, o campo Perfil abaixo será ignorado.</small></div><div class="form-group"><label>Perfil</label><select name="target_role"><?php foreach($roleOptions as $key=>$label):?><option value="<?= e($key) ?>"<?= selected($req['target_role'],$key) ?>><?= e($label) ?></option><?php endforeach;?></select></div><div class="form-group"><label>Nome do documento</label><input class="input" name="name" value="<?= e($req['name']) ?>" required></div><div class="form-group full"><label>Descrição/instruções</label><textarea name="description"><?= e($req['description']) ?></textarea></div><div class="form-group"><label>Status</label><select name="status"><option value="active"<?= selected($req['status'],'active') ?>>Ativo</option><option value="inactive"<?= selected($req['status'],'inactive') ?>>Inativo</option></select></div><div class="form-group"><label>Ordem</label><input class="input" type="number" name="sort_order" value="<?= (int)$req['sort_order'] ?>"></div><label class="check-line full"><input type="checkbox" name="blocks_access" value="1"<?= checked((int)$req['blocks_access']===1) ?>> Bloquear os outros módulos até este documento ser aprovado</label></div><div class="form-actions"><button class="btn btn-primary">Salvar</button></div></form></div></div>
<?php endforeach;?></div><?php endif;?></section>

<section class="panel"><div class="panel-header"><div><h3>Documentos recebidos</h3><p>Arquivos enviados pelos usuários aguardando ou já analisados.</p></div></div>
<?php $docs=db()->query("SELECT ud.*,dr.name requirement_name,dr.target_role,u.name user_name,u.public_id,u.role FROM user_documents ud JOIN document_requirements dr ON dr.id=ud.requirement_id JOIN users u ON u.id=ud.user_id ORDER BY CASE ud.status WHEN 'pending' THEN 0 WHEN 'rejected' THEN 1 ELSE 2 END,ud.id DESC LIMIT 300")->fetchAll(); ?>
<?php if(!$docs):?><div class="empty-state"><strong>Nenhum documento enviado</strong></div><?php else:?><div class="table-wrap"><table><thead><tr><th>Usuário</th><th>Documento</th><th>Status</th><th>Ação</th></tr></thead><tbody><?php foreach($docs as $doc):?><tr><td><strong><?= e($doc['user_name']) ?></strong><small><?= e($doc['public_id'].' • '.role_label($doc['role'])) ?></small></td><td><?= e($doc['requirement_name']) ?><br><a class="btn btn-secondary btn-sm" target="_blank" href="<?= e(media_url($doc['file_path'])) ?>">Acessar Arquivo</a></td><td><?= status_badge($doc['status']) ?><?php if($doc['notes']):?><small><?= e($doc['notes']) ?></small><?php endif;?></td><td><button class="btn btn-secondary btn-sm" type="button" data-modal-open="#review<?= (int)$doc['id'] ?>">Analisar</button></td></tr>
<div class="modal" id="review<?= (int)$doc['id'] ?>"><div class="modal-card"><div class="modal-head"><h2>Analisar documento</h2><button class="close-btn" type="button" data-modal-close>×</button></div><p><strong><?= e($doc['user_name']) ?></strong><br><?= e($doc['requirement_name']) ?></p><a class="btn btn-secondary btn-block" target="_blank" href="<?= e(media_url($doc['file_path'])) ?>">Acessar Documento</a><form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="review_user_document"><input type="hidden" name="id" value="<?= (int)$doc['id'] ?>"><div class="form-group"><label>Observação</label><textarea name="notes" placeholder="Opcional para aprovação; recomendado ao recusar."><?= e($doc['notes']) ?></textarea></div><div class="form-actions"><button class="btn btn-accent" name="status" value="approved">Aprovar</button><button class="btn btn-danger" name="status" value="rejected">Recusar</button></div></form></div></div>
<?php endforeach;?></tbody></table></div><?php endif;?></section>
</div>

<div class="modal" id="requirementModal"><div class="modal-card"><div class="modal-head"><h2>Exigir documento</h2><button class="close-btn" type="button" data-modal-close>×</button></div><form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="save_document_requirement"><div class="form-grid"><div class="form-group full"><label>Usuário específico (opcional)</label><select name="target_user_id"><option value="">Aplicar por perfil</option><?php foreach($documentUsers as $du):?><option value="<?= (int)$du['id'] ?>"><?= e($du['name']) ?> — <?= e($du['public_id']?:'#'.$du['id']) ?></option><?php endforeach;?></select><small>Se escolher um usuário, o campo Perfil abaixo será ignorado.</small></div><div class="form-group"><label>Perfil</label><select name="target_role"><?php foreach($roleOptions as $key=>$label):?><option value="<?= e($key) ?>"><?= e($label) ?></option><?php endforeach;?></select></div><div class="form-group"><label>Nome do documento</label><input class="input" name="name" placeholder="Ex.: CNH, RG, comprovante de residência" required></div><div class="form-group full"><label>Descrição/instruções</label><textarea name="description" placeholder="Explique o que precisa ser enviado."></textarea></div><div class="form-group"><label>Status</label><select name="status"><option value="active">Ativo</option><option value="inactive">Inativo</option></select></div><div class="form-group"><label>Ordem</label><input class="input" type="number" name="sort_order" value="0"></div><label class="check-line full"><input type="checkbox" name="blocks_access" value="1"> Bloquear os outros módulos até este documento ser aprovado</label></div><div class="form-actions"><button class="btn btn-primary">Criar exigência</button></div></form></div></div>
<?php else: ?>
<?php if(!empty($u['admin_require_documents'])):?><div class="notice" style="border-color:rgba(255,176,32,.45);background:rgba(255,176,32,.08);margin-bottom:18px"><strong>📄 Documentação obrigatória</strong><br>A administração solicitou seus documentos. Enquanto houver arquivo não enviado, pendente ou recusado, os demais módulos permanecem bloqueados.</div><?php endif;?>
<section class="panel"><div class="panel-header"><div><h3>Documentos do meu perfil</h3><p>PDF, JPG, PNG ou WebP, até 12 MB por arquivo.</p></div><span class="status <?= pending_required_documents_count($u,false)?'status-pending':'status-approved' ?>"><?= pending_required_documents_count($u,false)?pending_required_documents_count($u,false).' pendente(s)':'Tudo aprovado' ?></span></div>
<?php if(!$requirements):?><div class="empty-state"><strong>Nenhum documento obrigatório</strong><p>O administrador não definiu exigências para o seu perfil.</p></div><?php else:?><div class="cards-list documents-user-list"><?php foreach($requirements as $req): $doc=document_requirement_state((int)$u['id'],(int)$req['id']); $state=$doc['status']??'missing'; ?><article class="item-card"><div class="item-body"><div class="item-meta"><span><?= $req['blocks_access']?'🔒 Obrigatório para acesso':'📄 Obrigatório' ?></span><?php if($state==='missing'):?><span class="status status-pending">Não enviado</span><?php else:?><?= status_badge($state) ?><?php endif;?></div><h3><?= e($req['name']) ?></h3><p><?= e($req['description']?:'Envie o arquivo solicitado pelo administrador.') ?></p><?php if($doc&&$doc['notes']):?><div class="notice"><strong>Observação:</strong> <?= e($doc['notes']) ?></div><?php endif;?><?php if($doc&&$doc['file_path']):?><a class="btn btn-secondary btn-sm" target="_blank" href="<?= e(media_url($doc['file_path'])) ?>">Ver arquivo enviado</a><?php endif;?><form method="post" action="actions.php" enctype="multipart/form-data" class="document-upload-form"><?= csrf_field() ?><input type="hidden" name="action" value="upload_required_document"><input type="hidden" name="requirement_id" value="<?= (int)$req['id'] ?>"><div class="form-group"><label><?= $doc?'Substituir arquivo':'Selecionar arquivo' ?></label><input class="input" type="file" name="document_file" accept="application/pdf,image/jpeg,image/png,image/webp" required></div><button class="btn btn-primary btn-block"><?= $doc?'Reenviar para análise':'Enviar documento' ?></button></form></div></article><?php endforeach;?></div><?php endif;?></section>
<?php endif; ?>
