public string ObtenerDatosOdontogramaDetalle(string codigoOdontograma)
        {
            string codigoD = Encriptacion.Decrypt(codigoOdontograma);

            Odontograma odontograma = _context.Odontograma.Include(a => a.OdontogramaDetalle)
                                      .SingleOrDefault(f => f.Codigo == codigoD);

            List <OdontogramaDetalle> listaDetalle = new List <OdontogramaDetalle>();

            foreach (var item in odontograma.OdontogramaDetalle)
            {
                OdontogramaDetalle detalle = new OdontogramaDetalle();
                detalle.Codigo            = item.Codigo;
                detalle.CodigoOdontograma = item.CodigoOdontograma;
                detalle.Pieza             = item.Pieza;
                detalle.Region            = item.Region;
                detalle.Enfermedad        = item.Enfermedad;
                detalle.Valor             = item.Valor;
                detalle.Diagnostico       = item.Diagnostico;
                listaDetalle.Add(detalle);
            }



            return(JsonConvert.SerializeObject(listaDetalle));
            //return View(odontograma);
        }
        [HttpPost]              //public async Task<string> Create(Odontograma odontograma , IFormFile svg742, string hola, IFormFile imagen)
        public async Task <string> Create(List <Odontograma> odontograma)
        {
            var i = (ClaimsIdentity)User.Identity;

            try
            {
                //guardar el odontograma
                Odontograma odont     = new Odontograma();
                Int64       maxCodigo = 0;
                maxCodigo  = Convert.ToInt64(_context.Odontograma.Max(f => f.Codigo));
                maxCodigo += 1;

                odont.Codigo = maxCodigo.ToString("D8");
                odont.CodigoCitaOdontologica = Encriptacion.Decrypt(odontograma[0].CodigoCitaOdontologica);
                odont.FechaActualizacion     = fecha;
                odont.Observaciones          = null;
                odont.Estado = "I";

                _context.Odontograma.Add(odont);

                //guardar odontogramaDetalle
                Int64 maxCodigoOd = 0;
                maxCodigoOd = Convert.ToInt64(_context.OdontogramaDetalle.Max(f => f.Codigo));
                foreach (var detalle in odontograma[0].OdontogramaDetalle)
                {
                    OdontogramaDetalle odontDetalle = new OdontogramaDetalle();
                    maxCodigoOd                   += 1;
                    odontDetalle.Codigo            = maxCodigoOd.ToString("D8");
                    odontDetalle.CodigoOdontograma = odont.Codigo;
                    odontDetalle.Pieza             = detalle.Pieza;
                    odontDetalle.Region            = detalle.Region;
                    odontDetalle.Enfermedad        = detalle.Enfermedad;
                    odontDetalle.Valor             = detalle.Valor;
                    odontDetalle.Diagnostico       = detalle.Diagnostico;
                    _context.OdontogramaDetalle.Add(odontDetalle);
                }

                await _context.SaveChangesAsync();

                await _auditoria.GuardarLogAuditoria(fecha, i.Name, "Odontograma", odont.Codigo, "I");

                //ViewBag.Message = "Guardado";

                return(" Se Guardado Correctamente");
            }
            catch (Exception e)
            {
                string mensaje = e.Message;
                if (e.InnerException != null)
                {
                    mensaje = MensajesError.UniqueKey(e.InnerException.Message);
                }

                //ViewBag.Message = mensaje;

                return(mensaje);
            }
        }
        public async Task <string> Edit(List <Odontograma> odontograma)
        {
            var i = (ClaimsIdentity)User.Identity;
            List <SelectListItem> Personal = new SelectList(_context.Personal.OrderBy(c => c.NombreCompleto).Where(c => c.Estado == true), "Codigo", "NombreCompleto", odontograma[0].CodigoPersonal).ToList();
            List <SelectListItem> Paciente = new SelectList(_context.Paciente.OrderBy(p => p.NombreCompleto).Where(p => p.Estado == true), "Codigo", "NombreCompleto", odontograma[0].CodigoPaciente).ToList();

            if (i.IsAuthenticated)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        try
                        {
                            var transaction = _context.Database.BeginTransaction();
                            //actualizar odontograma
                            odontograma[0].Codigo = Encriptacion.Decrypt(odontograma[0].Codigo);
                            Odontograma odontogramaAntiguo = _context.Odontograma.SingleOrDefault(p => p.Codigo == odontograma[0].Codigo);
                            odontogramaAntiguo.Codigo = odontograma[0].Codigo;
                            odontogramaAntiguo.CodigoCitaOdontologica = odontograma[0].CodigoCitaOdontologica;
                            odontogramaAntiguo.FechaActualizacion     = fecha;
                            odontogramaAntiguo.Observaciones          = null;
                            odontogramaAntiguo.Estado = "A";


                            var tipoComprobantesImpuesto = _context.OdontogramaDetalle.Where(a => a.CodigoOdontograma == odontograma[0].Codigo).ToList();
                            foreach (var item in tipoComprobantesImpuesto)
                            {
                                _context.OdontogramaDetalle.Remove(item);
                            }
                            _context.SaveChanges();

                            //guardar odontogramaDetalle
                            Int64 maxCodigoOd = 0;
                            maxCodigoOd = Convert.ToInt64(_context.OdontogramaDetalle.Max(f => f.Codigo));
                            foreach (var detalle in odontograma[0].OdontogramaDetalle)
                            {
                                OdontogramaDetalle odontDetalle = new OdontogramaDetalle();
                                maxCodigoOd                   += 1;
                                odontDetalle.Codigo            = maxCodigoOd.ToString("D8");
                                odontDetalle.CodigoOdontograma = odontograma[0].Codigo;
                                odontDetalle.Pieza             = detalle.Pieza;
                                odontDetalle.Region            = detalle.Region;
                                odontDetalle.Enfermedad        = detalle.Enfermedad;
                                odontDetalle.Valor             = detalle.Valor;
                                odontDetalle.Diagnostico       = detalle.Diagnostico;
                                _context.OdontogramaDetalle.Add(odontDetalle);
                            }

                            _context.Update(odontogramaAntiguo);
                            _context.SaveChanges();
                            transaction.Commit();
                            await _auditoria.GuardarLogAuditoria(Funciones.ObtenerFechaActual("SA Pacific Standard Time"), i.Name, "Odontograma", odontograma[0].Codigo, "U");

                            ViewBag.Message = "Save";

                            Personal.Insert(0, vacio);
                            ViewData["CodigoPersonal"] = Personal;

                            Paciente.Insert(0, vacio);
                            ViewData["CodigoPaciente"] = Paciente;

                            return("Save");
                        }
                        catch (DbUpdateConcurrencyException)
                        {
                            throw;
                        }
                    }

                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    return("No es valido");
                }
                catch (Exception e)
                {
                    string mensaje = e.Message;
                    if (e.InnerException != null)
                    {
                        mensaje = MensajesError.UniqueKey(e.InnerException.Message);
                    }

                    ViewBag.Message = mensaje;

                    Personal.Insert(0, vacio);
                    ViewData["CodigoPersonal"] = Personal;

                    Paciente.Insert(0, vacio);
                    ViewData["CodigoPaciente"] = Paciente;

                    return(e.InnerException.Message);
                }
            }
            else
            {
                return("No autenticado");
            }
        }