public JsonExtended GuardarDatos(AccidenteModel model)
        {
            try
            {
                if (model == null)
                    return Resultado_Error("El modelo es incorecto.");

                //Crear nuevo
                if (model.IdAccidente <= 0)
                {
                    var nuevoAccidente = new Accidente();
                    nuevoAccidente.CausaRaiz = model.CausaRaiz;
                    nuevoAccidente.Descr = model.Descr;
                    nuevoAccidente.Fecha = model.Fecha;
                    nuevoAccidente.IdEmpleado = model.IdEmpleado;

                    if (model.Lesiones != null)
                    {
                        foreach (var l in model.Lesiones)
                        {
                            var nuevaLesion = new LesionXAccidente();
                            nuevaLesion.IdLesion = l.IdLesion;
                            nuevoAccidente.LesionXAccidente.Add(nuevaLesion);
                        }
                    }

                    if (model.Acciones != null)
                    {
                        foreach (var ac in model.Acciones)
                        {
                            var nuevaAccion = new AccionXAccidente();
                            nuevaAccion.Descr = ac.Descr;
                            nuevaAccion.Fecha = ac.Fecha;
                            nuevaAccion.Resp = ac.Resp;

                            nuevoAccidente.AccionXAccidente.Add(nuevaAccion);
                        }
                    }

                    db.Accidente.Add(nuevoAccidente);
                    db.SaveChanges();

                    model.IdAccidente = nuevoAccidente.IdAccidente;

                    return Resultado_Correcto(model, "El accidente ha sido guardado");

                }
                else
                {
                    var accidenteExistente = db.Accidente.First(x => x.IdAccidente == model.IdAccidente);

                    if (accidenteExistente == null)
                        return Resultado_Error("No se pudo encontrar la informacion del accidente.");

                    accidenteExistente.CausaRaiz = model.CausaRaiz;
                    accidenteExistente.Descr = model.Descr;
                    accidenteExistente.Fecha = model.Fecha;
                    accidenteExistente.IdEmpleado = model.IdEmpleado;

                    if (model.Lesiones != null)
                    {
                        foreach (var les in model.Lesiones)
                        {
                            var lesionExistente = accidenteExistente.LesionXAccidente.FirstOrDefault(x => x.IdLesion == les.IdLesion);

                            if (les.Agregada && lesionExistente == null) //Se agrego y no existia en la BDD
                            {
                                var nuevaLesion = new LesionXAccidente();
                                nuevaLesion.IdLesion = les.IdLesion;
                                accidenteExistente.LesionXAccidente.Add(nuevaLesion);
                            }

                            if (les.Eliminada && lesionExistente != null) //Fue eliminada y ya estaba en la bdd
                            {
                                //accidenteExistente.LesionXAccidente.Remove(lesionExistente);
                                db.LesionXAccidente.Remove(lesionExistente);
                            }
                        }
                    }

                    if (model.Acciones != null)
                    {
                        foreach (var ac in model.Acciones)
                        {

                            if (ac.Agregada) //Se agrego
                            {
                                var nuevaAccion = new AccionXAccidente();
                                nuevaAccion.Descr = ac.Descr;
                                nuevaAccion.Fecha = ac.Fecha;
                                nuevaAccion.Resp = ac.Resp;

                                accidenteExistente.AccionXAccidente.Add(nuevaAccion);
                            }

                            if (ac.Eliminada && ac.IdAccion > 0) //Fue eliminada y ya estaba en la bdd
                            {
                                var accionExistente = accidenteExistente.AccionXAccidente.FirstOrDefault(x => x.IdAccion == ac.IdAccion);

                                if (accionExistente != null)
                                    db.AccionXAccidente.Remove(accionExistente);
                            }
                        }
                    }

                    db.Entry(accidenteExistente).State = EntityState.Modified;
                    db.SaveChanges();

                    model.IdAccidente = accidenteExistente.IdAccidente;

                    return Resultado_Correcto(model, "El accidente ha sido actualizado a las " + DateTime.Now.ToShortTimeString());

                }

            }
            catch (Exception ex)
            {
                return Resultado_Error("Ha ocurrido un error:" + ex.Message);
            }
        }
        public JsonExtended ObtenerInfo(string id)
        {
            var model = new AccidenteModel();

            if (string.IsNullOrEmpty(id))
            {
                model.IdAccidente = -1;
                return Resultado_Correcto(model, "");
            }

            var nId = int.Parse(id);

            var accidente = db.Accidente.FirstOrDefault(x => x.IdAccidente == nId);

            model.Descr = accidente.Descr;
            model.Fecha = accidente.Fecha;//  accidente.Fecha.HasValue ? accidente.Fecha.Value.ToShortDateString() : "";
            model.IdAccidente = accidente.IdAccidente;
            model.CausaRaiz = accidente.CausaRaiz;

            if (accidente.Empleado != null)
            {
                model.IdEmpleado = accidente.IdAccidente;
                model.Empleado = accidente.Empleado.Nombre;
            }

            if (accidente.AccionXAccidente != null)
            {
                foreach (var accion in accidente.AccionXAccidente)
                {
                    var am = new AccionModel();
                    am.IdAccion = accion.IdAccion;
                    am.Eliminada = false;
                    am.Agregada = false;
                    am.Descr = accion.Descr;
                    am.Fecha = accion.Fecha;
                    am.FechaStr = accion.Fecha.HasValue ? accion.Fecha.Value.ToShortDateString() : "";
                    am.IdAccidente = accion.IdAccidente;
                    am.Resp = accion.Resp;

                    model.Acciones.Add(am);
                }
            }

            if (accidente.LesionXAccidente != null)
            {
                foreach (var l in accidente.LesionXAccidente)
                {
                    var lm = new LesionModel();
                    lm.IdLesion = l.IdLesion;
                    lm.IdAccidente = l.IdAccidente;
                    lm.Eliminada = false;
                    lm.Agregada = false;

                    lm.Causa = l.Lesion.Causa;
                    lm.Gravedad = l.Lesion.Gravedad;
                    lm.Ocurrencia = l.Lesion.Ocurrencia;
                    lm.Status = l.Lesion.Status;
                    lm.Tipo = l.Lesion.Tipo;

                    model.Lesiones.Add(lm);

                }
            }

            return Resultado_Correcto(model);
        }