예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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 }));
        }
예제 #4
0
        //[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 }));
        }