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