<?php /* LinkExpress Avatar Upload V2.2.1 */ $u=current_user();
$isDemoUser=is_demo_user_account($u);
$identityUnlocked=(int)($u['identity_edit_unlocked']??0)===1;
$forceProfile=(int)($u['admin_require_profile']??0)===1;
$identityEditable=$identityUnlocked||$forceProfile;
$missingProfileFields=$forceProfile?user_profile_required_fields_missing($u):[];
$pendingUserDeletion=null;$dq=db()->prepare('SELECT * FROM account_deletion_requests WHERE request_type="user" AND user_id=? AND status="pending" ORDER BY id DESC LIMIT 1');$dq->execute([(int)$u['id']]);$pendingUserDeletion=$dq->fetch();
$ownedCompany=null;$pendingCompanyDeletion=null;if(in_array($u['role']??'',['company','rental_company'],true)){
  $companyId=(int)($u['company_id']??0);if($companyId>0){$cq=db()->prepare('SELECT c.id,c.name,c.slug,c.owner_user_id,u.email owner_email FROM companies c LEFT JOIN users u ON u.id=c.owner_user_id WHERE c.id=? LIMIT 1');$cq->execute([$companyId]);$candidate=$cq->fetch();if($candidate&&(int)($candidate['owner_user_id']??0)===(int)$u['id'])$ownedCompany=$candidate;}
  if($ownedCompany){$dq=db()->prepare('SELECT * FROM account_deletion_requests WHERE request_type="company" AND company_id=? AND status="pending" ORDER BY id DESC LIMIT 1');$dq->execute([(int)$ownedCompany['id']]);$pendingCompanyDeletion=$dq->fetch();}
}
$isDemoCompany=$ownedCompany?is_demo_company_account($ownedCompany):false;
?>
<div class="grid-2">
<section class="panel">
  <div class="panel-header"><div><h2>Meu perfil</h2><p>Altere sua foto, dados pessoais, senha e disponibilidade.</p></div></div>
  <?php if($forceProfile):?><div class="notice" style="border-color:rgba(255,176,32,.45);background:rgba(255,176,32,.08);margin-bottom:18px"><strong>⚠️ Complete seu cadastro para continuar</strong><br>O administrador exige que seu cadastro tenha <strong>nome completo, CPF/CNPJ e endereço</strong>. Enquanto faltar algum dado, os demais módulos ficam bloqueados.<?php if($missingProfileFields):?><br><small>Faltando agora: <?= e(implode(', ',$missingProfileFields)) ?>.</small><?php endif;?></div><?php endif;?>
  <div class="profile-hero">
    <?= avatar_html($u) ?>
    <div><h3><?= e($u['name']) ?></h3><p class="muted"><?= e(role_label($u['role'])) ?> • <?= e($u['email']) ?></p><div class="notice" style="margin-top:10px"><strong>ID LinkExpress:</strong> <?= e(public_user_id($u)) ?><br><small>Compartilhe este ID para outras pessoas salvarem seu perfil nos contatos.</small></div></div>
  </div>
  <?php if(!empty($u['avatar'])):?><form method="post" action="actions.php" style="margin-top:14px"><?= csrf_field() ?><input type="hidden" name="action" value="remove_profile_avatar"><input type="hidden" name="return_page" value="profile"><button class="btn btn-danger btn-sm" type="submit" data-confirm="Remover sua foto de perfil?">🗑️ Apagar minha foto</button></form><?php endif;?>
  <form method="post" action="actions.php" enctype="multipart/form-data" style="margin-top:22px">
    <?= csrf_field() ?><input type="hidden" name="action" value="save_profile"><input type="hidden" name="return_page" value="profile">
    <div class="form-grid">
      <div class="form-group full">
        <label>Foto de perfil — upload direto</label>
        <div class="image-upload-row">
          <div class="image-preview image-preview-avatar" data-image-preview>
            <?php if($u['avatar']):?><img src="<?= e(media_url($u['avatar'])) ?>" alt="Foto atual"><?php else:?><span><?= e(strtoupper(substr($u['name'],0,1))) ?></span><?php endif;?>
          </div>
          <div class="file-upload-copy">
            <label class="file-picker">📷 Enviar imagem do dispositivo<input type="file" name="avatar_file" accept="image/jpeg,image/png,image/webp" data-image-input></label>
            <small>Selecione uma imagem salva no celular ou computador. JPG, PNG ou WebP, até 8 MB.</small><strong class="selected-file-name" data-file-name>Nenhuma imagem selecionada</strong>
          </div>
        </div>
      </div>
      <div class="form-group"><label>Nome</label><input class="input" name="name" value="<?= e($u['name']) ?>"<?= $identityEditable?'':' readonly' ?> required><small><?= $forceProfile?'Preenchimento obrigatório solicitado pelo administrador.':($identityUnlocked?'Alteração liberada pelo administrador. Após salvar, volta a bloquear.':'🔒 Alteração somente com liberação do administrador.') ?></small></div><div class="form-group"><label>Nome de usuário público</label><input class="input" name="username" value="<?= e($u['username']??'') ?>" maxlength="24" placeholder="ex.: joaosilva"><small>Será mostrado como @usuário para outras pessoas. Seu nome real continua visível dentro do seu perfil.</small></div>
      <div class="form-group"><label>E-mail</label><input class="input" type="email" name="email" value="<?= e($u['email']) ?>" required></div>
      <div class="form-group"><label>WhatsApp</label><input class="input" name="phone" data-phone-mask value="<?= e($u['phone']) ?>"></div>
      <div class="form-group"><label>Instagram</label><input class="input" name="instagram" value="<?= e($u['instagram']??'') ?>" placeholder="@seuusuario"></div>
      <div class="form-group"><label>Telegram</label><input class="input" name="telegram" value="<?= e($u['telegram']??'') ?>" placeholder="@seuusuario"></div>
      <div class="form-group"><label>CPF/CNPJ</label><input class="input" name="document" value="<?= e($u['document']) ?>" data-document-mask inputmode="numeric"<?= $identityEditable?'':' readonly' ?><?= $forceProfile?' required':'' ?>><small><?= $forceProfile?'CPF/CNPJ obrigatório para liberar o acesso.':($identityUnlocked?'Alteração liberada pelo administrador.':'🔒 Documento bloqueado após o cadastro.') ?></small></div>
      <div class="form-group"><label>Cidade</label><input class="input" name="city" value="<?= e($u['city']??'') ?>"<?= $forceProfile?' required':'' ?>></div><div class="form-group"><label>Estado</label><input class="input" name="state" maxlength="2" data-state-mask value="<?= e($u['state']??'') ?>"<?= $forceProfile?' required':'' ?>></div>
      <div class="form-group full"><label>Localização fixa da minha casa</label><div class="inline-filter"><input class="input" name="home_address" data-address-autocomplete data-lat-field="home_lat" data-lng-field="home_lng" value="<?= e($u['home_address']??'') ?>" placeholder="Endereço para entregas, mesmo quando você não estiver no local"<?= $forceProfile?' required':'' ?>><button class="btn btn-secondary" type="button" data-geolocate-form data-address-field="home_address" data-lat-field="home_lat" data-lng-field="home_lng">📍 Localizar</button></div><input type="hidden" name="home_lat" value="<?= e($u['home_lat']??'') ?>"><input type="hidden" name="home_lng" value="<?= e($u['home_lng']??'') ?>"></div>
      <div class="form-group"><label>Número da casa/estabelecimento</label><input class="input" name="home_number" value="<?= e($u['home_number']??'') ?>" placeholder="Ex.: 120, Casa 2"></div>
      <div class="form-group"><label>Tipo da chave Pix</label><select name="pix_key_type"><option value="">Selecione</option><?php foreach(['cpf'=>'CPF','cnpj'=>'CNPJ','phone'=>'Telefone','email'=>'E-mail','random'=>'Aleatória'] as $k=>$v):?><option value="<?= e($k) ?>"<?= selected($u['pix_key_type']??'',$k) ?>><?= e($v) ?></option><?php endforeach;?></select></div>
      <div class="form-group"><label>Minha chave Pix</label><input class="input" name="pix_key" value="<?= e($u['pix_key']??'') ?>" placeholder="Sua chave de recebimento"><small>Nos serviços, esta chave só aparece ao cliente se o administrador liberar sua forma de recebimento própria.</small></div>
      <?php if(!empty($u['own_receiving_enabled'])):?><div class="form-group"><label>Forma de recebimento dos meus serviços</label><select name="receiving_method"><option value="pix"<?= selected($u['receiving_method']??'pix','pix') ?>>Meu Pix</option><option value="link"<?= selected($u['receiving_method']??'pix','link') ?>>Meu link de pagamento</option></select><small>Será exibida somente depois que o cliente confirmar que o trabalho foi realizado.</small></div><div class="form-group full"><label>Meu link de pagamento</label><input class="input" type="url" name="personal_payment_link" value="<?= e($u['personal_payment_link']??'') ?>" placeholder="https://..."><small>Use quando escolher “Meu link de pagamento”.</small></div><?php else:?><div class="form-group full"><div class="notice"><strong>🔒 Recebimento próprio não liberado</strong><br>Após o cliente confirmar o trabalho, o sistema mostrará o Pix ou link da plataforma. O administrador pode liberar seu Pix/link próprio no cadastro do usuário.</div></div><?php endif;?>
      <?php if(platform_billing_mode_for_user($u)==='transaction'):?><div class="form-group"><label>Quem paga a taxa da plataforma</label><select name="fee_payer_preference"><option value="client"<?= selected($u['fee_payer_preference']??'client','client') ?>>Cliente</option><option value="provider"<?= selected($u['fee_payer_preference']??'client','provider') ?>>Eu / meu negócio</option></select><small>Esta opção aparece porque sua modalidade é cobrança por transação.</small></div><?php endif;?>
      <div class="form-group"><label>Status</label><select name="work_status"><option value="available"<?= selected($u['work_status'],'available') ?>>Disponível</option><option value="busy"<?= selected($u['work_status'],'busy') ?>>Ocupado</option><option value="on_route"<?= selected($u['work_status'],'on_route') ?>>Em rota</option><option value="offline"<?= selected($u['work_status'],'offline') ?>>Offline</option></select></div>
      <div class="form-group"><label>Nova senha (opcional)</label><input class="input" type="password" name="password" minlength="6"></div>
    </div>
    <div class="form-actions"><button class="btn btn-primary">Salvar perfil</button></div>
  </form>
</section>
<section class="panel"><div class="panel-header"><div><h3>Assinatura e acesso</h3><p>Situação atual da sua conta.</p></div></div><div class="activity-list"><div class="activity"><span class="activity-dot"></span><div><p>Status: <?= status_badge($u['status']) ?></p><small>Controlado pelo Administrador Sênior</small></div></div><div class="activity"><span class="activity-dot"></span><div><p>Vencimento: <?= $u['subscription_expires_at']?e(date('d/m/Y',strtotime($u['subscription_expires_at']))):'Sem vencimento definido' ?></p><small>Renovação manual ou automática</small></div></div><div class="activity"><span class="activity-dot"></span><div><p>Último acesso: <?= $u['last_seen']?e(date('d/m/Y H:i',strtotime($u['last_seen']))):'Primeiro acesso' ?></p><small>IP: <?= e($u['last_ip']?:'—') ?></small></div></div></div><div class="notice" style="margin-top:18px">Por segurança, altere a senha padrão <strong>123456</strong> após o primeiro acesso.</div></section>
</div>


<?php if(!is_admin()):?>
<?php if($isDemoUser):?>
<section class="panel" style="border-color:rgba(0,212,166,.28)">
  <div class="panel-header"><div><h3>Exclusão de conta</h3><p>Proteção dos perfis de demonstração.</p></div></div>
  <div class="notice"><strong>🔒 Perfil de demonstração protegido.</strong><br>Esta conta faz parte da instalação de demonstração e não pode solicitar a própria exclusão. O Administrador Sênior ainda pode apagá-la pela tela Usuários.</div>
</section>
<?php else:?>
<section class="panel" style="border-color:rgba(255,94,118,.28)">
  <div class="panel-header"><div><h3>Exclusão de conta</h3><p>O pedido não apaga seus dados automaticamente. O Administrador Sênior recebe uma notificação e faz a análise antes da exclusão.</p></div></div>
  <div class="grid-2">
    <div class="notice" style="border-color:rgba(255,94,118,.28);background:rgba(255,94,118,.06)">
      <strong>Minha conta de usuário</strong><br><small>Solicite a exclusão definitiva do seu cadastro na plataforma.</small>
      <div class="actions" style="margin-top:14px">
      <?php if($pendingUserDeletion):?>
        <span class="status status-pending">Aguardando administrador desde <?= e(date('d/m/Y H:i',strtotime($pendingUserDeletion['created_at']))) ?></span>
        <form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="cancel_account_deletion_request"><input type="hidden" name="return_page" value="profile"><input type="hidden" name="id" value="<?= (int)$pendingUserDeletion['id'] ?>"><button class="btn btn-secondary btn-sm" type="submit" data-confirm="Cancelar sua solicitação de exclusão?">Cancelar solicitação</button></form>
      <?php else:?><button class="btn btn-danger btn-sm" type="button" data-modal-open="#deleteAccountRequestModal">Solicitar exclusão da conta</button><?php endif;?>
      </div>
    </div>
    <?php if($ownedCompany):?><div class="notice" style="border-color:rgba(255,176,32,.28);background:rgba(255,176,32,.06)">
      <strong>Empresa: <?= e($ownedCompany['name']) ?></strong><br><small>Como responsável, você também pode solicitar a exclusão da empresa.</small>
      <?php if($isDemoCompany):?><div style="margin-top:12px"><span class="status status-active">🔒 Demo sem autoexclusão</span></div><?php else:?><div class="actions" style="margin-top:14px">
      <?php if($pendingCompanyDeletion):?>
        <span class="status status-pending">Aguardando administrador desde <?= e(date('d/m/Y H:i',strtotime($pendingCompanyDeletion['created_at']))) ?></span>
        <form method="post" action="actions.php"><?= csrf_field() ?><input type="hidden" name="action" value="cancel_account_deletion_request"><input type="hidden" name="return_page" value="profile"><input type="hidden" name="id" value="<?= (int)$pendingCompanyDeletion['id'] ?>"><button class="btn btn-secondary btn-sm" type="submit" data-confirm="Cancelar a solicitação de exclusão da empresa?">Cancelar solicitação</button></form>
      <?php else:?><button class="btn btn-danger btn-sm" type="button" data-modal-open="#deleteCompanyRequestModal">Solicitar exclusão da empresa</button><?php endif;?>
      </div><?php endif;?>
    </div><?php endif;?>
  </div>
</section>

<?php endif;?>

<?php if(!$isDemoUser&&!$pendingUserDeletion):?><div class="modal" id="deleteAccountRequestModal"><div class="modal-card"><div class="modal-head"><h2>Solicitar exclusão da conta</h2><button class="close-btn" type="button" data-modal-close>×</button></div><div class="notice">A exclusão será feita somente pelo administrador após receber sua solicitação.</div><form method="post" action="actions.php" style="margin-top:16px"><?= csrf_field() ?><input type="hidden" name="action" value="request_account_deletion"><input type="hidden" name="return_page" value="profile"><input type="hidden" name="scope" value="user"><div class="form-group"><label>Motivo (opcional)</label><textarea name="reason" maxlength="1000" placeholder="Se desejar, explique por que quer excluir a conta."></textarea></div><div class="form-actions"><button class="btn btn-danger" type="submit" data-confirm="Enviar ao administrador o pedido de exclusão definitiva da sua conta?">Enviar solicitação</button></div></form></div></div><?php endif;?>
<?php if(!$isDemoUser&&$ownedCompany&&!$isDemoCompany&&!$pendingCompanyDeletion):?><div class="modal" id="deleteCompanyRequestModal"><div class="modal-card"><div class="modal-head"><h2>Solicitar exclusão da empresa</h2><button class="close-btn" type="button" data-modal-close>×</button></div><div class="notice">O administrador receberá um aviso para analisar a exclusão da empresa <strong><?= e($ownedCompany['name']) ?></strong>.</div><form method="post" action="actions.php" style="margin-top:16px"><?= csrf_field() ?><input type="hidden" name="action" value="request_account_deletion"><input type="hidden" name="return_page" value="profile"><input type="hidden" name="scope" value="company"><div class="form-group"><label>Motivo (opcional)</label><textarea name="reason" maxlength="1000" placeholder="Se desejar, explique por que quer excluir a empresa."></textarea></div><div class="form-actions"><button class="btn btn-danger" type="submit" data-confirm="Enviar ao administrador o pedido de exclusão definitiva desta empresa?">Enviar solicitação</button></div></form></div></div><?php endif;?>
<?php endif;?>
