Skip to content

Conversation

Copy link

Copilot AI commented Nov 6, 2025

Replaces the 4-file .txt upload system (2 per company) with a 2-file .xlsx system where a single participants file contains both companies and prizes are shared between them.

Core Changes

  • Excel parsing: Added xlsx library to parse .xlsx files client-side with flexible column detection by name rather than position
  • Participant filtering: Automatically filters by Participa and Asistió status (accepts: True, 1, Si, Yes, case-insensitive), separates by company (Consultatio/Nordelta), deduplicates by DNI
  • Data structure: Updated Sorteos interface from single company to dual-company model with shared prize pool
  • UI simplification: Single upload button per type instead of per-company, displays loaded data grouped by company

Implementation

Flexible column detection:

private findColumnIndex(headers: any[], keywords: string[]): number {
    for (let i = 0; i < headers.length; i++) {
        const header = String(headers[i] || '').toLowerCase().trim();
        for (const keyword of keywords) {
            if (header.includes(keyword.toLowerCase())) {
                return i;
            }
        }
    }
    return -1;
}

Required Excel columns:

  • Participants: Nombre, Apellido, DNI, Empresa, [Participa column], [Asistió column]
  • Prizes: Premio, Cantidad

Component updates:

  • carga-listado: Handles Excel parsing, validation, company separation
  • slots-sorteo2023: Iterates through both companies (consultatio, nordelta) sequentially
  • version2023: Passes dual-company data structure to sorteo component

UI

Initial load screen

Single upload per file type with participants displayed in grid layout separated by company. Results display maintains separate columns per company with appropriate logos.

Notes

  • All processing is client-side; files never leave browser
  • Column names are case-insensitive and position-independent
  • Both boolean columns accept multiple truthy representations for user flexibility

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • fonts.googleapis.com
    • Triggering command: ng build --base-href=/app-sorteo/ (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Nueva forma de cargar participantes y premios</issue_title>
<issue_description>Actualmente se suben archivos de .txt con el formato que explica en la app.

Es necesario cambiar esto para no tener que subir todo 2 veces, (una vez para consultatio y otra para nordelta) sino que subiendo un solo archivo .xls para participantes y otro para premios, donde en una columna se incluya a que empresa pertenece.
Para la de premios no hace falta dicha columna de empresa, se subira un solo xls con la lista de premios, y una oclumna al lado con la cantidad
El mismo set de premios se usara para ambas emprersas, es decir en ambos sorteos. si suben monopatin | 3 en el excel, bueno habra 3 ganadores de monopatin en consultatio y otros 3 ganadores de monopatin en nordelta.

este es el ejemplo de participantes:
evento_515 (1).xlsx

este es el ejemplo de premios:
Excel Modelo.xlsx

Vamos a subir 2 archivos .xls uno para participantes y otro para premios. en vez como eera antes que subiamos 4 archivos txt.

Adjunto se encuentran 2 archivos xls de ejemplo que deberian funcionar correcftamente. Como parte de criterio de aceptaciond e este ticket, deben adjuntarse estos xls y que el sorteo funcione correctamente.
Tambien debe acutalizarse la interfaz grafica acorde, donde ya no tiene sentido que haya botones por cada empresa sino un boton solo.

La interfaz de ganadores debe mantenerse igual, diferenciando quien gano de cada empresa.

el xls de participantes puede tener mas columnas y las columnas que nos importan en distintos lugares, el importador debe ser flexible para darse cuenta que columna tomar y cual ignorar sin importar la posicion. Las columnas que nos interesan son Nombre, Apellido, DNI, Empresa, y ¿Participa en Sorteo?

En empresa es donde dira Consultatio, Nordelta, u otros nombres que no nos interesan. En Participa en Torneo, puede venir distintos valores indicando que participa o no, puede ser True, 1, si, SI, Si, Yes, yes YES, y en cada uno de esos debe tomarsse como valido que partiicipa.

tambiewn habra una solumna Asistio o ¿Asistió? que tendra valores booleanos de igual forma que los de participa en torneo, y solo debe sortearse entre los que tienen un valor afirmativo o verdadero en la columna de assistencia.

el nombre de la columna de participa en sorteo tambien puede cambiar, puede venir sin signos de pregun ta, o todo junto. Lo importante es que va a ser la unica columna que contenga la palabra Sorteo
</issue_description>

<agent_instructions>make sure this app works as intended for non-tech users. the person responsible to exdecute the app is a human resources guy </agent_instructions>

Comments on the Issue (you are @copilot in this section)

Custom agent used: Sr. Front-end Angular Developer
Sr. Front-end Angular Developer


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 5 commits November 6, 2025 19:51
Co-authored-by: RHV044 <7198182+RHV044@users.noreply.github.com>
Co-authored-by: RHV044 <7198182+RHV044@users.noreply.github.com>
Co-authored-by: RHV044 <7198182+RHV044@users.noreply.github.com>
Co-authored-by: RHV044 <7198182+RHV044@users.noreply.github.com>
Co-authored-by: RHV044 <7198182+RHV044@users.noreply.github.com>
Copilot AI changed the title [WIP] Update upload process for participants and prizes Replace text file uploads with Excel-based system for participant and prize management Nov 6, 2025
Copilot AI requested a review from RHV044 November 6, 2025 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nueva forma de cargar participantes y premios

2 participants