public ActionResult AgregarEtapa(AgregarEtapaViewModel vm) { DateTime hoy = DateTime.Today; using (obligP3parte2Context db = new obligP3parte2Context()) { // cargar el exp y todo las cosas que fueron seleccionadas Expediente exp = db.Expedientes.Find(vm.Expediente.Codigo); Etapa etapa = db.Etapas.Find(vm.EtapaSeleccionada); Funcionario func = db.Funcionarios.Find(vm.FuncSeleccionado); if (exp == null || etapa == null || func == null || !vm.MapearArchivo()) { return(HttpNotFound()); } // si está todo bien cargado se agregar la etapa cumplida con sus cosas EtapaCumplida etapaAgregar = new EtapaCumplida() { Etapa = etapa, Expediente = exp, FechaFin = hoy, Funcionario = func, Documento = vm.ArchivoNombre }; etapaAgregar.SuperaLapsoMax = etapaAgregar.CalcularTiempoOk(); exp.EtapasCumplidas.Add(etapaAgregar); exp.RevisarEtapasCumplidas(); db.SaveChanges(); // cargar expediente con todo para mandarlo a details Expediente expConTodo = db.Expedientes .Where(e => e.Codigo == vm.Expediente.Codigo) .Include(t => t.Tramite) .Include(e => e.EtapasCumplidas.Select(ee => ee.Funcionario)) .Include(e => e.EtapasCumplidas.Select(eee => eee.Etapa)) .FirstOrDefault(); return(View("Details", expConTodo)); } }