public ActionResult List(int id)
        {
            MicroDB.MicroDB db = new MicroDB.MicroDB();

            //Para sacar el json de una consulta X, tool

            /*string strSQL2 = string.Format("select distinct s2.sDescripcion as simbolo1, s1.sDescripcion as simbolo2 "+
             * "from Simbolo s1, Simbolo s2 "+
             * " where s2.sDescripcion = 'diente_ausente' "+
             * " and s1.sDescripcion not like '%abrev%'");
             * var o2 = db.ExecuteReader(strSQL2);*/

            ViewBag.Id = id;
            ViewBag.nCodigoExpediente = "";
            ViewBag.NombrePaciente    = "";
            ViewBag.sCedula           = "";
            ViewBag.dFechaPlacagrama  = "";

            string strSQL = string.Format("SELECT * FROM vwPlacagramaInfoPaciente WHERE nPlacagramaID = {0}", id);
            var    o      = db.ExecuteReaderList(strSQL);

            if (o != null)
            {
                if (o.Count > 0)
                {
                    DateTime dt = Convert.ToDateTime(o[0]["dFechaPlacagrama"]);

                    ViewBag.nCodigoExpediente = o[0]["nCodigoExpediente"];
                    ViewBag.NombrePaciente    = o[0]["NombrePaciente"];
                    ViewBag.sCedula           = o[0]["sCedula"];
                    ViewBag.dFechaPlacagrama  = dt.ToString("dd/MM/yyyy");
                }
            }

            return(View());
        }
        public ActionResult SavePlacagramaDetalle([FromBody] JsonModel jsonModel)
        {
            MicroDB.MicroDB db = new MicroDB.MicroDB();

            int oids = (jsonModel != null)?int.Parse(jsonModel.oId.ToString()):0;

            List <Odontograma> odontograma = new List <Odontograma>();

            var objects = JArray.Parse(jsonModel.detail); //Leer JSON que entra por POST

            foreach (JObject root in objects)             //Recorrer JSON e insertarlos en el ArrayList
            {
                var oid = root.GetValue("nPlacagramaID");
                var odi = root.GetValue("nPlacagramaDetalleID");
                var d   = root.GetValue("sDescripcion");
                var nd  = root.GetValue("sNombreDiente");

                int    odis = int.Parse(odi.ToString());
                string ds   = d.ToString();
                string nds  = nd.ToString();

                Odontograma o = new Odontograma(oids, odis, ds, nds);
                odontograma.Add(o);
            }

            // ALGORITMO GENERAL
            //Los que vengan con nOdontogramaDetalleID: 0, insert
            //Los que vengan con nOdontogramaDetalleID: x, update
            //Los que no vengan, pero estén en la BD: logical delete

            // ALGORITMO EN C# :
            // 1- Recorrer lista de simbolos SQL de odontogramadetalle (active=1)
            // 2- Si el id existe en el array, actualizar el diente del arraylist hacia la BD
            // 3- Si el id solo existe en la BD, eliminar el registro logicamente (set active=0)
            // 4- Recorrer aparte los del arraylist e insertarlos si no existen en la BD
            // 5- No puede pasar que un registro oid!=0 este en el arraylist y no en la BD,
            //    porque para existir en el arraylist con un id, tuvo que extraerse de la BD con anterioridad.
            //    Sin embargo, para evitar cualquier inconsistencia, se creará un nuevo id para este.


            var consulta = db.ExecuteReaderList("select * from vwPlacagramaDetalle where nPlacagramaID=" + oids);

            foreach (var i in consulta)
            {
                Odontograma item = odontograma.Where(c => c.d.Equals(i["sDescripcion"]) && c.nd.Equals(i["sNombreDiente"]) && c.odi == int.Parse(i["nPlacagramaDetalleID"].ToString())).FirstOrDefault();
                //Si existe en el array...
                if (item != null)
                {
                    //Actualizar sNombreDiente en la BD con el odi especifico
                    string strSQL = string.Format("Exec spGrabarPlacagramaDetalle {0}, {1}, '{2}', '{3}', 0; ", item.oid, item.odi, item.nd, item.d);
                    db.ExecuteSqlCommand(strSQL);
                }
                else
                {
                    //Desactivar el simbolo con el odi especifico
                    string strSQL = string.Format("Exec spGrabarPlacagramaDetalle {0}, {1}, '{2}', '{3}', 1; ", i["nPlacagramaID"], i["nPlacagramaDetalleID"], i["sNombreDiente"], i["sDescripcion"]);
                    db.ExecuteSqlCommand(strSQL);
                }
            }

            //Recorrer arraylist
            foreach (var i in odontograma)
            {
                //Si no existe en la BD...
                if (consulta.Where(c => int.Parse(c["nPlacagramaDetalleID"].ToString()) == i.odi && c["sDescripcion"].Equals(i.d) && c["sNombreDiente"].Equals(i.nd)).ToList().Count == 0)
                {
                    //Insertar registro nuevo
                    string strSQL = string.Format("Exec spGrabarPlacagramaDetalle {0}, {1}, '{2}', '{3}', 0; ", i.oid, i.odi, i.nd, i.d);
                    db.ExecuteSqlCommand(strSQL);
                }
            }

            return(Json(1));
        }