using GMW_data;
using SteamWare;
using System;
using System.Data;
using System.Web.UI.WebControls;

namespace GMW.WebUserControls
{
    public partial class mod_gestPrinterPost : ApplicationUserControl
    {


        /// <summary>
        /// reset della selezione
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnReset_Click(object sender, EventArgs e)
        {
            resetSelezione();
        }
        /// <summary>
        /// resetta la selezione dei valori in caso di modifiche su altri controlli
        /// </summary>
        public void resetSelezione()
        {
            grView.SelectedIndex = -1;
            grView.DataBind();
        }
        /// <summary>
        /// inserisce nuovo valore da footer
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lblIns_click(object sender, EventArgs e)
        {
            // click su inserimento, chiamo il metodo insert dell'ObjectDataSource
            ods.Insert();
        }
        /// <summary>
        /// gestione evento richiesta nuovo valore (mostra footer, ...)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnNew_Click(object sender, EventArgs e)
        {
            // reset selezione...
            resetSelezione();
            // mostro il footer oppure la riga dei dettagli x nuovo...
            if (grView.FooterRow != null)
            {
                grView.FooterRow.Visible = true;
            }
        }
        /// <summary>
        /// determina se sia eliminabile il record (=non usato)
        /// </summary>
        /// <param name="idxMaker"></param>
        /// <returns></returns>
        public bool delEnabled(object idxObj)
        {
            bool answ = isWritable();
            // solo se ha diritti scrittura controllo
            if (answ)
            {
                int trovati = 0;
                // controllo se ci siano celle associate
                trovati = MagClass.magazzino.taSAO.getLastByPost(DateTime.Now.AddYears(-memLayer.ML.confReadInt("defaultYearSAO")), DateTime.Now.AddDays(1),idxObj.ToString()).Rows.Count;
                // controllo se ci sono record correlati...
                if (trovati > 0)
                {
                    answ = false;
                }
            }
            return answ;
        }

        /// <summary>
        /// elenco colonne del datagrid
        /// </summary>
        /// <returns></returns>
        protected DataColumnCollection colonneObj()
        {
            DS_magazzino.ElencoPostazioniDataTable tabella = new DS_magazzino.ElencoPostazioniDataTable();
            DataColumnCollection colonne = tabella.Columns;
            return colonne;
        }
        /// <summary>
        /// recupera i dati di un nuovo record contenuti nel footer di un gridView;
        /// questi devono essere opportunamente nominati (es: txt{0}, dl{0}, ...)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void recuperaFooter(object sender, ObjectDataSourceMethodEventArgs e)
        {
            //recupero la riga footer...
            DataColumnCollection colonne = colonneObj();
            string nomeCol;
            string tipoColonna = "";
            foreach (DataColumn colonna in colonne)
            {
                nomeCol = colonna.ColumnName;
                // cerco un textbox o quello che sia...
                if (grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol)) != null)
                {
                    tipoColonna = "textBox";
                }
                else if (grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol)) != null)
                {
                    tipoColonna = "dropDownList";
                }
                else if (grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol)) != null)
                {
                    tipoColonna = "checkBox";
                }
                else if (grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol)) != null)
                {
                    tipoColonna = "selAjax";
                }
                // in base al tipo salvo negli inputparameters dell'ODS
                switch (tipoColonna)
                {
                    case "textBox":
                        e.InputParameters[nomeCol] = ((TextBox)grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol))).Text;
                        break;
                    case "dropDownList":
                        e.InputParameters[nomeCol] = ((DropDownList)grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol))).SelectedValue;
                        break;
                    case "checkBox":
                        e.InputParameters[nomeCol] = ((CheckBox)grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol))).Checked;
                        break;
                    case "selAjax":
                        e.InputParameters[nomeCol] = ((mod_selettore_ajax)grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol))).valore;
                        break;
                    default:
                        break;
                }
                tipoColonna = "";
            }
        }
    }
}