// GET: ConsultaTerapia/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var consultaTerapia = await _context.ConsultaTerapias
                                  .Include(c => c.Diagnostico)
                                  .Include(c => c.Medico)
                                  .Include(c => c.Terapia)
                                  .Include(c => c.Paciente)
                                  .FirstOrDefaultAsync(m => m.ConsultaTerapiaId == id);

            if (consultaTerapia == null)
            {
                return(NotFound());
            }

            if (consultaTerapia.CantidadTerapiaSemana >= 2 && !consultaTerapia.SeccionesPorSemana)
            {
                consultaTerapia.CantidadTerapiaSemana = 1;
            }

            var consultaTerapiaView = new ConsultaTerapiaViewModel
            {
                ConsultaTerapiaId     = consultaTerapia.ConsultaTerapiaId,
                PacienteId            = consultaTerapia.PacienteId,
                Paciente              = consultaTerapia.Paciente,
                FechaActual           = DateTime.Now,
                MedicoId              = consultaTerapia.MedicoId,
                Medico                = consultaTerapia.Medico,
                DiagnosticoId         = consultaTerapia.DiagnosticoId,
                Diagnostico           = consultaTerapia.Diagnostico,
                Terapia               = consultaTerapia.Terapia,
                TerapiaId             = consultaTerapia.TerapiaId,
                Cedula                = consultaTerapia.Paciente.Cedula,
                PacienteNombre        = consultaTerapia.Paciente.PacienteNombre,
                DadoDeAlta            = consultaTerapia.DadoDeAlta,
                CantidadTerapiaSemana = consultaTerapia.CantidadTerapiaSemana + 1,
                TotalSecciones        = consultaTerapia.TotalSecciones + 1
            };

            var listaDiagnosticos = await this._context.Diagnosticos.AsNoTracking()
                                    .Include(x => x.Especialidad)
                                    .Where(x => x.DiagnosticoId == consultaTerapiaView.DiagnosticoId && x.EspecialidadId == consultaTerapiaView.Diagnostico.EspecialidadId)
                                    .ToListAsync();

            var listaMedicos = await ListaMedicos(consultaTerapiaView.DiagnosticoId);

            var listaTerapias = await ListaTerapias(consultaTerapia.DiagnosticoId);

            ViewData["DiagnosticoId"] = new SelectList(listaDiagnosticos, "DiagnosticoId", "DiagnosticoNombre", consultaTerapia.DiagnosticoId);
            ViewData["MedicoId"]      = new SelectList(listaMedicos, "MedicoId", "Nombre", consultaTerapia.MedicoId);
            ViewData["TerapiaId"]     = new SelectList(listaTerapias, "TerapiaId", "TerapiaNombre", consultaTerapia.TerapiaId);
            return(View(consultaTerapiaView));
        }
        public async Task <IActionResult> Create([Bind("ConsultaTerapiaId,Cedula,PacienteNombre,DiagnosticoId,MedicoId,TerapiaId,DadoDeAlta,CantidadTerapiaSemana,TotalSecciones")] ConsultaTerapiaViewModel consultaTerapia)
        {
            if (ModelState.IsValid)
            {
                var paciente = await _context.Pacientes
                               .FirstOrDefaultAsync(m => m.Cedula == consultaTerapia.Cedula);

                if (!PacienteExists(consultaTerapia.Cedula))
                {
                    paciente = new Paciente
                    {
                        Cedula         = consultaTerapia.Cedula,
                        PacienteNombre = consultaTerapia.PacienteNombre
                    };
                    _context.Add(paciente);
                    await _context.SaveChangesAsync();
                }

                var objConsultaTerapia = new ConsultaTerapia
                {
                    PacienteId            = paciente.PacienteId,
                    FechaActual           = DateTime.Now,
                    MedicoId              = consultaTerapia.MedicoId,
                    DiagnosticoId         = consultaTerapia.DiagnosticoId,
                    TerapiaId             = consultaTerapia.TerapiaId,
                    DadoDeAlta            = consultaTerapia.DadoDeAlta,
                    CantidadTerapiaSemana = consultaTerapia.CantidadTerapiaSemana,
                    TotalSecciones        = consultaTerapia.TotalSecciones + 1
                };
                _context.Add(objConsultaTerapia);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            var listaMedicos = await ListaMedicos(consultaTerapia.DiagnosticoId);

            var listaTerapias = await ListaTerapias(consultaTerapia.DiagnosticoId);

            ViewData["DiagnosticoId"] = new SelectList(_context.Diagnosticos, "DiagnosticoId", "DiagnosticoNombre", consultaTerapia.DiagnosticoId);
            ViewData["MedicoId"]      = new SelectList(listaMedicos, "MedicoId", "Nombre", consultaTerapia.MedicoId);
            ViewData["TerapiaId"]     = new SelectList(listaTerapias, "TerapiaId", "TerapiaNombre", consultaTerapia.TerapiaId);
            return(View(consultaTerapia));
        }
        public async Task <IActionResult> Edit(int id, [Bind("ConsultaTerapiaId,PacienteId,Cedula,PacienteNombre,DiagnosticoId,MedicoId,TerapiaId,DadoDeAlta,CantidadTerapiaSemana,TotalSecciones")] ConsultaTerapiaViewModel consultaTerapia)
        {
            if (id != consultaTerapia.ConsultaTerapiaId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    consultaTerapia.FechaActual = DateTime.Now;
                    _context.Update(consultaTerapia);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ConsultaTerapiaExists(consultaTerapia.ConsultaTerapiaId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            var listaDiagnosticos = await this._context.Diagnosticos.AsNoTracking()
                                    .Include(x => x.Especialidad)
                                    .Where(x => x.DiagnosticoId == consultaTerapia.DiagnosticoId && x.EspecialidadId == consultaTerapia.Diagnostico.EspecialidadId)
                                    .ToListAsync();

            var listaMedicos = await ListaMedicos(consultaTerapia.DiagnosticoId);

            var listaTerapias = await ListaTerapias(consultaTerapia.DiagnosticoId);

            ViewData["DiagnosticoId"] = new SelectList(listaDiagnosticos, "DiagnosticoId", "DiagnosticoNombre", consultaTerapia.DiagnosticoId);
            ViewData["MedicoId"]      = new SelectList(listaMedicos, "MedicoId", "Nombre", consultaTerapia.MedicoId);
            ViewData["TerapiaId"]     = new SelectList(listaTerapias, "TerapiaId", "TerapiaNombre", consultaTerapia.TerapiaId);
            return(View(consultaTerapia));
        }