public static void Salvar(ContingenciaInstrucional contingenciaInstrucional, UnidadeDoExperimento tato, int i) { using (IDbConnection cnn = new SQLiteConnection(GetConnectionString())) { string sqlInsert = $"INSERT INTO ContigenciaInstrucionalToTato (IdCI, IdUnidadeExperimento, Ordem) VALUES ({contingenciaInstrucional.Id}, {tato.Id}, {i})"; cnn.Execute(sqlInsert); } }
public static void Deletar(UnidadeDoExperimento unidadeDoExperimeto) { Feedback feedback = FeedbackService.GetById(unidadeDoExperimeto.FeedbackId); FeedbackService.Deletar(feedback); AbstractService.Deletar(unidadeDoExperimeto, "UnidadeDoExperimento"); string caiminhoImagem = ImagemService.GetFullPath(unidadeDoExperimeto.NomeImagem); using (IDbConnection cnn = new SQLiteConnection(GetConnectionString())) { IEnumerable <string> data = cnn.Query <string>("SELECT NomeImagem FROM UnidadeDoExperimento WHERE NomeImagem = @NomeImagem", unidadeDoExperimeto); if (data.ToList <string>().Count == 0) { File.Delete(caiminhoImagem); } } if (!string.IsNullOrEmpty(unidadeDoExperimeto.NomeAudio)) { string caiminhoAudio = AudioService.GetFullPath(unidadeDoExperimeto.NomeAudio); using (IDbConnection cnn = new SQLiteConnection(GetConnectionString())) { IEnumerable <string> data = cnn.Query <string>("SELECT NomeImagem FROM UnidadeDoExperimento WHERE NomeAudio = @NomeAudio", unidadeDoExperimeto); if (data.ToList <string>().Count == 0) { File.Delete(caiminhoAudio); } } } }
private void FinalizarCC(string motivoFinalização, UnidadeDoExperimento SC) { EventoSC eventoEncerramento = new EventoSC(sessaoAtual, CCAtual, SC, 0); eventoEncerramento.MarcarComoEncerramento(motivoFinalização, sessaoAtual.NumeroTentativas.ToString()); relatorioSessao.AdicionarEvento(eventoEncerramento); taskCC.TrySetResult(true); }
private static void SalvarObjetosFilhos(ContingenciaInstrucional contingenciaInstrucional) { for (int i = 0; i < contingenciaInstrucional.Tatos.Count; i++) { UnidadeDoExperimento tato = contingenciaInstrucional.Tatos[i]; UnidadeDoExperimentoService.Salvar(tato); ContigenciaInstrucionalToTatoService.Salvar(contingenciaInstrucional, tato, i); } }
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 UnidadeDoExperimento GetById(long id) { if (id == 0) { return(null); } UnidadeDoExperimento unidadeDoExperimeto = AbstractService.GetById <UnidadeDoExperimento>(id, "UnidadeDoExperimento"); unidadeDoExperimeto.Feedback = FeedbackService.GetById(unidadeDoExperimeto.FeedbackId); return(unidadeDoExperimeto); }
public EventoCI(Sessao sessao, ContingenciaInstrucional CI, UnidadeDoExperimento tato) : base(sessao) { this.CI = CI; for (int i = 0; i < CI.Tatos.Count; i++) { if (CI.Tatos[i].Id == tato.Id) { nomeTato = "Tato " + (i + 1).ToString(); break; } } }
private async void ClickSC(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC) { Feedback feedback = SC.Feedback; bool positivo = feedback.ValorClick > 0; Color novaCor = positivo ? Color.Green : Color.Red; string mensagem = feedback.Neutro ? "NEUTRO!" : positivo ? "CORRETO!" : "ERRADO!"; string textoEvento = $"Sessão {sessaoAtual.Nome}; MTS {CCAtual.Nome}; SC da imagem {SC.NomeImagem} {mensagem} tocado"; sessaoAtual.NumeroTentativas++; if (feedback.ProbabilidadeComplementar >= random.Next(0, 101)) { relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, valendo {feedback.ValorClick} pontos", positivo ? 1 : 0)); if (positivo) { sessaoAtual.AcertosConcecutivos++; CCAtual.AcertosConcecutivos++; } else { sessaoAtual.AcertosConcecutivos = 0; CCAtual.AcertosConcecutivos = 0; } AtualizaPontos(feedback.ValorClick); if (!feedback.Neutro) { SC.PlayAudio(); labelMensagem.Text = mensagem; labelMensagem.ForeColor = novaCor; labelMensagem.Visible = true; } if (!feedback.SemCor) { pictureSC.BackColor = novaCor; } } else { relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, porém não houve feedback por probabilidade", -1)); } await Task.Delay(1000); labelMensagem.Visible = false; pictureSC.BackColor = Color.Transparent; taskCC.TrySetResult(true); }
public static void Salvar(UnidadeDoExperimento unidadeDoExperimento) { if (string.IsNullOrEmpty(unidadeDoExperimento.NomeImagem)) { throw new System.Exception("Toda unidade do experimento deve ter uma imagem!"); } unidadeDoExperimento.NomeImagem = ImagemService.CopiaImagemParaPasta(unidadeDoExperimento.NomeImagem); unidadeDoExperimento.NomeAudio = AudioService.CopiaAudioParaPasta(unidadeDoExperimento.NomeAudio); AbstractService.Salvar(unidadeDoExperimento, "UnidadeDoExperimento", "INSERT INTO UnidadeDoExperimento (NomeImagem, FeedbackId, NomeAudio) VALUES (@NomeImagem, @FeedbackId, @NomeAudio); SELECT CAST(last_insert_rowid() as int)", "UPDATE UnidadeDoExperimento SET NomeImagem = @NomeImagem, FeedbackId = @FeedbackId, NomeAudio = @NomeAudio WHERE Id = @Id"); }
private ContingenciaInstrucional CriaCIPelosCampos() { List <UnidadeDoExperimento> tatos = new List <UnidadeDoExperimento>(); foreach (ListViewItem item in listViewTatos.Items) { UnidadeDoExperimento tato = new UnidadeDoExperimento { NomeImagem = item.Text }; tatos.Add(tato); } string nome = textBoxNomeCI.Text; ContingenciaInstrucional CI = new ContingenciaInstrucional { Nome = nome, Tatos = tatos }; return(CI); }
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); }
private async void ClickBotao(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC) { if (SessoesFinalizadas) { return; } Feedback feedback = SC.Feedback; if (feedback.Neutro || feedback.ValorClick == 0) { sessaoAtual.AcertosConcecutivos = 0; sessaoAtual.NumeroTentativas++; relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0)); await Task.Delay(1000); } else { if (feedback.ProbabilidadeComplementar > random.Next(0, 100)) { bool positivo = feedback.ValorClick > 0; Color novaCor = positivo ? Color.Green : Color.Red; string mensagem = positivo ? "CORRETO!" : "ERRADO!"; sessaoAtual.NumeroTentativas++; if (positivo) { sessaoAtual.AcertosConcecutivos++; CCAtual.AcertosConcecutivos++; } else { sessaoAtual.AcertosConcecutivos = 0; CCAtual.AcertosConcecutivos = 0; } AtualizaPontos(feedback.ValorClick); SC.PlayAudio(); labelMensagem.Text = mensagem; labelMensagem.ForeColor = novaCor; labelMensagem.Visible = true; if (!feedback.SemCor) { pictureSC.BackColor = novaCor; } relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, feedback.ValorClick)); } else { relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0)); } await Task.Delay(1000); labelMensagem.Visible = false; pictureSC.BackColor = Color.White; } ultimoSC = SC; taskCC.TrySetResult(true); }
public static List <ContigenciaInstrucionalToTato> GetByCIAndTato(ContingenciaInstrucional contingenciaInstrucional, UnidadeDoExperimento tato) { return(AbstractService.GetByObj <ContigenciaInstrucionalToTato>( "SELECT CiTT.* FROM UnidadeDoExperimento ue JOIN ContigenciaInstrucionalToTato CiTT ON ue.Id = CiTT.IdUnidadeExperimento WHERE CiTT.IdCI = @IdCI AND CiTT.IdUnidadeExperimento = @IdUE ORDER BY CiTT.Ordem", new { IdCi = contingenciaInstrucional.Id, IdUE = tato.Id })); }