Esempio n. 1
0
        public async Task <IActionResult> SelectMatch(int?id, int?casalid)
        {
            if (id == null || casalid == null)
            {
                return(NotFound());
            }

            var casalMatch = _context.Casal.Include(x => x.PedidoGametas).FirstOrDefault(x => x.CasalID == casalid);
            var dadorMatch = _context.Dador.Include(x => x.Amostras).FirstOrDefault(x => x.DadorId == id);

            if (dadorMatch == null || casalMatch == null)
            {
                return(NoContent());
            }



            var pedidoAssociado = _context.PedidoGametas
                                  .Find(casalMatch.PedidoGametas.PedidoGametasId);

            pedidoAssociado.EstadoProcessoPedido = EstadoProcesso.EncontrouMatch;
            var amostraSelecionada = _context.Amostra.Where(x => x.PedidoGametas == null)
                                     .Where(x => x.DadorId == dadorMatch.DadorId).OrderByDescending(x => x.AmostraId).FirstOrDefault();

            //var amostraSelecionada2 = dadorMatch.Amostras.Where(x=>x.PedidoGametas==null)
            //    .OrderByDescending(x => x.AmostraId).FirstOrDefault();

            if (amostraSelecionada == null)
            {
                //TODO Mensagem erro no processo
                return(NoContent());
            }

            pedidoAssociado.AmostraId = amostraSelecionada.AmostraId;

            //pedidoAssociado.Casal
            //_context.PedidoGametas.Update(pedidoAssociado);
            _context.PedidoGametas.Update(pedidoAssociado);

            var match = MatchHelper.GetMatchStats(casalMatch, dadorMatch);
            await _context.MatchStats.AddAsync(match);

            await _context.SaveChangesAsync();


            return(RedirectToAction("Index"));
        }