using GMW_data;
using SteamWare;
using System;
using System.Linq;
using System.Web.UI;

namespace GMW
{
  public partial class POST_FinitiMult_OUT : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (!Page.IsPostBack)
      {
        refreshPagCorr();
        updatePrinterPostazione();
        // fix css...
        Postazione.CssClass = "stileAttesa";
        // imposto pos abilitata x cancellazione
        mod_storicoAzioniOperatore1.IdxPosizione2del = memLayer.ML.cdvi("IdxPosizioneFiniti");

        // pulisco dir temp dai file dei cartellini stampati
        reportPrinter.obj.pulisciDir();
      }
      // update vari...
      doUpdate();
      mod_storicoAzioniOperatore1.eh_stampa += new EventHandler(mod_storicoAzioniOperatore1_eh_stampa);
      mod_PostFinMultOUT.doUpdate();
      mod_PostFinMultOUT.eh_reqUpdate += mod_PostRX_NT1_eh_reqUpdate;
      mod_selLineaNtDt1.eh_lineSelected += mod_selLineaNtDt1_eh_doRefresh;
      mod_selLineaNtDt1.eh_showHideStorico += mod_selLineaNtDt1_eh_showHideStorico;
    }

    private void setTempiAttr()
    {
      // imposto tempi MIN/MAX attraversamento CERCANDO riga puntuale
      DS_magazzino.AnagLineeRow riga = null;
      if (Postazione.currCodLinea != "")
      {
        try
        {
          riga = MagClass.magazzino.taAL.getByKey(Postazione.currCodLinea)[0];
        }
        catch
        { }
      }
      if (riga != null)
      {
        mod_PostFinMultOUT.minTime = riga.minTime;
        mod_PostFinMultOUT.maxTime = riga.maxTime;
      }
      else // altrimenti def
      {
        mod_PostFinMultOUT.minTime = memLayer.ML.CRI("minTimeDef");
        mod_PostFinMultOUT.maxTime = memLayer.ML.CRI("maxTimeDef");
      }
    }

    /// <summary>
    /// refresh pagina corrente prima di altri task...
    /// </summary>
    private void refreshPagCorr()
    {
      // lo calcolo...
      string[] uri = Request.Url.LocalPath.Split('/');
      // salvo pagina corrente
      user_std.pagCorrente = uri.Last();

    }
    /// <summary>
    /// Handles the showHideStorico event of the mod_selLineaNtDt1_eh control.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
    private void mod_selLineaNtDt1_eh_showHideStorico(object sender, EventArgs e)
    {
      fixStorico();
    }
    /// <summary>
    /// Handles the doRefresh event of the mod_selLineaNtDt1_eh control.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
    private void mod_selLineaNtDt1_eh_doRefresh(object sender, EventArgs e)
    {
      doUpdate();
      mod_PostFinMultOUT.doResetData();
      mod_PostFinMultOUT.doUpdate();
    }
    /// <summary>
    /// richiesta update del controllo SAO
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void mod_PostRX_NT1_eh_reqUpdate(object sender, EventArgs e)
    {
      doUpdate();
    }
    /// <summary>
    /// aggiorna messaggi e css
    /// </summary>
    private void updateMessCss()
    {
      lblWarning.Text = Postazione.warningText;
      lblMessaggi.Text = Postazione.messaggiText;
      pnlAll.CssClass = Postazione.CssClass;
    }
    /// <summary>
    /// richiesta (ri)stampa UDC
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void mod_storicoAzioniOperatore1_eh_stampa(object sender, EventArgs e)
    {
      mod_PostFinMultOUT.ristampa();
    }
    /// <summary>
    /// sistemo visualizzazione pannelli
    /// </summary>
    private void fixPanels()
    {
      // default: moduli NON visibili SE non ho linea indicata..
      bool enableBtn = false;
      if (Postazione.currCodCella != "") enableBtn = true;
      mod_PostFinMultOUT.Visible = enableBtn;
      fixStorico();
    }
    /// <summary>
    /// wrapper traduzione
    /// </summary>
    /// <param name="lemma"></param>
    /// <returns></returns>
    public string traduci(object lemma)
    {
      return user_std.UtSn.Traduci(lemma.ToString());
    }
    /// <summary>
    /// toggle controllo storico
    /// </summary>
    private void fixStorico()
    {
      pnlSAO.Visible = Postazione.showStorico;
    }
    /// <summary>
    /// update generale controlli
    /// </summary>
    private void doUpdate()
    {
      setTempiAttr();
      updateMessCss();
      fixPanels();
      mod_storicoAzioniOperatore1.doUpdate();
    }
    /// <summary>
    /// calcola postazione corrente (ip, name, printer)
    /// </summary>
    private void updatePrinterPostazione()
    {
      Postazione.IP = Request.UserHostName;
      Postazione.setupPrinter();
      // mostro warning se postazione non configurata...
      if (Postazione.printer == "n.d.")
      {
        lblWarning.Text = traduci("lblWarnPostNonConf");
      }
    }
  }
}