public async Task <IActionResult> Edit(int id, [Bind("DadorId,FaseDador,EstadoDador")] Dador dador) { if (id != dador.DadorId) { return(NotFound()); } if (ModelState.IsValid) { try { var dadorDb = _encryptor.DecryptData(await _context.Dador.SingleAsync(x => x.DadorId == id)); dadorDb.EstadoDador = dador.EstadoDador; dadorDb.FaseDador = dador.FaseDador; _context.Update(dadorDb); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!DadorExists(dador.DadorId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(dador)); }
/// <summary> /// Verifica compatibilidade segundo tabela ABO /// </summary> /// <param name="casal">Casal a verificar</param> /// <param name="dador">Dador a verificar</param> /// <returns>Compatibilidade possivel entre dador e casal</returns> public static bool VerificaCompatibilidade_Abo(Casal casal, Dador dador) { var gruposCasal = casal.ConvertGrupoSanguineo(); if (gruposCasal.Contains(GrupoSanguineoMatchEnum.AB)) { return(true); } //A+B if (gruposCasal.Contains(GrupoSanguineoMatchEnum.A) && gruposCasal.Contains(GrupoSanguineoMatchEnum.B)) { return(true); } //Dador == O if (dador.GrupoSanguineo.ConvertGrupoSanguineo() == GrupoSanguineoMatchEnum.O) { return(true); } if (gruposCasal.Contains(dador.GrupoSanguineo.ConvertGrupoSanguineo())) { return(true); } return(false); }
public async Task <IActionResult> Edit(int id, [Bind("DadorId,Nome,Morada,DataNasc,LocalNasc,DocIdentificacao,Nacionalidade,Profissao,GrauEscolaridade,EstadoCivil,Altura,Peso,CorPele,CorOlhos,CorCabelo,TexturaCabelo,GrupoSanguineo,Etnia,IniciaisDador,FaseDador,EstadoDador,DadosDador,NumAbortos,TotalGestacoes")] Dador dador) { if (id != dador.DadorId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(dador); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!DadorExists(dador.DadorId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(dador)); }
/// <summary> /// Valida se existe compatibilidade entre casal e dador, /// utilizando o factor de exclusao (ABO, RH e Olhos) /// </summary> /// <param name="casal">Casal a verificar</param> /// <param name="dador">Dador a verificar</param> /// <returns>Compatibilidade possivel entre dador e casal</returns> public static bool GamMatch(this Casal casal, Dador dador) { //mecanismo de match return(VerificaCompatibilidade_Rh(casal, dador) && VerificaCompatibilidade_Abo(casal, dador) && VerificaCompatibilidade_Olhos(casal, dador)); }
public async Task <IActionResult> Create([Bind("DadorId,Nome,Morada,DataNasc,LocalNasc,DocIdentificacao,Nacionalidade,Profissao,GrauEscolaridade,EstadoCivil,NumFilhos,Altura,Peso,CorPele,CorOlhos,CorCabelo,TexturaCabelo,GrupoSanguineo,Etnia,IniciaisDador,FaseDador,EstadoDador,DadosDador,NumAbortos,TotalGestacoes")] Dador dador, Microsoft.AspNetCore.Http.IFormFile file) { var fileUpload = ""; dador.TipoRegisto = RegistoDadorEnum.Normal; if (ModelState.IsValid) { var settings = _context.Settings.FirstOrDefault(); var happyHour = false; if (settings != null) { if (DateTime.Now.TimeOfDay <= settings.HappyHourEnd && DateTime.Now.TimeOfDay >= settings.HappyHourBegin) { //happyHour = true; dador.TipoRegisto = RegistoDadorEnum.HappyHour; //save image if (file.Length > 0) { fileUpload = await file.SaveFileDefault(_hostingEnvironment, Path.Combine(_hostingEnvironment.WebRootPath, "uploads", "dador")); if (fileUpload != "") { dador.FotoId = fileUpload; // Verificação cara var resultado = await MatchHelper.MicrosoftCognitiveServices.Faces.FindSimilarFaceList( Path.Combine(_hostingEnvironment.WebRootPath, "uploads", "dador", fileUpload), fileUpload); if (resultado.Item1.Any()) { if (resultado.Item1.FirstOrDefault().Confidence >= settings.PhotoMatchValue) { dador.TipoRegisto = RegistoDadorEnum.Extra; } } } } } } dador.IniciaisDador = RetrieveInitials(dador.Nome); dador = _encryptor.EncryptData(dador); _context.Add(dador); await _context.SaveChangesAsync(); return(RedirectToAction("IndexRegistered", "Home")); } return(View(dador)); }
public Dador DecryptData(Dador dador) { IList <string> data = ConstructDataList(dador); IList <string> result = _dadorEncryptor.TryDecryptListStrings(data); dador = ConstructDador(result, dador); return(dador); }
/// <summary> /// Verifica compatibilidade de RH /// </summary> /// <param name="casal">Casal a verificar</param> /// <param name="dador">Dador a verificar</param> /// <returns>Compatibilidade possivel entre dador e casal</returns> public static bool VerificaCompatibilidade_Rh(Casal casal, Dador dador) { //Sintonia entre casal e diferença do dador provoca exclusao if (((int)casal.GrupoSanguineoMulher) % 2 == ((int)casal.GrupoSanguineoMulher) % 2 && ((int)casal.GrupoSanguineoMulher) % 2 != ((int)dador.GrupoSanguineo) % 2) { return(false); } return(true); }
private static ApplicationDbContext GetContextWithoutData() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; context = new ApplicationDbContext(options); var dador = new Dador { DadorId = 1, Nome = "Marcelo Moreno", Morada = "Praça D. Joao II", DataNasc = DateTime.UtcNow, LocalNasc = "Amarante", DocIdentificacao = "123987456", Nacionalidade = "Portugal", Profissao = "Engenheiro Quimico", GrauEscolaridade = GrauEscolaridadeEnum.Mestrado, EstadoCivil = EstadoCivilEnum.Viuvo, NumFilhos = 0, Altura = 185, Peso = 78, CorPele = CorPeleEnum.Clara, CorOlhos = CorOlhosEnum.Verde, CorCabelo = CorCabeloEnum.Preto, TexturaCabelo = TexturaCabeloEnum.Grisalho, GrupoSanguineo = GrupoSanguineoEnum.ABNeg, Etnia = EtniaEnum.Negro, IniciaisDador = "MM123", FaseDador = FaseDadorEnum.PrimeiraDadiva, EstadoDador = EstadoDadorEnum.ProcessoInativo, DadosDador = ValidacaoEnum.Aceite, NumAbortos = 0, TotalGestacoes = 0 }; context.Add(dador); context.SaveChanges(); var amostra = new Amostra { DadorId = 1, EstadoAmostra = EstadoAmostraEnum.PorAnalisar, TipoAmostra = TipoAmostraEnum.Sangue, DataRecolha = DateTime.UtcNow, }; context.Add(amostra); context.SaveChanges(); return(context); }
private Dador ConstructDador(IList <string> result, Dador dador) { if (result.Any()) { dador.DocIdentificacao = result.ElementAt(0); dador.IniciaisDador = result.ElementAt(1); dador.LocalNasc = result.ElementAt(2); dador.Morada = result.ElementAt(3); dador.Nacionalidade = result.ElementAt(4); dador.Nome = result.ElementAt(5); dador.Profissao = result.ElementAt(6); } return(dador); }
private IList <string> ConstructDataList(Dador dador) { IList <string> data = new List <string> { dador.DocIdentificacao, dador.IniciaisDador, dador.LocalNasc, dador.Morada, dador.Nacionalidade, dador.Nome, dador.Profissao }; return(data); }
/// <summary> /// Devolve um MatchStats, obtido atravez da comparacao entre dador e casal, /// detalhando as semelhancas entre ambos /// </summary> /// <param name="casal">casal selecionado</param> /// <param name="dador">dador a comparar</param> /// <returns>MatchStats, com informação sobre match entre dador e casal</returns> public static MatchStats GetMatchStats(Casal casal, Dador dador) { var matchStats = new MatchStats { GrupoSanguineoMulher = casal.GrupoSanguineoMulher == dador.GrupoSanguineo, GrupoSanguineoHomem = casal.GrupoSanguineoHomem == dador.GrupoSanguineo, CorCabeloHomem = casal.CorCabeloHomem == dador.CorCabelo, CorCabeloMulher = casal.CorCabeloMulher == dador.CorCabelo, CorOlhosHomem = casal.CorOlhosHomem == dador.CorOlhos, CorOlhosMulher = casal.CorOlhosMulher == dador.CorOlhos, CorPeleHomem = casal.CorPeleHomem == dador.CorPele, CorPeleMulher = casal.CorPeleMulher == dador.CorPele, RacaHomem = casal.RacaHomem == dador.Etnia, RacaMulher = casal.RacaHomem == dador.Etnia, TexturaCabeloHomem = casal.TexturaCabeloHomem == dador.TexturaCabelo, TexturaCabeloMulher = casal.TexturaCabeloMulher == dador.TexturaCabelo, CasalId = casal.CasalID, DadorId = dador.DadorId, }; return(matchStats); }
/// <summary> /// Verifica compatibilidade de olhos /// </summary> /// <param name="casal">Casal a verificar</param> /// <param name="dador">Dador a verificar</param> /// <returns>Compatibilidade possivel entre dador e casal</returns> public static bool VerificaCompatibilidade_Olhos(Casal casal, Dador dador) { //TODO faltam enums return(true); }
public async Task <IActionResult> Edit(int id, [Bind("Nome,DocIdentificacao,QuestionarioId,Perguntas,Respostas")] InqueritoAssistenteSocialViewModel inqueritoAssistenteSocialViewModel) { if (id != inqueritoAssistenteSocialViewModel.QuestionarioId) { return(NotFound()); } if (ModelState.IsValid) { try { IList <Dador> todosDadores = _encryptorDador.DecryptDataList(await _context.Dador.ToListAsync()); Dador dador = todosDadores.Where(d => d.Nome == inqueritoAssistenteSocialViewModel.Nome).Where(d => d.DocIdentificacao == inqueritoAssistenteSocialViewModel.DocIdentificacao).SingleOrDefault(); //Dador dadorInit = await _context.Dador.Where(d => d.Nome == encryptNome).Where(d => d.DocIdentificacao == encryptDocId).SingleOrDefaultAsync(); if (dador == null) { return(RedirectToAction(nameof(NotRegistered))); } List <Pergunta> perguntas = await _context.Pergunta.Where(p => p.QuestionarioId == inqueritoAssistenteSocialViewModel.QuestionarioId).Include(p => p.Respostas).ToListAsync(); bool rExists = perguntas.Any(p => p.Respostas.Where(r => r.DadorId == dador.DadorId).Any()); if (rExists) { return(RedirectToAction(nameof(AlreadyAnswered))); } for (int i = 0; i < perguntas.Count; i++) { Resposta resposta = new Resposta { DadorId = dador.DadorId, Dador = dador, PerguntaId = perguntas[i].PerguntaId, Pergunta = perguntas[i], TextoResposta = inqueritoAssistenteSocialViewModel.Respostas[i] }; _context.Add(resposta); } //Analyze sentiment CORRIGIR bool valido = await ValidarSentimentosAsync(inqueritoAssistenteSocialViewModel.Perguntas, inqueritoAssistenteSocialViewModel.Respostas); if (valido) { List <double?> sentimentScores = _textEmotionService.AnalyzeEmotion(inqueritoAssistenteSocialViewModel.Respostas.FindAll(r => !r.Equals("Sim") && !r.Equals("Nao"))); // Invalid if (sentimentScores.Exists(s => s < 0.3)) { //Invalido dador.ValidacaoInqueritoAS = ValidacaoEnum.Rejeitado; _context.Update(_encryptorDador.EncryptData(dador)); } else { // Valido dador.ValidacaoInqueritoAS = ValidacaoEnum.Aceite; _context.Update(_encryptorDador.EncryptData(dador)); } } else { dador.ValidacaoInqueritoAS = ValidacaoEnum.Rejeitado; _context.Update(_encryptorDador.EncryptData(dador)); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuestionarioExists(inqueritoAssistenteSocialViewModel.QuestionarioId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("IndexAnsweredAS", "Home")); } return(View(inqueritoAssistenteSocialViewModel)); }
private static ApplicationDbContext GetContextWithoutData() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; context = new ApplicationDbContext(options); var dador = new Dador { DadorId = 1, Nome = "TESTER" }; var amostraPorAnalis = new Amostra { DadorId = 1, EstadoAmostra = EstadoAmostraEnum.PorAnalisar, TipoAmostra = TipoAmostraEnum.Espermatozoide, DataRecolha = DateTime.UtcNow, Dador = dador }; context.Add(amostraPorAnalis); context.SaveChanges(); var amostraEmAnalis = new Amostra { DadorId = 1, EstadoAmostra = EstadoAmostraEnum.EmAnalise, TipoAmostra = TipoAmostraEnum.Espermatozoide, DataRecolha = DateTime.UtcNow, Dador = dador }; context.Add(amostraEmAnalis); context.SaveChanges(); var amostraAnalis = new Amostra { DadorId = 1, EstadoAmostra = EstadoAmostraEnum.Analisada, TipoAmostra = TipoAmostraEnum.Espermatozoide, DataRecolha = DateTime.UtcNow, Dador = dador }; context.Add(amostraAnalis); context.SaveChanges(); var amostraCrio = new Amostra { DadorId = 1, EstadoAmostra = EstadoAmostraEnum.Criopreservada, TipoAmostra = TipoAmostraEnum.Espermatozoide, DataRecolha = DateTime.UtcNow, Dador = dador }; context.Add(amostraCrio); context.SaveChanges(); return(context); }