// js/components/widgets/MetasAdmin.jsx · Painel metas vendedores + gestão usuários.
// Movido de index.html Fase 5 (2026-04-29). [Wave 41 v224.22 NUCLEAR 2026-05-25] 212L→125L (-41%)
// CROSS-WIDGET: FRASES_MOTIVACAO + getDicasVendedor preservados em lib/metas-admin/calcs.js (Dashboard.jsx L353-354)
// Deps globals: Modal, sb, fmt, saleFinalTotal, showConfirm, znxGuard, hashPassword, setAppUsersFromDB, window.__ZNX_NEW_AUTH_ENABLED__
(function() {
  'use strict';
  const {useState} = React;

  // [Wave 41 v224.22 + v224.55 2026-05-28] vars+check MOVED to component body (preventivo)
  // regra_validacao_helpers_runtime_quando_ordem_scripts_uncertain

function MetasAdmin({metas,setMetas,metasBase={},setMetasBase,extraUsers,setExtraUsers,allUsers,sales,currentMonth}){
  // [v224.55 FIX-PREV-14 2026-05-28] vars+check em render time
  const maW = (window.ZNX && window.ZNX.widgets && window.ZNX.widgets['metas-admin']) || {};
  const maCalcs = window.ZNX && window.ZNX.lib && window.ZNX.lib['metas-admin'] && window.ZNX.lib['metas-admin'].calcs;
  if(!maCalcs || !maW.MetasAdminCard || !maW.MetasEditModal || !maW.MetasAddVendorModal){
    const _msg = '[MetasAdmin v224.22 wave41] deps faltando: calcs='+!!maCalcs+', MetasAdminCard='+!!maW.MetasAdminCard+', MetasEditModal='+!!maW.MetasEditModal+', MetasAddVendorModal='+!!maW.MetasAddVendorModal;
    console.error(_msg);
    if(window.Sentry && typeof window.Sentry.captureMessage === 'function') window.Sentry.captureMessage(_msg, 'error');
  }
  const[editVendedor,setEditVendedor]=useState(null);
  const[editMeta,setEditMeta]=useState('');
  const[editBase,setEditBase]=useState('');
  const[addModal,setAddModal]=useState(false);
  const[newUser,setNewUser]=useState({name:'',username:'',password:'',role:'vendedor'});

  const vendedores=allUsers.filter(u=>u.role==='vendedor');

  function saveMeta(){
    setMetas(m=>({...m,[editVendedor]:Number(editMeta)}));
    if(setMetasBase)setMetasBase(m=>({...m,[editVendedor]:Number(editBase)||0}));
    setEditVendedor(null);
  }
  async function addVendedor(){
    if(!newUser.name||!newUser.username||!newUser.password)return;
    const id=Date.now();
    const hashed=await hashPassword(newUser.password);
    setExtraUsers(prev=>[...prev,{...newUser,id,password:hashed}]);
    // [FIX USER-PERSIST 20260422-C] Persist new vendedor to app_users (fonte de verdade)
    if(window.__ZNX_NEW_AUTH_ENABLED__){
      sb.from('app_users').insert({
        id:id,username:newUser.username,name:newUser.name,
        role:newUser.role||'vendedor',active:true,auth_user_id:null,
        password:hashed
      }).then(({error})=>{
        if(error){
          console.warn('[v224.71] addVendedor failed', error);
          if(window.Sentry) window.Sentry.captureException(error,{tags:{wave:'v224.71'}, extra:{action:'addVendedor'}});
          if(typeof window.ZNX_toast === 'function') window.ZNX_toast('❌ Erro adicionar vendedor: '+error.message, 'error');
        }
        else sb.from('app_users').select('id,username,name,role,active,auth_user_id').eq('active',true)
          .then(({data})=>{if(Array.isArray(data))setAppUsersFromDB(data);});
      });
    }
    setNewUser({name:'',username:'',password:'',role:'vendedor'});
    setAddModal(false);
  }
  async function removeExtra(id){
    if(!await znxGuard(['admin']))return;
    if(await showConfirm({title:'Remover Usuário',message:'Remover este vendedor?',confirmText:'Remover',confirmColor:'#DC2626'})){
      // [FIX USER-PERSIST 20260422-C] Soft-delete em app_users + remover de extraUsers
      setExtraUsers(prev=>prev.filter(u=>u.id!==id));
      if(window.__ZNX_NEW_AUTH_ENABLED__){
        sb.from('app_users').update({active:false}).eq('id',id)
          .then(({error})=>{
            if(error){
              console.warn('[v224.71] removeExtra failed', error);
              if(window.Sentry) window.Sentry.captureException(error,{tags:{wave:'v224.71'}, extra:{action:'removeExtra'}});
              if(typeof window.ZNX_toast === 'function') window.ZNX_toast('❌ Erro remover vendedor: '+error.message, 'error');
            }
            else setAppUsersFromDB(prev=>prev.filter(u=>u.id!==id));
          });
      }
    }
  }

  return(
    <div className="card" style={{marginTop:16,marginBottom:16}}>
      <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',marginBottom:16}}>
        <div style={{fontSize:14,fontWeight:700,color:'#2563EB'}}>🎯 Metas & Vendedores</div>
        <button className="btn-gold btn-sm" onClick={()=>setAddModal(true)}>+ Novo Vendedor</button>
      </div>

      <div style={{display:'grid',gridTemplateColumns:'repeat(auto-fill,minmax(240px,1fr))',gap:12}}>
        {vendedores.map(v=>(
          maW.MetasAdminCard ? <maW.MetasAdminCard
            key={v.id}
            vendedor={v}
            metas={metas}
            metasBase={metasBase}
            sales={sales}
            currentMonth={currentMonth}
            extraUsers={extraUsers}
            calcs={maCalcs}
            onEdit={(vv, m, b)=>{setEditVendedor(vv.name);setEditMeta(String(m||''));setEditBase(String(b||''));}}
            onRemoveExtra={removeExtra}
          /> : null
        ))}
        {vendedores.length===0&&<div style={{color:'#6B7280',fontSize:13}}>Nenhum vendedor cadastrado. Adicione um!</div>}
      </div>

      {editVendedor && maW.MetasEditModal && (
        <maW.MetasEditModal
          editVendedor={editVendedor}
          editMeta={editMeta} setEditMeta={setEditMeta}
          editBase={editBase} setEditBase={setEditBase}
          onSave={saveMeta} onClose={()=>setEditVendedor(null)}
        />
      )}

      {addModal && maW.MetasAddVendorModal && (
        <maW.MetasAddVendorModal
          newUser={newUser} setNewUser={setNewUser}
          onAdd={addVendedor} onClose={()=>setAddModal(false)}
        />
      )}
    </div>
  );
}

  // [Wave 41] FRASES_MOTIVACAO + getDicasVendedor globals preservados em lib/metas-admin/calcs.js
  window.ZNX = window.ZNX || {};
  window.ZNX.components = window.ZNX.components || {};
  window.ZNX.components.MetasAdmin = MetasAdmin;
  window.MetasAdmin = MetasAdmin;
  window.ZNX.refactor_phase_5_loaded = window.ZNX.refactor_phase_5_loaded || {};
  window.ZNX.refactor_phase_5_loaded.MetasAdmin = true;
  window.MetasAdmin_v224_22_wave41 = true;
})();
