private void CreaDsPerCartelle(DateTime dataSelezionata)
        {
            _dsServizio = new DataSet();
            DataTable dtCartelle = _dsServizio.Tables.Add();

            dtCartelle.TableName = tableName;
            dtCartelle.Columns.Add("ACCESSORISTA", Type.GetType("System.String"));
            dtCartelle.Columns.Add("DATACOLLAUDO", Type.GetType("System.DateTime"));
            dtCartelle.Columns.Add("PREFISSO", Type.GetType("System.String"));
            dtCartelle.Columns.Add("PARTE", Type.GetType("System.String"));
            dtCartelle.Columns.Add("COLORE", Type.GetType("System.String"));
            dtCartelle.Columns.Add("COMMESSA", Type.GetType("System.String"));
            dtCartelle.Columns.Add("CARTELLA", Type.GetType("System.String"));


            foreach (CDCDS.CDC_DETTAGLIORow dettaglio in _DS.CDC_DETTAGLIO)
            {
                DataRow riga = dtCartelle.NewRow();

                riga[0] = CDCBLL.ConvertiAccessorista(dettaglio.ACCESSORISTA);
                riga[1] = dettaglio.DATACOLLAUDO;
                riga[2] = dettaglio.PREFISSO;
                riga[3] = dettaglio.PARTE;
                riga[4] = dettaglio.COLORE;
                riga[5] = dettaglio.COMMESSAORDINE;

                string cartella = CDCBLL.CreaPathCartella(dataSelezionata, Contesto.PathCollaudo, dettaglio.ACCESSORISTA, dettaglio.PREFISSO, dettaglio.PARTE, dettaglio.COLORE, dettaglio.COMMESSAORDINE);
                riga[idColonnaCartella] = cartella;

                dtCartelle.Rows.Add(riga);
            }
        }
        private void btnCreaPDF_Click(object sender, EventArgs e)
        {
            if (_dsServizio.Tables[tableName].Rows.Count == 0)
            {
                return;
            }

            lblMessaggio.Text = string.Empty;
            decimal IDDETTAGLIO = -1;

            foreach (DataRow riga in _dsServizio.Tables[tableName].Rows)
            {
                IDDETTAGLIO = (decimal)riga[1];
                string RIFERIMENTO = ConvertiInStringa(riga[2]);
                RIFERIMENTO = RIFERIMENTO.ToUpper().Trim();
                string PARTE  = (string)riga[11];
                string COLORE = (string)riga[12];
                if (!string.IsNullOrEmpty(RIFERIMENTO))
                {
                    CDCDS.CDC_DIMEMSIONIRow dimensione = _DS.CDC_DIMEMSIONI.Where(x => x.IDDETTAGLIO == IDDETTAGLIO && x.RIFERIMENTO.Trim() == RIFERIMENTO).FirstOrDefault();
                    if (dimensione == null)
                    {
                        dimensione                 = _DS.CDC_DIMEMSIONI.NewCDC_DIMEMSIONIRow();
                        dimensione.CONFORME        = ConvertiBoolInStringa(riga[10]);
                        dimensione.CONTAMPONE      = ConvertiBoolInStringa(riga[9]);
                        dimensione.DATAINSERIMENTO = DateTime.Now;
                        dimensione.GRANDEZZA       = ((string)riga[3]).ToUpper().Trim();
                        dimensione.IDDETTAGLIO     = IDDETTAGLIO;
                        dimensione.MASSIMO         = ConvertiInStringa(riga[7]).ToUpper().Trim();
                        dimensione.MINIMO          = ConvertiInStringa(riga[6]).ToUpper().Trim();
                        dimensione.RICHIESTO       = ((string)riga[4]).ToUpper().Trim();
                        dimensione.RIFERIMENTO     = ((string)riga[2]).ToUpper().Trim();
                        dimensione.TAMPONE         = ConvertiInStringa(riga[8]).ToUpper().Trim();
                        dimensione.TOLLERANZA      = ConvertiInStringa(riga[5]).ToUpper().Trim();
                        dimensione.UTENTE          = Contesto.Utente.FULLNAMEUSER;
                        _DS.CDC_DIMEMSIONI.AddCDC_DIMEMSIONIRow(dimensione);
                    }
                    else
                    {
                        dimensione.CONFORME        = ConvertiBoolInStringa(riga[10]);
                        dimensione.CONTAMPONE      = ConvertiBoolInStringa(riga[9]);
                        dimensione.DATAINSERIMENTO = DateTime.Now;
                        dimensione.GRANDEZZA       = ((string)riga[3]).ToUpper().Trim();
                        dimensione.IDDETTAGLIO     = IDDETTAGLIO;
                        dimensione.MASSIMO         = ConvertiInStringa(riga[7]).ToUpper().Trim();
                        dimensione.MINIMO          = ConvertiInStringa(riga[6]).ToUpper().Trim();
                        dimensione.RICHIESTO       = ((string)riga[4]).ToUpper().Trim();
                        dimensione.RIFERIMENTO     = ((string)riga[2]).ToUpper().Trim();
                        dimensione.TAMPONE         = ConvertiInStringa(riga[8]).ToUpper().Trim();
                        dimensione.TOLLERANZA      = ConvertiInStringa(riga[5]).ToUpper().Trim();
                        dimensione.UTENTE          = Contesto.Utente.FULLNAMEUSER;
                    }

                    CDCDS.CDC_DIMEMSIONI_MISURERow misura = _DS.CDC_DIMEMSIONI_MISURE.Where(x => x.PARTE == PARTE && x.RIFERIMENTO.Trim() == RIFERIMENTO).FirstOrDefault();
                    if (misura == null)
                    {
                        misura             = _DS.CDC_DIMEMSIONI_MISURE.NewCDC_DIMEMSIONI_MISURERow();
                        misura.PARTE       = PARTE;
                        misura.CONTAMPONE  = ConvertiBoolInStringa(riga[9]);
                        misura.GRANDEZZA   = ((string)riga[3]).ToUpper().Trim();
                        misura.MASSIMO     = ConvertiInStringa(riga[7]).ToUpper().Trim();
                        misura.MINIMO      = ConvertiInStringa(riga[6]).ToUpper().Trim();
                        misura.RICHIESTO   = ((string)riga[4]).ToUpper().Trim();
                        misura.RIFERIMENTO = ((string)riga[2]).ToUpper().Trim();
                        misura.TAMPONE     = ConvertiInStringa(riga[8]).ToUpper().Trim();
                        misura.TOLLERANZA  = ConvertiInStringa(riga[5]).ToUpper().Trim();
                        _DS.CDC_DIMEMSIONI_MISURE.AddCDC_DIMEMSIONI_MISURERow(misura);
                    }
                    else
                    {
                        misura.CONTAMPONE  = ConvertiBoolInStringa(riga[9]);
                        misura.GRANDEZZA   = ((string)riga[3]).ToUpper().Trim();
                        misura.MASSIMO     = ConvertiInStringa(riga[7]).ToUpper().Trim();
                        misura.MINIMO      = ConvertiInStringa(riga[6]).ToUpper().Trim();
                        misura.RICHIESTO   = ((string)riga[4]).ToUpper().Trim();
                        misura.RIFERIMENTO = ((string)riga[2]).ToUpper().Trim();
                        misura.TAMPONE     = ConvertiInStringa(riga[8]).ToUpper().Trim();
                        misura.TOLLERANZA  = ConvertiInStringa(riga[5]).ToUpper().Trim();
                    }
                }
            }

            CDCBLL bll = new CDCBLL();

            bll.SalvaDatiDimensioni(_DS);
            _DS.CDC_DIMEMSIONI.AcceptChanges();
            _DS.CDC_DIMEMSIONI_MISURE.AcceptChanges();

            Bitmap firma = Properties.Resources.firma_vittoria;

            if (Contesto.Utente.IDUSER == "0000000122")
            {
                firma = Properties.Resources.firma_celeste;
            }

            ImageConverter converter = new ImageConverter();

            byte[] iFirma = (byte[])converter.ConvertTo(firma, typeof(byte[]));

            Bitmap loghi = Properties.Resources.loghi;

            byte[] iLoghi = (byte[])converter.ConvertTo(loghi, typeof(byte[]));

            bll.CreaPDFDimensionale(IDDETTAGLIO, _DS, Contesto.Utente.FULLNAMEUSER, Contesto.PathCollaudo, iFirma, iLoghi);

            if (chkCopiaSchedaTecnica.Checked)
            {
                DataRow riga   = _dsServizio.Tables[tableName].Rows[0];
                string  PARTE  = (string)riga[11];
                string  COLORE = (string)riga[12];

                string filename = string.Format(@"{0}\{1}-{2}.pdf", Contesto.PathSchedeTecniche, PARTE, COLORE);

                if (!File.Exists(filename))
                {
                    string messaggio = string.Format("Impossibile trovare il file per PARTE:{0} e COLORE:{1}. File: {2}", PARTE, COLORE, filename);
                    MessageBox.Show(messaggio);
                    return;
                }

                CDCDS.CDC_DETTAGLIORow dettaglio = _DS.CDC_DETTAGLIO.Where(x => x.IDDETTAGLIO == IDDETTAGLIO).FirstOrDefault();
                DateTime dt = DateTime.ParseExact(dettaglio.DATACOLLAUDO, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                string   cartellaDestinazione = CDCBLL.CreaPathCartella(dt, Contesto.PathCollaudo, dettaglio.ACCESSORISTA, dettaglio.PREFISSO, dettaglio.PARTE, dettaglio.COLORE, dettaglio.COMMESSAORDINE);

                string destinazione = string.Format(@"{0}\{1}-{2}.pdf", cartellaDestinazione, PARTE, COLORE);
                if (File.Exists(destinazione))
                {
                    File.Delete(destinazione);
                }

                File.Copy(filename, destinazione, true);
            }
        }
        private void btnCopiaCertificati_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstCertificatiAssociati.Items.Count == 0)
                {
                    MessageBox.Show("Associare almeno un certificato di analisi del piombo", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                if (_dettaglio == null)
                {
                    MessageBox.Show("Selezionare una riga dalla griglia", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                CDCDS.CDC_MATERIAPRIMARow materiaPrima = _DS.CDC_MATERIAPRIMA.Where(x => x.PARTE == _dettaglio.PARTE).FirstOrDefault();
                if (materiaPrima != null)
                    materiaPrima.MATERIAPRIMA = txtMateriaPrima.Text;
                else
                {
                    materiaPrima = _DS.CDC_MATERIAPRIMA.NewCDC_MATERIAPRIMARow();
                    materiaPrima.PARTE = _dettaglio.PARTE;
                    materiaPrima.MATERIAPRIMA = txtMateriaPrima.Text;
                    _DS.CDC_MATERIAPRIMA.AddCDC_MATERIAPRIMARow(materiaPrima);
                }

                StringBuilder sb = new StringBuilder();
                StringBuilder sbNonTrovati = new StringBuilder();

                CDCBLL bll = new CDCBLL();
                foreach (CertificatoPiombo cp in lstCertificatiAssociati.Items)
                {

                    //CDCDS.CDC_CERTIFICATIPIOMBORow certificato = _DS.CDC_CERTIFICATIPIOMBO.Where(x => x.IDCERTIFICATIPIOMBO == cp.IDCERTIFICATIPIOMBO).FirstOrDefault();
                    //if (certificato == null)
                    //{
                    //    MessageBox.Show("Errore nel recuperare il certificato IDCERTIFICATIPIOMBO:" + cp.IDCERTIFICATIPIOMBO.ToString(), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //    return;
                    //}                   
                    //string spessore = certificato.IsSPESSORENull() ? string.Empty : certificato.SPESSORE.ToString();

                    //                    string fileDaCopiare = bll.CreaNomefileCertificatiAnalisiPiombo(certificato.ELEMENTO, certificato.LUNGHEZZA.ToString(), certificato.LARGHEZZA.ToString(), spessore, certificato.CODICE, certificato.DATACERTIFICATO, Contesto.PathAnalisiPiombo, out cartella, out nomeCampione);

                    string fileDaCopiare = EstraiPathFileDaCopiare(cp);

                    DateTime dt = DateTime.Today;
                    DateTime dtCollaudo = DateTime.ParseExact(_dettaglio.DATACOLLAUDO, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    string pathDestinazione = CDCBLL.CreaPathCartella(dtCollaudo, Contesto.PathCollaudo, _dettaglio.ACCESSORISTA, _dettaglio.PREFISSO, _dettaglio.PARTE, _dettaglio.COLORE, _dettaglio.COMMESSAORDINE);
                    if (File.Exists(fileDaCopiare))
                    {
                        FileInfo fi = new FileInfo(fileDaCopiare);
                        string fileDestinazione = Path.Combine(pathDestinazione, fi.Name);
                        sb.AppendLine(fileDestinazione);
                        if (!Directory.Exists(pathDestinazione))
                            Directory.CreateDirectory(pathDestinazione);
                        File.Copy(fileDaCopiare, fileDestinazione, true);
                    }
                    else
                        sbNonTrovati.AppendLine(fileDaCopiare);
                }
                bll.SalvaMateriaPrima(_DS);

                string messaggio = string.Format("I seguenti file sono stati copiati. {0}", sb.ToString());
                MessageBox.Show(messaggio, "INFORMAZIONE", MessageBoxButtons.OK, MessageBoxIcon.Information);

                if (sbNonTrovati.Length > 0)
                {
                    messaggio = string.Format("I seguenti file NON sono stati trovati e quindi NON SONO STATI COPIATI I CERTIFICATI E NON E' STATO ASSOCIATO IL CERTIFICATO. {0}", sb.ToString());
                    MessageBox.Show(messaggio, "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            catch (Exception ex)
            {
                MostraEccezione(ex, "Errore salva associazione ");

            }
        }