public static string SalvaMaster(int idMaster, string codice, string descrizione, string areaProduzione, string task, ElementoMaster[] elementiLista, string account) { SchedeProcessoDS ds = new SchedeProcessoDS(); using (SchedeProcessoBusiness bScheda = new SchedeProcessoBusiness()) { bScheda.GetSPMaster(ds, idMaster); bScheda.FillElementi(ds, idMaster, true); SchedeProcessoDS.SPMASTERSRow riga = ds.SPMASTERS.Where(x => x.IDSPMASTER == idMaster).FirstOrDefault(); if (string.IsNullOrEmpty(codice)) { int maxIDSPMasyer = bScheda.GetMaxIDSPMaster() + 1; codice = "MA" + maxIDSPMasyer.ToString().PadLeft(ds.SPMASTERS.CODICEColumn.MaxLength - 2, '0'); } if (riga != null) { riga.CODICE = codice.ToUpper(); riga.DESCRIZIONE = descrizione.ToUpper(); riga.AREAPRODUZIONE = areaProduzione.ToUpper(); riga.TASK = task.ToUpper(); riga.DATAMODIFICA = DateTime.Now; riga.UTENTEMODIFICA = account; } else { riga = ds.SPMASTERS.NewSPMASTERSRow(); riga.CODICE = codice.ToUpper(); riga.DESCRIZIONE = descrizione.ToUpper(); riga.AREAPRODUZIONE = areaProduzione.ToUpper(); riga.TASK = task.ToUpper(); riga.CANCELLATO = false; riga.DATAMODIFICA = DateTime.Now; riga.UTENTEMODIFICA = account.ToUpper(); ds.SPMASTERS.AddSPMASTERSRow(riga); } if (idMaster > 0) { List <int> listaIdElementi = elementiLista.Where(x => x.IDElemento > 0).Select(x => x.IDElemento).Distinct().ToList(); foreach (SchedeProcessoDS.SPELEMENTIRow elemento in ds.SPELEMENTI) { if (!listaIdElementi.Contains(elemento.IDSPELEMENTO)) { elemento.CANCELLATO = true; elemento.DATAMODIFICA = DateTime.Now; elemento.UTENTEMODIFICA = account; } } } List <int> idControlliObbligatori = SPElemento.EstraiListaSPElementiObbligatori(1, true).Select(x => x.IdSPControllo).Distinct().ToList(); int sequenza = 0; foreach (ElementoMaster elemento in elementiLista) { if (!idControlliObbligatori.Contains(elemento.IDControllo)) { sequenza++; SPElemento.SalvaElemento(elemento.IDElemento, elemento.IDControllo, riga.IDSPMASTER, elemento.Testo, elemento.Tipo, elemento.Obbligatorio, sequenza, account, ds); } } bScheda.UpdateTableSPMaster(ds); bScheda.UpdateTable(ds.SPELEMENTI.TableName, ds); } return("Master creato correttamente"); }