// TODO ao salvar o objeto pai, deverá dar cascade nos objetos filhos e salvar eles também? Acho melhor sim
 public static void Salvar(ContingenciaColateral contingenciaColateral)
 {
     AbstractService.Salvar(contingenciaColateral,
                            "ContingenciaColateral",
                            "INSERT INTO ContingenciaColateral (Nome, sModeloId, SC1Id, SC2Id, SC3Id, CIId) VALUES (@Nome, @sModeloId, @SC1Id, @SC2Id, @SC3Id, @CIId); SELECT CAST(last_insert_rowid() as int)",
                            "UPDATE ContingenciaColateral SET Nome = @Nome, sModeloId = @sModeloId, SC1Id = @SC1Id, SC2Id = @SC2Id, SC3Id = @SC3Id, CIId = @CIId WHERE Id = @Id");
 }
Esempio n. 2
0
        private async Task ApresentarCC(ContingenciaColateral CC, bool recomecar)
        {
            taskCC = new TaskCompletionSource <bool>(false);

            if (recomecar)
            {
                taskFinalizacao = new TaskCompletionSource <bool>(false);
                taskSModelo     = new TaskCompletionSource <bool>(false);

                pictureSC3.Visible  = false;
                panelPontos.Visible = false;
                pictureSC2.Visible  = false;
                pictureSC1.Visible  = false;

                CCAtual         = CC;
                SCsEmbaralhados = new List <UnidadeDoExperimento>()
                {
                    CC.SC1, CC.SC2, CC.SC3
                };
                pictureSModelo.Visible = true;
                pictureSModelo.Image   = ImageUtils.Resize(CC.sModelo.Imagem, imageWidth, imageHeight);

                await taskSModelo.Task;
                relatorioSessao.AdicionarEvento(new EventoSModelo(sessaoAtual, CC, CC.sModelo.NomeImagem));

                pictureSC3.Visible  = true;
                panelPontos.Visible = true;
                pictureSC2.Visible  = true;
                pictureSC1.Visible  = true;
            }

            EmbaralhaSCs();
            await taskCC.Task;
        }
Esempio n. 3
0
        private async Task ApresentarSessao(Sessao sessao)
        {
            sessaoAtual = sessao;
            List <ContingenciaColateral> CCs = sessaoAtual.CCs;

            if (sessaoAtual.Instrucao != null)
            {
                new TelaMensagem(sessaoAtual.Instrucao.Texto, false, true).ShowDialog();
            }

            timerAtual?.Stop();

            if (sessaoAtual.CriterioDuracaoSegundos > 0)
            {
                timerAtual = new Timer {
                    Interval = Convert.ToInt32(sessaoAtual.CriterioDuracaoSegundos) * 1000
                };
                timerAtual.Tick += new EventHandler(EventoFimTempo);
                timerAtual.Start();
            }

            bool encerrada = false;

            do
            {
                ContingenciaColateral CC = EscolhaCCASerApresentada();
                if (CC == null)
                {
                    break;
                }
                EscondeCC();
                ContingenciaInstrucional CI = CC.CI;

                if (CI != null)
                {
                    await ApresentarCI(CC);
                }
                else
                {
                    panelCI.Visible = false;
                    await ApresentarCC(CC);
                }

                if (sessaoAtual.CriterioNumeroTentativas > 0 && sessaoAtual.NumeroTentativas >= sessaoAtual.CriterioNumeroTentativas)
                {
                    FinalizarCC("Númeo de Tentativas");
                    encerrada = true;
                }


                if (sessaoAtual.CriterioAcertosConcecutivos > 0 && sessaoAtual.AcertosConcecutivos >= sessaoAtual.CriterioAcertosConcecutivos)
                {
                    FinalizarCC("Acertos Consecutivos");
                    encerrada = true;
                }
            } while (!encerrada);

            indiceCCAtual = 0;
        }
 private static void ObterObjetosFilhos(ContingenciaColateral contingenciaColateral)
 {
     contingenciaColateral.sModelo = UnidadeDoExperimentoService.GetById(contingenciaColateral.sModeloId);
     contingenciaColateral.SC1     = UnidadeDoExperimentoService.GetById(contingenciaColateral.SC1Id);
     contingenciaColateral.SC2     = UnidadeDoExperimentoService.GetById(contingenciaColateral.SC2Id);
     contingenciaColateral.SC3     = UnidadeDoExperimentoService.GetById(contingenciaColateral.SC3Id);
     contingenciaColateral.CI      = ContingenciaInstrucionalService.GetById(contingenciaColateral.CIId);
 }
Esempio n. 5
0
 public EventoSC(Sessao sessao, ContingenciaColateral CC, UnidadeDoExperimento SC, long pontosGanhos) : base(sessao)
 {
     this.CC        = CC;
     this.SC        = SC;
     NomeSC         = GetNomeSc();
     PontosGanhos   = pontosGanhos;
     PontosAtuais   = sessao.NumeroPontos;
     TentativaAtual = sessao.NumeroTentativas;
 }
 public static void Deletar(ContingenciaColateral CC)
 {
     CCPorSessaoService.DeletarAllByCCId(CC.Id);
     AbstractService.Deletar(CC, "ContingenciaColateral");
     UnidadeDoExperimentoService.DeletarAll(new List <UnidadeDoExperimento>()
     {
         CC.sModelo, CC.SC1, CC.SC2, CC.SC3
     });
 }
Esempio n. 7
0
 public static void SalvarAll(long sessaoId, List <ContingenciaColateral> CCs)
 {
     for (int i = 0; i < CCs.Count; i++)
     {
         ContingenciaColateral CC = CCs[i];
         using (IDbConnection cnn = new SQLiteConnection(GetConnectionString())) {
             string sqlInsert = $"INSERT INTO CCPorSessao (sessaoId, CCId, OrdemApresentacao) VALUES ({sessaoId}, {CC.Id}, {i})";
             cnn.Execute(sqlInsert);
         }
     }
 }
        public static ContingenciaColateral GetById(long id)
        {
            if (id == 0)
            {
                return(null);
            }
            ContingenciaColateral contingenciaColateral = AbstractService.GetById <ContingenciaColateral>(id, "ContingenciaColateral");

            ObterObjetosFilhos(contingenciaColateral);
            return(contingenciaColateral);
        }
Esempio n. 9
0
        private ContingenciaColateral GetCCSelecionada()
        {
            if (listViewCC.SelectedItems.Count == 0)
            {
                return(null);
            }

            long id = long.Parse(listViewCC.SelectedItems[0].SubItems[1].Text);
            ContingenciaColateral CC = ContingenciaColateralService.GetById(id);

            return(CC);
        }
Esempio n. 10
0
        private ContingenciaColateral GetCCSelecionada()
        {
            if (listViewCC.SelectedItems.Count == 0)
            {
                return(null);
            }

            long id = ViewUtils.GetIdSelecionadoInListView(listViewCC);
            ContingenciaColateral CC = ContingenciaColateralService.GetById(id);

            return(CC);
        }
Esempio n. 11
0
        private void ButtonCadastrarCC_Click(object sender, EventArgs e)
        {
            ContingenciaColateral CC = CriaCCPelosCampos();

            ContingenciaColateralService.Salvar(CC);

            ListViewItem itemCC = new ListViewItem(CC.Nome);

            itemCC.SubItems.Add(CC.Id.ToString());
            listViewCC.Items.Add(itemCC);
            comboBoxCC.Items.Add(CC);
        }
Esempio n. 12
0
        private void ButtonAddCC_Click(object sender, EventArgs e)
        {
            ContingenciaColateral CC = comboBoxCC.SelectedItem as ContingenciaColateral;

            if (CC == null)
            {
                return;
            }

            ListViewItem itemCC = new ListViewItem(CC.Nome);

            itemCC.SubItems.Add(CC.Id.ToString());
            listViewCCSessao.Items.Add(itemCC);
        }
Esempio n. 13
0
        private void ButtonSelecionarCC_Click(object sender, EventArgs e)
        {
            ContingenciaColateral CC = GetCCSelecionada();

            if (CC == null)
            {
                return;
            }

            textBoxNomeCC.Text = CC.Nome;
            if (CC.CI != null)
            {
                foreach (ContingenciaInstrucional CI in comboBoxCI.Items)
                {
                    if (CI.Id == CC.CI?.Id)
                    {
                        comboBoxCI.SelectedItem = CI;
                        break;
                    }
                }
            }
            else
            {
                comboBoxCI.SelectedIndex = -1;
            }

            textBoxModelo.Text      = CC.sModelo.NomeImagem;
            textBoxSC1.Text         = CC.SC1.NomeImagem;
            textBoxSC2.Text         = CC.SC2.NomeImagem;
            textBoxSC3.Text         = CC.SC3.NomeImagem;
            textBoxAudioModelo.Text = CC.sModelo.NomeAudio;
            textBoxAudioSC1.Text    = CC.SC1.NomeAudio;
            textBoxAudioSC2.Text    = CC.SC2.NomeAudio;
            textBoxAudioSC3.Text    = CC.SC3.NomeAudio;

            checkBoxNeutroSC1.Checked    = CC.SC1.Feedback.Neutro;
            checkBoxNeutroSC2.Checked    = CC.SC2.Feedback.Neutro;
            checkBoxNeutroSC3.Checked    = CC.SC3.Feedback.Neutro;
            checkBoxSemCorModelo.Checked = CC.sModelo.Feedback == null ? false : CC.sModelo.Feedback.SemCor;
            checkBoxSemCorSC1.Checked    = CC.SC1.Feedback.SemCor;
            checkBoxSemCorSC2.Checked    = CC.SC2.Feedback.SemCor;
            checkBoxSemCorSC3.Checked    = CC.SC3.Feedback.SemCor;

            numericProbabilidadeSC1.Value = CC.SC1.Feedback.ProbabilidadeComplementar;
            numericProbabilidadeSC2.Value = CC.SC2.Feedback.ProbabilidadeComplementar;
            numericProbabilidadeSC3.Value = CC.SC3.Feedback.ProbabilidadeComplementar;
            numericSC1.Value = CC.SC1.Feedback.ValorClick;
            numericSC2.Value = CC.SC2.Feedback.ValorClick;
            numericSC3.Value = CC.SC3.Feedback.ValorClick;
        }
Esempio n. 14
0
        private void ButtonApagarCC_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Ao deletar essa MTS ela será deletada também das sessoes onde estiver cadastrada, deseja continuar?", "Confirmação necessária", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.No)
            {
                return;
            }
            ContingenciaColateral CC = GetCCSelecionada();

            if (CC == null)
            {
                return;
            }

            RemoverDeComboBox <ContingenciaColateral>(comboBoxCC, CC.Id);
            CCPorSessaoService.DeletarAllByCCId(CC.Id);
            ContingenciaColateralService.Deletar(CC);
            listViewCC.Items.Remove(listViewCC.SelectedItems[0]);
        }
Esempio n. 15
0
        private async Task ApresentarCC(ContingenciaColateral CC)
        {
            taskCC      = new TaskCompletionSource <bool>(false);
            taskSModelo = new TaskCompletionSource <bool>(false);

            CCAtual = CC;
            pictureSModelo.Visible   = true;
            pictureSModelo.Image     = ImageUtils.Resize(CC.sModelo.Imagem, imageWidth, imageHeight);
            pictureSModelo.BackColor = Color.Transparent;
            List <UnidadeDoExperimento> SCs = new List <UnidadeDoExperimento>()
            {
                CC.SC1, CC.SC2, CC.SC3
            };

            await taskSModelo.Task;
            UnidadeDoExperimento sModelo = CC.sModelo;

            relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"Sessão {sessaoAtual.Nome}; MTS {CC.Nome}; SModelo da imagem {sModelo.NomeImagem} tocado"));

            if (sModelo.Feedback != null && !sModelo.Feedback.SemCor)
            {
                pictureSModelo.BackColor = Color.Green;
            }
            sModelo.PlayAudio();

            pictureSC3.Visible = true;
            if (!CC.SC1.Feedback.Neutro && !CC.SC2.Feedback.Neutro && !CC.SC3.Feedback.Neutro)
            {
                panelPontos.Visible = true;
            }
            pictureSC2.Visible = true;
            pictureSC1.Visible = true;

            EmbaralhaSCs(SCs);

            await taskCC.Task;
        }
Esempio n. 16
0
        private ContingenciaColateral CriaCCPelosCampos()
        {
            ContingenciaInstrucional CI = comboBoxCI.SelectedItem as ContingenciaInstrucional;

            Feedback feedbackSModelo = new Feedback {
                ValorClick = 0,
                Neutro     = checkBoxSemCorModelo.Checked,
                SemCor     = checkBoxSemCorModelo.Checked,
                ProbabilidadeComplementar = 100
            };

            FeedbackService.Salvar(feedbackSModelo);
            UnidadeDoExperimento sModelo = new UnidadeDoExperimento {
                Feedback   = feedbackSModelo,
                NomeImagem = ImagemService.CopiaImagemParaPasta(textBoxModelo.Text),
                NomeAudio  = AudioService.CopiaAudioParaPasta(textBoxAudioModelo.Text)
            };

            Feedback feedbackSC1 = new Feedback {
                ValorClick = Convert.ToInt32(numericSC1.Value),
                Neutro     = checkBoxNeutroSC1.Checked,
                SemCor     = checkBoxSemCorSC1.Checked,
                ProbabilidadeComplementar = Convert.ToInt32(numericProbabilidadeSC1.Value)
            };

            FeedbackService.Salvar(feedbackSC1);
            UnidadeDoExperimento SC1 = new UnidadeDoExperimento {
                Feedback   = feedbackSC1,
                NomeImagem = ImagemService.CopiaImagemParaPasta(textBoxSC1.Text),
                NomeAudio  = AudioService.CopiaAudioParaPasta(textBoxAudioSC1.Text)
            };

            Feedback feedbackSC2 = new Feedback {
                ValorClick = Convert.ToInt32(numericSC2.Value),
                Neutro     = checkBoxNeutroSC2.Checked,
                SemCor     = checkBoxSemCorSC2.Checked,
                ProbabilidadeComplementar = Convert.ToInt32(numericProbabilidadeSC2.Value)
            };

            FeedbackService.Salvar(feedbackSC2);
            UnidadeDoExperimento SC2 = new UnidadeDoExperimento {
                Feedback   = feedbackSC2,
                NomeImagem = ImagemService.CopiaImagemParaPasta(textBoxSC2.Text),
                NomeAudio  = AudioService.CopiaAudioParaPasta(textBoxAudioSC2.Text)
            };

            Feedback feedbackSC3 = new Feedback {
                ValorClick = Convert.ToInt32(numericSC3.Value),
                Neutro     = checkBoxNeutroSC3.Checked,
                SemCor     = checkBoxSemCorSC3.Checked,
                ProbabilidadeComplementar = Convert.ToInt32(numericProbabilidadeSC3.Value)
            };

            FeedbackService.Salvar(feedbackSC3);
            UnidadeDoExperimento SC3 = new UnidadeDoExperimento {
                Feedback   = feedbackSC3,
                NomeImagem = ImagemService.CopiaImagemParaPasta(textBoxSC3.Text),
                NomeAudio  = AudioService.CopiaAudioParaPasta(textBoxAudioSC3.Text)
            };


            UnidadeDoExperimentoService.Salvar(new List <UnidadeDoExperimento>()
            {
                sModelo, SC1, SC2, SC3
            });

            ContingenciaColateral CC = new ContingenciaColateral {
                Nome    = textBoxNomeCC.Text,
                CI      = CI,
                sModelo = sModelo,
                SC1     = SC1,
                SC2     = SC2,
                SC3     = SC3
            };

            return(CC);
        }
Esempio n. 17
0
 public EventoSModelo(Sessao sessao, ContingenciaColateral CC, string nomeImagem) : base(sessao)
 {
     this.CC         = CC;
     this.nomeImagem = nomeImagem;
 }
Esempio n. 18
0
        private async Task ApresentarCI(ContingenciaColateral CC)
        {
            ContingenciaInstrucional    CI    = CC.CI;
            List <UnidadeDoExperimento> tatos = CI.Tatos;
            int quantidadeTatos = tatos.Count;

            tasksTato     = new List <TaskCompletionSource <bool> >();
            tatoToPicture = new List <PictureBox>();

            pictureTato1.Visible = false;
            pictureTato2.Visible = false;
            pictureTato3.Visible = false;
            pictureTato4.Visible = false;
            pictureTato5.Visible = false;

            switch (quantidadeTatos)
            {
            case 1:
                tatoToPicture.Add(pictureTato3);

                pictureTato3.Visible = true;
                break;

            case 2:
                tatoToPicture.Add(pictureTato2);
                tatoToPicture.Add(pictureTato4);

                pictureTato2.Visible = true;
                pictureTato4.Visible = true;
                break;

            case 3:
                tatoToPicture.Add(pictureTato1);
                tatoToPicture.Add(pictureTato3);
                tatoToPicture.Add(pictureTato5);

                pictureTato1.Visible = true;
                pictureTato3.Visible = true;
                pictureTato5.Visible = true;
                break;

            case 4:
                tatoToPicture.Add(pictureTato1);
                tatoToPicture.Add(pictureTato2);
                tatoToPicture.Add(pictureTato4);
                tatoToPicture.Add(pictureTato5);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;

            case 5:
                tatoToPicture.Add(pictureTato1);
                tatoToPicture.Add(pictureTato2);
                tatoToPicture.Add(pictureTato3);
                tatoToPicture.Add(pictureTato4);
                tatoToPicture.Add(pictureTato5);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato3.Visible = true;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;
            }

            panelCI.Visible = true;

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato.Add(new TaskCompletionSource <bool>(false));
                tatoToPicture[i].BackColor = Color.Transparent;
                tatoToPicture[i].Image     = ImageUtils.Resize(tatos[i].Imagem, imageWidth, imageHeight);
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                await tasksTato[i].Task;
                relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"Sessão {sessaoAtual.Nome}; EC {CI.Nome}; Tato da imagem {tatos[i].NomeImagem} Tocado"));
                if (!CI.SemCor)
                {
                    tatoToPicture[i].BackColor = Color.Green;
                }
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato[i].TrySetResult(false);
            }

            await ApresentarCC(CC);
        }
Esempio n. 19
0
        private async Task ApresentarCI(ContingenciaColateral CC)
        {
            CIFinalizado = false;
            ContingenciaInstrucional    CI    = CC.CI;
            List <UnidadeDoExperimento> tatos = CI.Tatos;
            int quantidadeTatos = tatos.Count;

            tasksTato     = new List <TaskCompletionSource <bool> >();
            tatoToPicture = new Dictionary <int, PictureBox>();
            pictureToTato = new Dictionary <PictureBox, int>();

            switch (quantidadeTatos)
            {
            case 1:
                tatoToPicture.Add(1, pictureTato3);
                pictureToTato.Add(pictureTato3, 1);

                pictureTato1.Visible = false;
                pictureTato2.Visible = false;
                pictureTato3.Visible = true;
                pictureTato4.Visible = false;
                pictureTato5.Visible = false;
                break;

            case 2:
                tatoToPicture.Add(1, pictureTato2);
                tatoToPicture.Add(2, pictureTato4);
                pictureToTato.Add(pictureTato2, 1);
                pictureToTato.Add(pictureTato4, 2);

                pictureTato1.Visible = false;
                pictureTato2.Visible = true;
                pictureTato3.Visible = false;
                pictureTato4.Visible = true;
                pictureTato5.Visible = false;
                break;

            case 3:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato3);
                tatoToPicture.Add(3, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato3, 2);
                pictureToTato.Add(pictureTato5, 3);

                pictureTato1.Visible = true;
                pictureTato2.Visible = false;
                pictureTato3.Visible = true;
                pictureTato4.Visible = false;
                pictureTato5.Visible = true;
                break;

            case 4:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato2);
                tatoToPicture.Add(3, pictureTato4);
                tatoToPicture.Add(4, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato2, 2);
                pictureToTato.Add(pictureTato4, 3);
                pictureToTato.Add(pictureTato5, 4);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato3.Visible = false;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;

            case 5:
                tatoToPicture.Add(1, pictureTato1);
                tatoToPicture.Add(2, pictureTato2);
                tatoToPicture.Add(3, pictureTato3);
                tatoToPicture.Add(4, pictureTato4);
                tatoToPicture.Add(5, pictureTato5);
                pictureToTato.Add(pictureTato1, 1);
                pictureToTato.Add(pictureTato2, 2);
                pictureToTato.Add(pictureTato3, 3);
                pictureToTato.Add(pictureTato4, 4);
                pictureToTato.Add(pictureTato5, 5);

                pictureTato1.Visible = true;
                pictureTato2.Visible = true;
                pictureTato3.Visible = true;
                pictureTato4.Visible = true;
                pictureTato5.Visible = true;
                break;
            }

            panelCI.Visible = true;

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato.Add(new TaskCompletionSource <bool>(false));
                tatoToPicture[i + 1].BackColor = Color.White;
                tatoToPicture[i + 1].Image     = ImageUtils.Resize(tatos[i].Imagem, imageWidth, imageHeight);
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                await tasksTato[i].Task;
                tatoToPicture[i + 1].BackColor = Color.Green;
                relatorioSessao.AdicionarEvento(new EventoCI(sessaoAtual, CI, tatos[i]));
            }

            for (int i = 0; i < quantidadeTatos; i++)
            {
                tasksTato[i].TrySetResult(false);
            }

            CIFinalizado = true;
            await ApresentarCC(CC, true);
        }