ticketz-oss / ticketz

Chat based ticket system
GNU Affero General Public License v3.0
144 stars 110 forks source link

Melhoria na ordenação de empresas #189

Open lanaparadinha opened 1 month ago

lanaparadinha commented 1 month ago

Bom dia Claudemir.

Gostaria de uma melhoria na ordenação na tela de empresas do painel de admin.

Esta complicado saber quais empresas estão vencidas ou quais estão a vencer.

Na minha pagina eu criei um menu suspenso onde eu posso selecionar para trazer apenas as ativas, as vencidas e as que estão para vencer. Qualquer coisa eu posso lhe dar o código. E ai vc melhora ele

motheks commented 1 month ago

Acho que seria interessante voe criar uma Pull Request ai ele verifica seu codigo

lanaparadinha commented 1 month ago

Acho que seria interessante voe criar uma Pull Request ai ele verifica seu codigo

hahahah sei lá como se faz isso. Entendo nada de git.

:(

lanaparadinha commented 1 month ago

Segue mudanças que fiz no meu código pra atingir este objetivo

Arquivo: front/src/components/CompaniManager/index.js

Linha 502: (Após a function "CompaniesManager") const [filterOption, setFilterOption] = useState("all"); // Estado para opção de filtro

Final do arquivo antes de fechar o "}":

const getFilteredRecords = () => {
    return records.filter((row) => {
      const dueDate = new Date(row.dueDate);
      const currentDate = new Date();
      if (filterOption === "expired") {
        return dueDate < currentDate; // Mostrar apenas registros vencidos
      } else if (filterOption === "upcoming") {
        const daysUntilDue = Math.floor((dueDate - currentDate) / (1000 * 60 * 60 * 24));
        return daysUntilDue >= 0 && daysUntilDue <= 7; // Mostrar registros que estão por vencer nos próximos 7 dias
      }
      return true; // Mostrar todos os registros se a opção for "all"
    });
  };

  return (
    <Paper className={classes.mainPaper} elevation={0}>
    <Grid spacing={2} container>
      <Grid xs={12} item>
        {/* Adicione um seletor de filtro aqui */}
        <FormControl className={classes.control}>
          <InputLabel>Filtro</InputLabel>
          <Select
            value={filterOption}
            onChange={(e) => setFilterOption(e.target.value)}
          >
            <MenuItem value="all">Todos</MenuItem>
            <MenuItem value="expired">Vencidos</MenuItem>
            <MenuItem value="upcoming">A Vencer Nos próximos 7 dias</MenuItem>
          </Select>
        </FormControl>
      </Grid>
      <Grid xs={12} item>
        <CompanyForm
          initialValue={record}
          onDelete={handleOpenDeleteDialog}
          onSubmit={handleSubmit}
          onCancel={handleCancel}
          loading={loading}
        />
      </Grid>
      <Grid xs={12} item>
        <CompaniesManagerGrid records={getFilteredRecords()} onSelect={handleSelect} />
      </Grid>
    </Grid>
    <ConfirmationModal
      title="Exclusão de Registro"
      open={showConfirmDialog}
      onClose={() => setShowConfirmDialog(false)}
      onConfirm={() => handleDelete()}
    >
      Deseja realmente excluir esse registro?
    </ConfirmationModal>
  </Paper>
);

Editado pq bugou o código aqui.