コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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!";
            }
        }
コード例 #3
0
 /// <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());
 }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        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)
                {
                }
            }
        }
コード例 #10
0
        /// <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);
        }
コード例 #11
0
 /// <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);
 }
コード例 #12
0
        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));
        }