예제 #1
0
        private ModuliInseriti PopolaModuliAssegnati(Progetto progetto)
        {
            var tuttiModuli    = _context.Moduli;
            var moduliProgetto = new HashSet <ModuliProgetto>(progetto.ModuliProgetto);
            var dati           = new List <ModuliInProgetto>();

            foreach (var modulo in tuttiModuli)
            {
                bool   inserito = moduliProgetto.Any(m => m.ModuloID == modulo.ID);
                string target   = "";
                if (inserito)
                {
                    target = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID).Target;
                }
                dati.Add(new ModuliInProgetto
                {
                    ModuloID     = modulo.ID,
                    Nome         = modulo.Nome,
                    Comando      = modulo.Comando,
                    Inserito     = inserito,
                    Target       = target,
                    Applicazione = modulo.Applicazione,
                });
            }
            var viewmodel = new ModuliInseriti {
                Progetto = progetto, ListaModuliConTarget = dati
            };

            //ViewData["Moduli"] = dati;
            return(viewmodel);
        }
예제 #2
0
        private ModuliInseriti PopolaModuliAssegnatiErrore(Progetto progetto, List <ModuliInProgetto> listaModuliAggiornati, List <string> ModuliSenzaTarget, List <string> ModuliSenzaInserito)
        {
            var tuttiModuli = _context.Moduli;
            var dati        = new List <ModuliInProgetto>();

            foreach (var modulo in tuttiModuli)
            {
                bool   inserito = listaModuliAggiornati.Any(m => m.ModuloID == modulo.ID && m.Inserito);
                string target   = listaModuliAggiornati.SingleOrDefault(m => m.ModuloID == modulo.ID).Target;
                if (inserito && string.IsNullOrEmpty(target))
                {
                    //guardo se c'è il target, sennò lo metto nella lista dei moduli senza target
                    if (modulo.Applicazione != webmva.Models.APPLICAZIONE.WIFITE && modulo.Applicazione != webmva.Models.APPLICAZIONE.NOSQL && modulo.Applicazione != webmva.Models.APPLICAZIONE.OPENVAS && modulo.Applicazione != webmva.Models.APPLICAZIONE.SERVER)
                    {
                        ModuliSenzaTarget.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome);
                    }
                }

                else if (!inserito && !string.IsNullOrEmpty(target))
                {
                    // il target è non vuoto ma non è stato inserito, quindi lo metto nella lista dei moduli senza inserito
                    ModuliSenzaInserito.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome);
                }
                dati.Add(new ModuliInProgetto
                {
                    ModuloID     = modulo.ID,
                    Nome         = modulo.Nome,
                    Comando      = modulo.Comando,
                    Inserito     = inserito,
                    Target       = target,
                    Applicazione = modulo.Applicazione,
                });
            }
            var viewmodel = new ModuliInseriti {
                Progetto = progetto, ListaModuliConTarget = dati
            };

            //ViewData["Moduli"] = dati;
            return(viewmodel);
        }
예제 #3
0
        public async Task <IActionResult> Edit(int?id, ModuliInseriti moduliInseriti, string[] moduliSelezionati)
        {
            if (id == null)
            {
                MyLogger.Log(messaggio: $"ERRORE: Richiesta POST: nessun id fornito", controller: "ProgettoController", metodo: "Edit");
                return(NotFound());
            }
            var progetto = await _context.Progetti
                           .Include(p => p.ModuliProgetto)
                           .ThenInclude(m => m.Modulo)
                           .AsNoTracking()
                           .SingleOrDefaultAsync(a => a.ID == id);

            if (progetto == null)
            {
                MyLogger.Log(messaggio: $"ERRORE: Richiesta POST con id {id} fallita: nessun progetto con questo id", controller: "ProgettoController", metodo: "Edit");
                return(NotFound());
            }

            if (await TryUpdateModelAsync <Progetto>(progetto, "",
                                                     i => i.Nome, i => i.Descrizione))
            {
                if (AggiornaModuliInseriti(moduliInseriti.ListaModuliConTarget, progetto))
                {
                    progetto.Nome        = moduliInseriti.Progetto.Nome;
                    progetto.Descrizione = moduliInseriti.Progetto.Descrizione;

                    _context.Update(progetto);
                    try
                    {
                        await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateException /* ex */)
                    {
                        MyLogger.Log(messaggio: $"ERRORE CRITICO: Richiesta POST con id {id}: Errore nel DB", controller: "ProgettoController", metodo: "Edit");
                        throw;
                    }
                }
                else
                {
                    List <string> ModuliSenzaTarget   = new List <string>();
                    List <string> ModuliSenzaInserito = new List <string>();
                    var           view = PopolaModuliAssegnatiErrore(progetto, moduliInseriti.ListaModuliConTarget, ModuliSenzaTarget, ModuliSenzaInserito);
                    ViewData["ListaSenzaTarget"]   = ModuliSenzaTarget;
                    ViewData["ListaSenzaInserito"] = ModuliSenzaInserito;
                    if (moduliInseriti.ListaModuliConTarget.All(m => m.Inserito == false && string.IsNullOrEmpty(m.Target)))
                    {
                        ViewData["ProgettoSenzaModuli"] = "Inserire almeno un modulo col relativo target";
                    }
                    MyLogger.Log(messaggio: $"AVVISO: Richiesta POST con id {id}: Richiesta riuscita ma contenuto con errori.", controller: "ProgettoController", metodo: "Edit");
                    return(View(view));
                }
                MyLogger.Log(messaggio: $"Richiesta POST con id {id}", controller: "ProgettoController", metodo: "Edit");
                MyLogger.Log(messaggio: $"\tProgetto con nome {progetto.Nome} modificato", controller: "ProgettoController", metodo: "Edit");
                return(RedirectToAction(nameof(Index)));
            }
            List <string> ModuliSenzaTarget1   = new List <string>();
            List <string> ModuliSenzaInserito1 = new List <string>();
            var           view1 = PopolaModuliAssegnatiErrore(progetto, moduliInseriti.ListaModuliConTarget, ModuliSenzaTarget1, ModuliSenzaInserito1);

            ViewData["ListaSenzaTarget"]   = ModuliSenzaTarget1;
            ViewData["ListaSenzaInserito"] = ModuliSenzaInserito1;
            if (moduliInseriti.ListaModuliConTarget.All(m => m.Inserito == false && string.IsNullOrEmpty(m.Target)))
            {
                ViewData["ProgettoSenzaModuli"] = "Inserire almeno un modulo col relativo target";
            }
            MyLogger.Log(messaggio: $"AVVISO: Richiesta POST con id {id}: Richiesta riuscita ma contenuto con errori.", controller: "ProgettoController", metodo: "Edit");
            return(View(view1));
        }