public async Task <IActionResult> Edit(int id, [Bind("IdInstanciaPlantilla,Nombre,AspNetUser,Estado,Iniciada,Descripcion,Fecha")] InstanciasPlantillas instanciasPlantillas) { if (id != instanciasPlantillas.IdInstanciaPlantilla) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(instanciasPlantillas); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!InstanciasPlantillasExists(instanciasPlantillas.IdInstanciaPlantilla)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["AspNetUser"] = new SelectList(_context.Users, "Id", "Id", instanciasPlantillas.AspNetUser); return(View(instanciasPlantillas)); }
public async Task <IActionResult> Create([Bind("IdInstanciaPlantilla,Nombre,AspNetUser,Estado,Iniciada,Descripcion,Fecha")] InstanciasPlantillas instanciasPlantillas) { if (ModelState.IsValid) { _context.Add(instanciasPlantillas); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["AspNetUser"] = new SelectList(_context.Users, "Id", "Id", instanciasPlantillas.AspNetUser); return(View(instanciasPlantillas)); }
public async Task <IActionResult> Instance(int IdPlantilla) { var plantilla = await _context.Plantillas .Include(p => p.PlantillasPasosDetalle) .ThenInclude(p => p.PasoNavigation) .Include(p => p.PlantillasPasosDetalle) .ThenInclude(p => p.PlantillasPasosUsuariosDetalle) .ThenInclude(p => p.AspNetUserNavigation) .Include(p => p.PlantillasCamposDetalle) .ThenInclude(p => p.IdDatoTipoNavigation) .Include(p => p.PlantillasCamposDetalle) .ThenInclude(p => p.PasosPlantillasCamposDetalle) .FirstOrDefaultAsync(m => m.IdPlantilla == IdPlantilla); if (plantilla == null) { return(NotFound()); } var currentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var steps = new List <InstanciasPlantillasPasosDetalle>(); foreach (var templateStep in plantilla.PlantillasPasosDetalle) { var templateStepsUsers = new List <PasosUsuariosDetalle>(); foreach (var usersInStep in templateStep.PlantillasPasosUsuariosDetalle) { templateStepsUsers.Add( new PasosUsuariosDetalle { AspNetUser = usersInStep.AspNetUser } ); } steps.Add( new InstanciasPlantillasPasosDetalle { AspNetUser = currentUserId, PasosUsuariosDetalle = templateStepsUsers, PasoNavigation = new PasosInstancias { Nombre = templateStep.PasoNavigation.Nombre, Descripcion = templateStep.PasoNavigation.Descripcion, FechaInicio = DateTime.Now, IdLinkHelper = templateStep.Paso, Numero = templateStep.PasoNavigation.Numero.GetValueOrDefault() } } ); } var fields = new List <InstanciasPlantillasDatosDetalle>(); foreach (var templateField in plantilla.PlantillasCamposDetalle) { fields.Add( new InstanciasPlantillasDatosDetalle { NombreCampo = templateField.NombreCampo, IdDatoTipo = templateField.IdDatoTipo, IdLinkHelper = templateField.IdPlantillaCampo } ); } var instance = new InstanciasPlantillas { Nombre = $"{plantilla.Nombre}", Descripcion = plantilla.Descripcion, AspNetUser = currentUserId, Fecha = DateTime.Now, Estado = "Iniciada", Iniciada = "1", InstanciasPlantillasPasosDetalle = steps, InstanciasPlantillasDatosDetalle = fields, }; _context.Add(instance); await _context.SaveChangesAsync(); var instancedStepsAndFieldsLinks = new List <PasosInstanciasDatosDetalle>(); foreach (var details in plantilla.PlantillasCamposDetalle) { foreach (var link in details.PasosPlantillasCamposDetalle) { var instancedLink = new PasosInstanciasDatosDetalle { SoloLectura = link.SoloLectura, InstanciaPlantillaDato = instance.InstanciasPlantillasDatosDetalle .Where(x => x.IdLinkHelper == link.PlantillaCampo) .Select(x => x.IdInstanciaPlantillaDato) .FirstOrDefault(), Paso = instance.InstanciasPlantillasPasosDetalle .Where(x => x.PasoNavigation.IdLinkHelper == link.Paso) .Select(x => x.Paso) .FirstOrDefault() }; instancedStepsAndFieldsLinks.Add(instancedLink); } } _context.AddRange(instancedStepsAndFieldsLinks); await _context.SaveChangesAsync(); TempData["Success"] = "Plantilla instanciada exitosamente."; return(RedirectToAction(nameof(InstanciasPlantillasController.Details), nameof(InstanciasPlantillas), new { id = instance.IdInstanciaPlantilla })); }
//[ValidateAntiForgeryToken] public async Task <IActionResult> Instance(int id) { var plantilla = await _context.Plantillas .Include(p => p.PlantillasPasosDetalle) .ThenInclude(p => p.PasoNavigation) .Include(p => p.PlantillasPasosDetalle) .ThenInclude(p => p.PlantillasPasosUsuariosDetalle) .ThenInclude(p => p.AspNetUserNavigation) .Include(p => p.PlantillasCamposDetalle) .ThenInclude(p => p.IdDatoTipoNavigation) .FirstOrDefaultAsync(m => m.IdPlantilla == id); if (plantilla == null) { return(NotFound()); } var currentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var steps = new List <InstanciasPlantillasPasosDetalle>(); foreach (var templateStep in plantilla.PlantillasPasosDetalle) { var templateStepsUsers = new List <PasosUsuariosDetalle>(); foreach (var usersInStep in templateStep.PlantillasPasosUsuariosDetalle) { templateStepsUsers.Add( new PasosUsuariosDetalle { AspNetUser = usersInStep.AspNetUser } ); } steps.Add( new InstanciasPlantillasPasosDetalle { AspNetUser = currentUserId, PasosUsuariosDetalle = templateStepsUsers, PasoNavigation = new PasosInstancias { Nombre = templateStep.PasoNavigation.Nombre, Descripcion = templateStep.PasoNavigation.Descripcion } } ); } var fields = new List <InstanciasPlantillasDatosDetalle>(); foreach (var templateField in plantilla.PlantillasCamposDetalle) { fields.Add( new InstanciasPlantillasDatosDetalle { NombreCampo = templateField.NombreCampo, IdDatoTipo = templateField.IdDatoTipo, } ); } var instance = new InstanciasPlantillas { Nombre = $"{plantilla.Nombre}", Descripcion = plantilla.Descripcion, AspNetUser = currentUserId, Fecha = DateTime.Now, Estado = "0", Iniciada = "0", InstanciasPlantillasPasosDetalle = steps, InstanciasPlantillasDatosDetalle = fields, }; _context.Add(instance); await _context.SaveChangesAsync(); TempData["Success"] = "Plantilla instanciada exitosamente."; return(RedirectToAction(nameof(InstanciasPlantillasController.Assign), nameof(InstanciasPlantillas), new { id = instance.IdInstanciaPlantilla })); }