using DevExpress.Data;
using DevExpress.Export;
using DevExpress.Web;
using DevExpress.XtraPrinting;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace OlympiaIntranet
{
    public partial class EsposizioneTitoli : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (HttpContext.Current.User.Identity.IsAuthenticated == false)
            {
                Response.Redirect("~/SignIn.aspx");
            }
            else
            {
                string loggedUser = HttpContext.Current.User.Identity.Name;

                switch (loggedUser)
                {
                    // Gestori
                    case "adonini":
                        gridLookupGestore.Value = "DONINI";
                        gridLookupGestore.Enabled = false;
                        break;
                    case "sbettinelli":
                        gridLookupGestore.Value = "BETTINELLI";
                        gridLookupGestore.Enabled = false;
                        break;
                    case "agamba":
                        gridLookupGestore.Value = "GAMBA";
                        gridLookupGestore.Enabled = false;
                        break;
                    case "rcammarino":
                        gridLookupGestore.Value = "CAMMARINO";
                        gridLookupGestore.Enabled = false;
                        break;
                    case "rtorre":
                        gridLookupGestore.Value = "TORRE";
                        gridLookupGestore.Enabled = false;
                        break;
                    case "lbrambilla":
                        gridLookupGestore.Value = "BRAMBILLA";
                        gridLookupGestore.Enabled = false;
                        break;
                    // consulenti
                    case "mbeltramelli":
                        gridLookupGestore.Value = "PISONI";
                        gridLookupGestore.Enabled = false;
                        gridLookupConsulente.Value = "BELTRAMELLI";
                        gridLookupConsulente.Enabled = false;
                        break;
                    case "fmucci":
                        gridLookupGestore.Value = "PISONI";
                        gridLookupGestore.Enabled = false;
                        gridLookupConsulente.Value = "MUCCI";
                        gridLookupConsulente.Enabled = false;
                        break;
                    // utenti
                    case "slopez": // nota: da sp GDN_GPM_Linee1 carica solo le linee "HIGH.RET.VAR","LOW.VOL.VAR" per slopez (02/03/2022)
                        gridLookupGestore.Value = "CAMMARINO";
                        gridLookupGestore.Enabled = false;
                        gridLookupConsulente.Value = "CASTRICHELLA";
                        gridLookupConsulente.Enabled = false;                       
                        break;
                    default:
                        gridLookupGestore.Enabled = true; // gli altri gestori abilitati a vedere tutto sono fcostalonga, ecanziani, fpisoni, glicciardello
                        break;
                }

                Session["cod_ges"] = gridLookupGestore.Value; // serve per popolare gridlookupLinea!!
                Session["user"] = loggedUser; // serve per popolare gridlookupLinea!!
            }

            if (IsPostBack) // Rielabora il grafico altrimenti il print non la stampa.
            {
                CaricaEsposizioneTitoli();
            }
        }

        protected void gridLookupGestore_ValueChanged(object sender, EventArgs e)
        {
            // ref: https://supportcenter.devexpress.com/ticket/details/q340370/aspxgridlookup-how-to-refresh-the-control-after-some-data-is-changed
            // note: Per refreshare gridlookupLinea sulla base del valore di gridLookupGestore, salvo il valore gestore in una variabile di sessione Session["cod_ges"] 
            //       e poi il refresh/rebind di SqlDSLinee verrà effettuato nell'evento lato client EndCallBack

            ASPxGridView grid = gridLookupGestore.GridView;
            object objGestore = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "Gestore" });

            if (objGestore != null)
            {
                Session["cod_ges"] = (string)objGestore;
            }

        }

        protected void buttonEsposizioneTitoli_Click(object sender, EventArgs e)
        {
            CaricaEsposizioneTitoli();
        }

        private void CaricaEsposizioneTitoli()
        {
            ASPxGridView grid = gridLookupGestore.GridView;
            object objGestore = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "Gestore" });
            grid = gridLookupLinea.GridView;
            object objLinea = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "Linea" });
            grid = gridLookupConsulente.GridView;
            object objConsulente = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "Consulente" });

            if (!(objGestore != null && objLinea != null && objConsulente != null)) return;

            DataTable dtEsposizioneTitoli = CommonClass.execQuery_Datatable_Sql("GDN_EsposizioneTitoli8", Properties.Settings.Default.SqlConnection, (string)objGestore, (string)objConsulente, (string)objLinea, rgFiltriRanking.SelectedIndex);
            gvEsposizioneTitoli.DataSource = dtEsposizioneTitoli;
            gvEsposizioneTitoli.DataBind();
            if (gvEsposizioneTitoli.Columns["Titolo"] != null)
            {
                gvEsposizioneTitoli.GroupBy(gvEsposizioneTitoli.Columns["Titolo"]);
                //ASPxSummaryItem summaryItem = new ASPxSummaryItem
                //{
                //    FieldName = "Controvalore",
                //    SummaryType = SummaryItemType.Sum,
                //    DisplayFormat = "{0}",
                //    ShowInColumn = "Titolo"
                //};
                //gvEsposizioneTitoli.GroupSummary.Add(summaryItem);
                //gvEsposizioneTitoli.SortBy(gvEsposizioneTitoli.Columns["CtvTitolo"], DevExpress.Data.ColumnSortOrder.Descending);
            }
            if (objLinea.ToString() != "-- TUTTI --" && objConsulente.ToString() != "-- TUTTI --") gvEsposizioneTitoli.SettingsBehavior.AutoExpandAllGroups = true; // autoespande tutti gruppi solo se non sono selezionati tutti nelle linee e nei consulenti
            else gvEsposizioneTitoli.SettingsBehavior.AutoExpandAllGroups = false;

            // Visualizza Controvalori titoli
            DataTable dtControvaloriTitoli = CommonClass.execQuery_Datatable_Sql("GDN_EsposizioneTitoli_Controvalori", Properties.Settings.Default.SqlConnection, (string)objGestore, (string)objConsulente, (string)objLinea, rgFiltriRanking.SelectedIndex);
            gvControvaloreTitoli.DataSource = dtControvaloriTitoli;
            gvControvaloreTitoli.DataBind();

        }




        protected void gvEsposizioneTitoli_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e)
        {
            //if (e.DataColumn.FieldName == "CodiceTitolo")
            //{
            //    string htmlValue = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating1", e.GetValue("CodiceTitolo").ToString());
            //    if (String.IsNullOrEmpty(htmlValue) == false)
            //    {
            //        e.Cell.Attributes.Add("onmouseover", string.Format("onShowPopup(event.x, event.y, '{0}')", htmlValue));
            //        //e.Cell.Attributes.Add("onmouseover", string.Format("onShowPopupAtElement('{0}')", htmlValue));
            //    }
                
            //    else e.Cell.Attributes.Add("onmouseout", string.Format("onHidePopup();"));
            //}
            //else e.Cell.Attributes.Add("onmouseout", string.Format("onHidePopup();"));
        }

        protected void gvEsposizioneTitoli_HtmlRowPrepared(object sender, ASPxGridViewTableRowEventArgs e)
        {
            // da rimettere!!

            //if (e.RowType == GridViewRowType.Group)
            //{
            //    //string htmlValue = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating3", e.GetValue("CodiceTitolo").ToString(),rgTipoRanking.SelectedIndex.ToString());
            //    //string morningstarRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating3", e.GetValue("CodiceTitolo").ToString(), "1");
            //    //if (String.IsNullOrEmpty(htmlValue) == false)
            //    //{
            //    //    string popupHeaderText = String.Empty;
            //    //    if (rgTipoRanking.SelectedIndex == 0) popupHeaderText = "Ranking Tepilora";
            //    //    if (rgTipoRanking.SelectedIndex == 1) popupHeaderText = "Ranking MorningStar";
            //    //    e.Row.Attributes.Add("onclick", string.Format("onShowPopup('{0}','{1}')", htmlValue, popupHeaderText));
            //    //}
            //    //else e.Row.Attributes.Add("onmouseout", string.Format("onHidePopup();"));

            //    string tepiloraRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating4", e.GetValue("CodiceTitolo").ToString(), "0");
            //    string morningstarRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating4", e.GetValue("CodiceTitolo").ToString(), "1");
            //    if (String.IsNullOrEmpty(tepiloraRankingHtml) == false && String.IsNullOrEmpty(morningstarRankingHtml) == false)
            //    {
            //        //string popupHeaderText = $"Ranking {e.GetValue("CodiceTitolo").ToString()}";
            //        e.Row.Attributes.Add("onclick", string.Format("onShowPopup1('{0}','{1}')", tepiloraRankingHtml, morningstarRankingHtml, ""));
            //    }
            //    else e.Row.Attributes.Add("onmouseout", string.Format("onHidePopup();"));
            //}
        }

        protected void buttonEsportaExcel_Click(object sender, EventArgs e)
        {
            gridviewExporter.ExportSelectedRowsOnly = false;
            gridviewExporter.FileName = DateTime.Now.ToString("yyyyMMdd_HHmm") + " - EsposizioneTitoli";
            XlsxExportOptionsEx op = new XlsxExportOptionsEx() { ExportType = ExportType.DataAware }; // in DataAware mode l'evento ASPxGridViewExporter_RenderBrick non viene eseguito!!
            gridviewExporter.WriteXlsxToResponse(op);
        }

        protected void btnRankingTitoli_Click(object sender, EventArgs e)
        {
            ASPxButton btn = sender as ASPxButton;
            GridViewGroupRowTemplateContainer container = btn.NamingContainer as GridViewGroupRowTemplateContainer;
            string titolo = container.GroupText.Substring(1, 5);
            //string tepiloraRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating4", titolo, "0");
            //string morningstarRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating4", titolo, "1");
            //if (String.IsNullOrEmpty(tepiloraRankingHtml) == false && String.IsNullOrEmpty(morningstarRankingHtml) == false)
            //{
            //    ASPxlblTepilora.EncodeHtml = false;
            //    ASPxlblTepilora.Text = tepiloraRankingHtml;
            //    ASPxlblMorningstar.EncodeHtml = false;
            //    ASPxlblMorningstar.Text = morningstarRankingHtml;
            //    ASPxPopupControl1.ShowOnPageLoad = true;
            //}

            // Tepilora rimosso dal 26/06/2023 su richiesta di Fede
            string morningstarRankingHtml = CommonClass.ExecSql("GDN_EsposizioneTitoli_Rating4", titolo, "1");
            if (String.IsNullOrEmpty(morningstarRankingHtml) == false)
            {
                ASPxlblMorningstar.EncodeHtml = false;
                ASPxlblMorningstar.Text = morningstarRankingHtml;
                ASPxPopupControl1.ShowOnPageLoad = true;
            }
        }
    }
}