private void PopolaCampi(AccontoOperaio item, bool enableFields = false)
 {
     txtData.Enabled = ddlScegliOperaio.Enabled = txtImportoAcconto.Enabled = enableFields;
     txtData.Text    = item.Data.ToString("yyyy-MM-dd");
     ddlScegliOperaio.SelectedValue = item.IdOperaio.ToString();
     txtImportoAcconto.Text         = item.Importo.ToString("N2");
     txtDescrizioneAcconto.Text     = item.Descrizione;
 }
        public static void Insert(AccontoOperaio item)
        {
            StringBuilder sql = new StringBuilder($"INSERT INTO TblAccontiOperai(IdOperaio,Data,Importo,Descrizione) VALUES (@IdOperaio,@Data,@Importo,@Descrizione)");

            try
            {
                using (SqlConnection cn = GetConnection())
                {
                    cn.Execute(sql.ToString(), item);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Errore durante la Insert in AccontiOperaiDAO", ex);
            }
        }
        public static AccontoOperaio GetSingle(long idAccontoOperaio)
        {
            AccontoOperaio ret = new AccontoOperaio();
            StringBuilder  sql = new StringBuilder("SELECT * FROM TblAccontiOperai WHERE IdAccontoOperaio = @idAccontoOperaio");

            try
            {
                using (SqlConnection cn = GetConnection())
                {
                    ret = cn.Query <AccontoOperaio>(sql.ToString(), new { idAccontoOperaio }).FirstOrDefault();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Errore durante la GeSingle in AccontiOperaiDAO", ex);
            }
            return(ret);
        }
        public static void Update(AccontoOperaio item)
        {
            StringBuilder sql = new StringBuilder();

            sql.AppendLine($"UPDATE TblAccontiOperai");
            sql.AppendLine($"SET IdOperaio = @IdOperaio, Data = @Data, Importo = @Importo, Descrizione = @Descrizione");
            sql.AppendLine($"WHERE IdAccontoOperaio = @IdAccontoOperaio");
            try
            {
                using (SqlConnection cn = GetConnection())
                {
                    cn.Execute(sql.ToString(), item);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Errore durante la Update in AccontiOperaiDAO", ex);
            }
        }
        protected void grdAccontiOperai_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                long           idAccontoOperaio = Convert.ToInt64(e.CommandArgument);
                AccontoOperaio accontoOperaio   = AccontiOperaiDAO.GetSingle(idAccontoOperaio);
                if (e.CommandName == "Visualizza")
                {
                    PopolaCampi(accontoOperaio);
                    btnSalvaAcconto.Visible    = false;
                    btnModificaAcconto.Visible = false;
                }
                if (e.CommandName == "Modifica")
                {
                    PopolaCampi(accontoOperaio, true);
                    hfIdAccontoOperaio.Value   = accontoOperaio.IdAccontoOperaio.ToString();
                    btnSalvaAcconto.Visible    = false;
                    btnModificaAcconto.Visible = !btnSalvaAcconto.Visible;
                }
                if (e.CommandName == "Elimina")
                {
                    AccontiOperaiDAO.Delete(idAccontoOperaio);

                    lblMsg.Text      = $"Acconto eliminato con successo";
                    lblMsg.ForeColor = Color.Blue;

                    btnSalvaAcconto.Visible    = true;
                    btnModificaAcconto.Visible = !btnSalvaAcconto.Visible;

                    BindGrid();
                }
            }
            catch (Exception ex)
            {
                lblMsg.Text      = $"Errore durante il grdAccontiOperai_RowCommand - {ex.Message}";
                lblMsg.ForeColor = Color.Red;
            }
        }