/// <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 TelaApresentacaoCasal() { InitializeComponent(); var usuario = Application.Current.Properties["_user"] as Pessoa; CasalController casalController = new CasalController(); Casal casal = new Casal(); try { casal = casalController.BuscarCasal(usuario.IdPessoa); txtIdCasal.Text = Convert.ToString(casal.IdCasal); txtIdCasal.Visibility = Visibility.Visible; txtDataInicioCasal.Text = Convert.ToString(casal.DataInicio); txtDataInicioCasal.Visibility = Visibility.Visible; txtPrimeiroEncontroCasal.Text = Convert.ToString(casal.PrimeiroEncontro); txtPrimeiroEncontroCasal.Visibility = Visibility.Visible; txtIdPessoaACasal.Text = Convert.ToString(casal.idPessoaA); txtIdPessoaACasal.Visibility = Visibility.Visible; txtIdPessoaBCasal.Text = Convert.ToString(casal.idPessoaB); txtIdPessoaBCasal.Visibility = Visibility.Visible; txtResumoCasal.Text = Convert.ToString(casal.Resumo); txtResumoCasal.Visibility = Visibility.Visible; } catch (Exception) { casal.IdCasal = 0; casal.DataInicio = Convert.ToString(DateTime.Today); casal.PrimeiroEncontro = ""; casal.MesAtual = Convert.ToString(DateTime.Today); casal.idPessoaA = 0; casal.idPessoaB = 0; casal.Resumo = "Casal Nao Encontrado!"; } }
/// <summary> /// Converte Grupo sanguineo do casal (homem + mulher) /// </summary> /// <param name="casal">Casal</param> /// <returns>Lista de grupos sanguineos ordenada</returns> public static List <GrupoSanguineoMatchEnum> ConvertGrupoSanguineo(this Casal casal) { return(new List <GrupoSanguineoMatchEnum> { casal.GrupoSanguineoMulher.ConvertGrupoSanguineo(), casal.GrupoSanguineoHomem.ConvertGrupoSanguineo() }.OrderBy(x => (int)x).ToList()); }
/// <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)); }
/// <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); }
public void CadastrarCasal(string dataInicio, string primeiroEncontro, int idPessoaA, int idPessoaB, string resumo) { Casal casal = new Casal(); casal.DataInicio = dataInicio; casal.PrimeiroEncontro = primeiroEncontro; casal.MesAtual = Convert.ToString(DateTime.Today); casal.idPessoaA = idPessoaA; casal.idPessoaB = idPessoaB; casal.Resumo = resumo; context.dBcasal.Add(casal); context.SaveChanges(); }
private static ApplicationDbContext GetContextWithoutData() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; context = new ApplicationDbContext(options); var novoCasal = new Casal { CasalID = 1, IdadeHomem = 45, RacaHomem = EtniaEnum.Caucasiano, AlturaHomem = 177, CorCabeloHomem = CorCabeloEnum.Castanho, GrupoSanguineoHomem = GrupoSanguineoEnum.ANeg, TexturaCabeloHomem = TexturaCabeloEnum.Grisalho, CorOlhosHomem = CorOlhosEnum.Castanho, CorPeleHomem = CorPeleEnum.Clara, IdadeMulher = 38, RacaMulher = EtniaEnum.Negro, AlturaMulher = 155, CorCabeloMulher = CorCabeloEnum.Cinzento, GrupoSanguineoMulher = GrupoSanguineoEnum.ABNeg, TexturaCabeloMulher = TexturaCabeloEnum.Ondulado, CorOlhosMulher = CorOlhosEnum.Outro, CorPeleMulher = CorPeleEnum.MuitoClara }; context.Add(novoCasal); context.SaveChanges(); var novoPedidoGametas = new PedidoGametas { PedidoGametasId = 1, CasalId = 1, Data = DateTime.UtcNow, Centro = "Centro PMA Leiria", RefExterna = "PMLEI2002", EstadoProcessoPedido = EstadoProcesso.EmAnalise }; context.Add(novoPedidoGametas); context.SaveChanges(); return(context); }
/// <summary> /// Ordena lista segundo uma preferencia MatchStatsInfo /// </summary> /// <param name="dadors">lista de dadores (compativeis)</param> /// <param name="casal">casal selecionado</param> /// <param name="stats">dados preferenciais</param> /// <returns>Lista ordenada de compatibilidades</returns> public static List <Dador> GetOrdedList(List <Dador> dadors, Casal casal, MatchStatsInfo stats) { var listaComparacao = dadors.Select(x => new { x.DadorId, GrupoSanguineoMulher = casal.GrupoSanguineoMulher == x.GrupoSanguineo, GrupoSanguineoHomem = casal.GrupoSanguineoHomem == x.GrupoSanguineo, CorCabeloHomem = casal.CorCabeloHomem == x.CorCabelo, CorCabeloMulher = casal.CorCabeloMulher == x.CorCabelo, CorOlhosHomem = casal.CorOlhosHomem == x.CorOlhos, CorOlhosMulher = casal.CorOlhosMulher == x.CorOlhos, CorPeleHomem = casal.CorPeleHomem == x.CorPele, CorPeleMulher = casal.CorPeleMulher == x.CorPele, RacaHomem = casal.RacaHomem == x.Etnia, RacaMulher = casal.RacaHomem == x.Etnia, TexturaCabeloHomem = casal.TexturaCabeloHomem == x.TexturaCabelo, TexturaCabeloMulher = casal.TexturaCabeloMulher == x.TexturaCabelo //DUMMY //CorCabeloHomem =false, //CorCabeloMulher = false, //CorOlhosHomem = false, //CorOlhosMulher = false, //CorPeleHomem = false, //CorPeleMulher = false, //RacaHomem = false, //RacaMulher = false, //TexturaCabeloHomem = false, //TexturaCabeloMulher = false }); var ordemStats = stats.GetType().GetProperties().Select(x => new { Field = x.Name, Value = x.GetValue(stats, null) }).OrderBy(x => x.Value).Select(x => x.Field).ToList().Aggregate((x, y) => $"{x},{y}"); var comparacaoOrdenada = System.Linq.Dynamic.Core.DynamicQueryableExtensions.OrderBy(listaComparacao.AsQueryable(), ordemStats); //var comparacaoOrdenada = listaComparacao.OrderBy(ordemStats); var sortedList = comparacaoOrdenada.Select(x => dadors.FirstOrDefault(y => x.DadorId == y.DadorId)).ToList(); return(sortedList); }
public void ExcluirCasal(int idPessoa) { CasalController casalController = new CasalController(); Casal casal = new Casal(); casal = casalController.BuscarCasal(idPessoa); if (casal != null) { try { context.dBcasal.Remove(casal); context.SaveChanges(); } catch (Exception) { } } }
/// <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("Id,IdadeHomem,RacaHomem,AlturaHomem,CorCabeloHomem,GrupoSanguineoHomem,TexturaCabeloHomem,CorOlhosHomem,CorPeleHomem,IdadeMulher,RacaMulher,AlturaMulher,CorCabeloMulher,GrupoSanguineoMulher,TexturaCabeloMulher,CorOlhosMulher,CorPeleMulher,OriginouGravidez,NrFilhos")] PedidoGametasViewModel pedidoGametasViewModel) { var pedidoGam = await _context.PedidoGametas.AsNoTracking().SingleOrDefaultAsync(p => p.PedidoGametasId == pedidoGametasViewModel.Id); var casalPedido = await _context.Casal.AsNoTracking().SingleOrDefaultAsync(c => c.CasalID == pedidoGam.CasalId); if (pedidoGam == null || casalPedido == null) { return(NotFound()); } if (id != pedidoGam.PedidoGametasId) { return(NotFound()); } if (ModelState.IsValid) { try { var casalToUpdate = new Casal { CasalID = casalPedido.CasalID, OriginouGravidez = pedidoGametasViewModel.OriginouGravidez, NrFilhos = pedidoGametasViewModel.NrFilhos, IdadeHomem = pedidoGametasViewModel.IdadeHomem, RacaHomem = pedidoGametasViewModel.RacaHomem, AlturaHomem = pedidoGametasViewModel.AlturaHomem, CorCabeloHomem = pedidoGametasViewModel.CorCabeloHomem, GrupoSanguineoHomem = pedidoGametasViewModel.GrupoSanguineoHomem, TexturaCabeloHomem = pedidoGametasViewModel.TexturaCabeloHomem, CorOlhosHomem = pedidoGametasViewModel.CorOlhosHomem, CorPeleHomem = pedidoGametasViewModel.CorPeleHomem, IdadeMulher = pedidoGametasViewModel.IdadeMulher, RacaMulher = pedidoGametasViewModel.RacaMulher, AlturaMulher = pedidoGametasViewModel.AlturaMulher, CorCabeloMulher = pedidoGametasViewModel.CorCabeloMulher, GrupoSanguineoMulher = pedidoGametasViewModel.GrupoSanguineoMulher, TexturaCabeloMulher = pedidoGametasViewModel.TexturaCabeloMulher, CorOlhosMulher = pedidoGametasViewModel.CorOlhosMulher, CorPeleMulher = pedidoGametasViewModel.CorPeleMulher }; if (casalToUpdate.OriginouGravidez != SimNaoEnum.Indefinido) { var pedidoGamToUpdate = new PedidoGametas { PedidoGametasId = pedidoGam.PedidoGametasId, CasalId = casalToUpdate.CasalID, Data = pedidoGam.Data, Centro = pedidoGam.Centro, RefExterna = pedidoGam.RefExterna, EstadoProcessoPedido = EstadoProcesso.RegisteiResultadosCasal }; _context.Update(pedidoGamToUpdate); await _context.SaveChangesAsync(); } _context.Update(casalToUpdate); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } return(RedirectToAction(nameof(Index))); } return(View(pedidoGametasViewModel)); }