// 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"); }
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; }
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); }
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 }); }
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); }
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); }
private ContingenciaColateral GetCCSelecionada() { if (listViewCC.SelectedItems.Count == 0) { return(null); } long id = ViewUtils.GetIdSelecionadoInListView(listViewCC); ContingenciaColateral CC = ContingenciaColateralService.GetById(id); return(CC); }
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); }
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); }
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; }
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]); }
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; }
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); }
public EventoSModelo(Sessao sessao, ContingenciaColateral CC, string nomeImagem) : base(sessao) { this.CC = CC; this.nomeImagem = nomeImagem; }
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); }
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); }