Ir para conteúdo
Fórum Script Brasil
  • 0

criar uma exclusao


Marco Rolim

Pergunta

quero definir que Leonardo e Danilo Dorneles não sejam designados Indicadores de entrada e de auditorio.... já tentei de tudo 

segue o codigo: 

<?php
function distribuirOperadoresDeSom($nomes, $mes) {
    $dias = array();
    $numNomes = count($nomes);
    $nomeIndex = 0;

    for ($dia = 1; $dia <= 31; $dia++) {
        $diaSemana = date("N", strtotime("$mes-$dia"));

        if ($diaSemana == 2 || $diaSemana == 6) {
            $dias[$dia] = $nomes[$nomeIndex];
            $nomeIndex = ($nomeIndex + 1) % $numNomes;
        }
    }

    return $dias;
}

function distribuirNomesParaFuncoes($nomes, $mes, $operadoresSomDesignados) {
    $funcoes = array(
        "Indicador de Entrada" => "",
        "Indicador de Auditório" => "",
        "Microfone 1" => "",
        "Microfone 2" => "",
        "Leitor" => ""
    );
    

    $numDiasNoMes = date("t", strtotime($mes));
    $numNomes = count($nomes);
    $resultados = array();
    $nomeIndex = 0;

    for ($dia = 1; $dia <= $numDiasNoMes; $dia++) {
        $diaSemana = date("N", strtotime("$mes-$dia"));

        if ($diaSemana == 2 || $diaSemana == 6) {
            $operadorSom = isset($operadoresSomDesignados[$dia]) ? $operadoresSomDesignados[$dia] : null;

            // Armazenar os nomes já usados neste dia para evitar duplicação
            $nomesUsados = array();
            

            foreach ($funcoes as $funcao => $nome) {
                if ($funcao == "Leitor") {
                    // Garantir que Fernando e Lourenço não sejam designados como Leitor
                    while (
                        $nomes[$nomeIndex] == "Lourenço" || 
                        $nomes[$nomeIndex] == "Fernando" ||
                        $nomes[$nomeIndex] == $operadorSom ||
                        in_array($nomes[$nomeIndex], $nomesUsados)
                    ) {
                        $nomeIndex = ($nomeIndex + 1) % $numNomes;
                    }
                } else {
                    while ($nomes[$nomeIndex] == $operadorSom || in_array($nomes[$nomeIndex], $nomesUsados)) {
                        $nomeIndex = ($nomeIndex + 1) % $numNomes;
                    }
                }

                $funcoes[$funcao] = $nomes[$nomeIndex];
                $nomesUsados[] = $nomes[$nomeIndex]; // Marcar o nome como usado
                $nomeIndex = ($nomeIndex + 1) % $numNomes;
            }
            

            $resultados[] = array(
                "data" => date("d/m/Y", strtotime("$mes-$dia")),
                "diaSemana" => ($diaSemana == 2 ? "Terça-feira" : "Sábado"),
                "operadorSom" => $operadorSom,
                "funcoes" => $funcoes
            );
        }
    }

    return $resultados;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nomesFuncoes = isset($_POST['nomes_funcoes']) ? explode(",", $_POST['nomes_funcoes']) : array();
    $nomesSom = isset($_POST['nomes_som']) ? explode(",", $_POST['nomes_som']) : array();
    $mes = isset($_POST['mes']) ? $_POST['mes'] : "";

    if (!empty($mes)) {
        // Configura o idioma para português do Brasil
        setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf8', 'portuguese');

        // Formata o nome do mês em português
        $mesFormatado = strftime("%B de %Y", strtotime($mes)); // Exemplo: "novembro de 2024"
        $resultadosSom = distribuirOperadoresDeSom($nomesSom, $mes);
        $resultadosFuncoes = distribuirNomesParaFuncoes($nomesFuncoes, $mes, $resultadosSom);

        echo "<style>
            table { border-collapse: collapse; width: 100%; margin-top: 20px; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #4682B4; color: white; }
            tr:nth-child(even) { background-color: #f2f2f2; }
            tr:nth-child(odd) { background-color: #ffffff; }
            .header { text-align: center; font-family: Arial, sans-serif; margin-bottom: 20px; }
            .header h1 { font-size: 24px; color: #4682B4; }
            .header h2 { font-size: 20px; color: #000; }
        </style>";

        // Cabeçalho
        echo "<div class='header'>";
        echo "<h1>CONGREGAÇÃO CENTRO-OESTE, GAMA, DF – 002 – Nº 82446</h1>";
        echo "<h2>ÁUDIO E VÍDEO / INDICADORES / LEITORES</h2>";
        echo "<h3>" . strtoupper($mesFormatado) . "</h3>"; // Exibe o mês escolhido no cabeçalho em português
        echo "</div>";

        // Tabela principal
        echo "<table>";
        echo "<tr><th>Dia/Mês</th><th>Dia da Semana</th><th>Indicador de Entrada</th><th>Indicador de Auditório</th><th>Microfone 1</th><th>Microfone 2</th><th>Leitor</th><th>Operador de Som</th></tr>";

        foreach ($resultadosFuncoes as $resultado) {
            echo "<tr>";
            echo "<td>{$resultado['data']}</td>";
            echo "<td>{$resultado['diaSemana']}</td>";
            foreach ($resultado['funcoes'] as $nome) {
                echo "<td>{$nome}</td>";
            }
            echo "<td>{$resultado['operadorSom']}</td>";
            echo "</tr>";
        }

        echo "</table>";

        // Adicionando a seção de orientações
        echo "<h2>ORIENTAÇÕES</h2>";
        echo "<table>";
        echo "<tr><th>Função</th><th>Descrição</th></tr>";
        echo "<tr><td>Indicador de Entrada</td><td>A designação começa  <strong>30 minutos antes de cada reunião e termina depois que todos os presentes terem deixado o local.</strong> Monitorar a entrada antes, durante e depois da reunião. <strong>Trancar os portões 5 minutos depois do início da reunião.</strong> Inspecionar o estacionamento 30 minutos depois do inicio da reunião e 15 minutos antes de a reunião terminar. Destrancar os portões depois da oração final. Trancar os portões e as portas depois que todos tiverem deixado o local. Ajudar o indicador do auditório se for necessário evacuar o local. Dar boas vindas aos presentes.</td></tr>";
        echo "<tr><td>Indicador de Auditório</td><td>A designação começa <strong>30 minutos antes de cada reunião e termina depois que todos os presentes terem deixado o local.</strong> Dar instruções durante emergências (como evacuações, alarmes de incêndio e ameaças de bomba) e garantir que os serviços de emergências sejam contatados conforme a necessidade.<strong> Monitorar o auditório, o palco, a temperatura e a ventilação.  Cuidar de situações que atrapalhem a reunião e de situações que envolvem sério risco de segurança.</strong> Trabalhar em conjunto com o indicador da entrada. Cuidar do bem estar dos irmãos durante a reunião, repondo copos e em outras situações. <strong>Anotar o numero de presentes na assistência e no zoom, e anotar no relatório.</strong> Dar boas vindas e ajudar os que chegam atrasados a encontrar lugares, sem atrapalhar o andamento da reunião.</td></tr>";
        echo "<tr><td>1º Microfone e Assistente de Palco</td><td>Essa é uma designação dupla. <strong>Assistente de palco: Cuida de todas as necessidades do palco, como ajustar microfones, levar água ao orador e leitor, levar e trazer os microfones ao palco,</strong> ajudar quando existir algum problema tecnico e em possíveis mudanças nos moveis do palco. Manter o palco organizado e em bom funcionamento. <strong>Microfone Volante:</strong> Estar atento para levar o microfone sem fio a assistência para comentários. <strong>Utilizar a vara de extensão.</strong> No fim da reunião, recolher os microfones do palco, enrolar os cabos e trazer ao balcão do som, zelando pelo cuidado com os equipamentos, tendo cuidado para não bater nem derrubar os mesmos.</td></tr>";
        echo "<tr><td>2º Microfone</td><td>Estar atento para levar o microfone sem fio a assistência para comentários. <strong>Utilizar a vara de extensão.</strong> Ao final, recolher as varas e guardar, zelando pelo cuidado com os equipamentos, tendo cuidado para não bater nem derrubar os mesmos.</td></tr>";
        echo "</table>";
    } else {
        echo "<p>Preencha todos os campos do formulário.</p>";
    }
}
?>
 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Usando o Copilot, cheguei nessa solução, mas para simplificar não considerei o dia em que a tarefa será executada, mas acredito que dá para expandir o código, até atingir o objetivo do seu projeto:

<?php
// Array de colaboradores
$colaboradores = array('Leonardo', 'Danilo', 'Mateus', 'Lucas', 'Pedro', 'Batista');

// Array de tarefas
$tarefas = array('entrada', 'auditorio', 'Fone 1', 'Fone 2', 'leitor', 'som');

// Atribuir tarefas aos colaboradores
$atribuicoes = array();
$indicesNaoPermitidos = array();

// Definir um índice inicial
$indiceInicial = 0;

foreach ($tarefas as $tarefa) {
    // Verifica se a tarefa é "entrada" ou "auditorio"
    if ($tarefa == 'entrada' || $tarefa == 'auditorio') {
        // Encontra um colaborador que não seja Leonardo ou Danilo
        while (in_array($indiceInicial, $indicesNaoPermitidos) || $colaboradores[$indiceInicial] == 'Leonardo' || $colaboradores[$indiceInicial] == 'Danilo') {
            $indiceInicial = ($indiceInicial + 1) % count($colaboradores);
        }
    } else {
        // Encontra o próximo colaborador disponível
        while (in_array($indiceInicial, $indicesNaoPermitidos)) {
            $indiceInicial = ($indiceInicial + 1) % count($colaboradores);
        }
    }

    // Atribui a tarefa ao colaborador
    $atribuicoes[$colaboradores[$indiceInicial]] = $tarefa;
    // Armazena o índice usado para evitar duplicações
    $indicesNaoPermitidos[] = $indiceInicial;
    // Move para o próximo colaborador
    $indiceInicial = ($indiceInicial + 1) % count($colaboradores);
}

// Exibir as atribuições
foreach ($atribuicoes as $colaborador => $tarefa) {
    echo "$colaborador: $tarefa <br>";
}
?>

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...