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); }