private bool PreparaDistinte(out string messaggioErrore, out List <Distinta> distinte) { distinte = new List <Distinta>(); try { messaggioErrore = string.Empty; MigrazioneDiBaBLL bll = new MigrazioneDiBaBLL(); List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica = _ds.DATIEXCEL.Where(x => !string.IsNullOrEmpty(x.ANAGRAFICA)).OrderBy(x => x.IDDATAEXCEL).ToList(); if (righeConAnagrafica.Count == 0) { messaggioErrore = "Nessuna anagrafica trovata"; return(false); } MigrazioneDiBaDS.DATIEXCELRow riga = righeConAnagrafica.FirstOrDefault(); int avantiMassimo = _ds.DATIEXCEL.Max(x => x.AVANTI); creaDistinta(riga, 1, _ds.DATIEXCEL.Rows.Count, distinte, righeConAnagrafica, avantiMassimo); ImpaginaMessaggioDistinte(distinte); return(true); } catch (Exception ex) { messaggioErrore = ex.Message; return(false); } }
private void creaDistinta(MigrazioneDiBaDS.DATIEXCELRow riga, int indiceMinimo, int indiceMassimo, List <Distinta> distinte, List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica, int avantiMassimo) { int indice = 0; List <MigrazioneDiBaDS.DATIEXCELRow> righeFiglie = new List <MigrazioneDiBaDS.DATIEXCELRow>(); do { indice++; if (indice > avantiMassimo) { return; } righeFiglie = righeConAnagrafica.Where(x => x.AVANTI == riga.AVANTI + indice && x.IDDATAEXCEL > indiceMinimo && x.IDDATAEXCEL < indiceMassimo).ToList(); } while (righeFiglie.Count == 0); List <Componente> componenti = new List <Componente>(); righeFiglie.ForEach(x => componenti.Add(new Componente(x.ANAGRAFICA, x.QUANTITA))); distinte.Add(new Distinta(riga.ANAGRAFICA, componenti)); for (int i = 0; i < righeFiglie.Count; i++) { if (i < righeFiglie.Count - 1) { creaDistinta(righeFiglie[i], righeFiglie[i].IDDATAEXCEL, righeFiglie[i + 1].IDDATAEXCEL, distinte, righeConAnagrafica, avantiMassimo); } else { creaDistinta(righeFiglie[i], righeFiglie[i].IDDATAEXCEL, indiceMassimo, distinte, righeConAnagrafica, avantiMassimo); } } }
private bool PreparaCicli(out string messaggioErrore, out List <Ciclo> cicli) { cicli = new List <Ciclo>(); try { messaggioErrore = string.Empty; MigrazioneDiBaBLL bll = new MigrazioneDiBaBLL(); List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica = _ds.DATIEXCEL.Where(x => !string.IsNullOrEmpty(x.ANAGRAFICA)).OrderByDescending(x => x.IDDATAEXCEL).ToList(); if (righeConAnagrafica.Count == 0) { messaggioErrore = "Nessuna anagrafica trovata"; return(false); } int idInizioCiclo = 0; int avanti = 0; foreach (MigrazioneDiBaDS.DATIEXCELRow riga in righeConAnagrafica) { if (idInizioCiclo == 0) { idInizioCiclo = riga.IDDATAEXCEL; avanti = riga.AVANTI; } else if (idInizioCiclo > 0) { if (riga.AVANTI < avanti) { cicli.Add(new Ciclo(idInizioCiclo, riga.IDDATAEXCEL, riga.ANAGRAFICA)); } idInizioCiclo = riga.IDDATAEXCEL; avanti = riga.AVANTI; } } foreach (Ciclo c in cicli) { int operazione = 10; for (int i = c.Inizio - 1; i >= c.Fine; i--) { MigrazioneDiBaDS.DATIEXCELRow riga = _ds.DATIEXCEL.Where(x => x.IDDATAEXCEL == i).FirstOrDefault(); if (riga != null) { Fase f = new Fase(); f.Operazione = operazione; operazione += 10; f.AreaProduzione = riga.REPARTO; f.TempoLavorazione = riga.PEZZIORARI > 0 ? 1 / riga.PEZZIORARI : 0; f.Collegamento = riga.COLLEGAMENTO; f.Task = riga.CODICEFASE; if (!string.IsNullOrEmpty(riga.NOTA)) { f.Commenti.Add(riga.NOTA); } c.Fasi.Add(f); } } } ImpaginaMessaggioCicli(cicli); return(true); } catch (Exception ex) { messaggioErrore = ex.Message; return(false); } }