using DevExpress.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VarTitolo;
using VarPortafoglio;
using InfoPortafoglio;
using System.Data.SqlClient;
using System.Data;
using MySqlConnector;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace OlympiaIntranet
{
    public partial class VaR : System.Web.UI.Page
    {
        double CovExposure = 0;
        double AccBalance = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (HttpContext.Current.User.Identity.IsAuthenticated == false)
            {
                Response.Redirect("~/SignIn.aspx");
            }
            else rblTipoVar.ToolTip = String.Format("Ex-Ante: calcolo VaR effettuato sulla base di tmppostit1 (richiede la valorizzazione del numero richiesta){0}Ex-Post: calcolo Var effettuato sulla base di tmppostit5 (solo operazioni spuntate ed eseguiti totali non spuntati)", Environment.NewLine);

            Session["user"] = HttpContext.Current.User.Identity.Name;
        }


        protected void btnQueryVarTitolo_Click(object sender, EventArgs e)
        {
            // Cancella messaggi di errore di query precedenti
            memoStatusTitolo.Text = "";
            tbVar95Titolo.Text = "";
            tbVar99Titolo.Text = "";
            tbAccBalance.Text = "";
            memoStatusTitolo.Text = "";

            // https://api.smart-roots.net:4001/api/varTitoloGDN?cod_tit=00038&showParams=true|false
            // risposta json = {"results":[{"percentile":0.95,"frequency":1,"horizon":21,"lookback_days":730,"var":1.9134154084},{"percentile":0.99,"frequency":1,"horizon":21,"lookback_days":730,"var":2.6527005463}],"errors":[]}

            string jsonData = String.Empty;
            string titolo = String.Empty;
            // Rileva titolo selezionato in gvTitoli
            ASPxGridView grid = gridlookupTitoli.GridView;
            object objTitolo = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "cod_tit" });
            if (objTitolo != null) titolo = objTitolo.ToString();
            else
            {
                memoStatusTitolo.Text = "Titolo non selezionato!";
                return;
            }

            // Effettua chiamata a webservice /api/varTitolo 
            try
            {
                jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/varTitoloGDN?cod_tit={0}&showParams=false", titolo));
            }
            catch (Exception ex)
            {
                memoStatusTitolo.Text = string.Format("Eccezione rilevata in scarico var per Titolo {0} - Errore : {1} {2}", titolo, ex.Message, ex.InnerException);
                return;
            }

            // Rileva se il json non è ben formato
            if (CommonClass.IsValidJson(jsonData) == false)
            {
                memoStatusTitolo.Text = string.Format("Errore in scarico VaR Titolo: {0} , json non valido rilevato: {1} !", titolo, jsonData);
                return;
            }

            // Processa json per Titolo
            JsonVarTitolo jsonVarTitolo = null;
            try
            {
                jsonVarTitolo = JsonVarTitolo.FromJson(jsonData);
            }
            catch (Exception)
            {
                memoStatusTitolo.Text = string.Format("Errore in analisi variabile jsonVarTitolo - Titolo: {0} !", titolo);
                return;
            }

            // Rileva Results da json per Titolo
            VarTitolo.Result[] jsonResults = null;
            try
            {
                jsonResults = jsonVarTitolo.Results;
            }
            catch (Exception)
            {
                memoStatusTitolo.Text = string.Format("[{0}] - " + "Errore in analisi variabile jsonResults - Titolo: {0} !", titolo);
                return;
            }

            // Rileva Errors da json per Titolo -- 26852 da testare con errore
            VarTitolo.Error[][] jsonErrors = null;
            try
            {
                jsonErrors = jsonVarTitolo.Errors;
            }
            catch (Exception)
            {
                memoStatusTitolo.Text = string.Format("Errore in analisi variabile jsonErrors - Titolo: {0} !", titolo);
                return;
            }

            // Errori rilevato in var titolo
            if (jsonErrors.GetLength(0) == 0)
            {
                //double? VaR_95 = 0;
                //double? VaR_99 = 0;

                foreach (VarTitolo.Result result in jsonResults)
                {
                    if (result.Percentile == 0.95) tbVar95Titolo.Text = result.Var.ToString();

                    if (result.Percentile == 0.99) tbVar99Titolo.Text = result.Var.ToString();

                    memoStatusTitolo.Text = "OK";
                }
            }
            else // Errore rilevato in var titolo
            {
                string errorType = "";
                string errorMessage = "";
                foreach (VarTitolo.Error[] error in jsonErrors)
                {
                    errorType = error[1].String;
                    errorMessage = error[2].String;
                }

                if (!String.IsNullOrEmpty(errorType) || !String.IsNullOrEmpty(errorMessage)) memoStatusTitolo.Text = string.Format("Error Type: {0} - Error Message: {1}", errorType, errorMessage);
            }
        }

        protected void btnQueryVarPortafoglio_Click(object sender, EventArgs e)
        {
            // Cancella messaggi di errore di query precedenti
            memoStatusPortafoglio.Text = "";
            tbVar95Portafoglio.Text = "";
            tbVar99Portafoglio.Text = "";
            memoStatusPortafoglio.Text = "";
            // https://api.smart-roots.net:4001/api/varPortafoglioGDN?cod_rap=GP11950&showParams=true|false
            // risposta json = {"results":[{"percentile":0.95,"frequency":1,"horizon":21,"lookback_days":730,"var":1.9134154084},{"percentile":0.99,"frequency":1,"horizon":21,"lookback_days":730,"var":2.6527005463}],"errors":[]}

            // Rileva portafoglio selezionato in gridlookupPortafogli
            string portafoglio = String.Empty;
            ASPxGridView grid = gridlookupPortafogli.GridView;
            object objPortafoglio = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "cod_rap" });
            if (objPortafoglio != null) portafoglio = objPortafoglio.ToString();
            else
            {
                ClearText();
                memoStatusPortafoglio.Text = "Portafoglio non selezionato!";
                return;
            }

            // Errore se non è selezionato tipo VaR
            if (rblTipoVar.SelectedIndex == -1)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Selezionare tipo VaR!";
                return;
            }

            // Errore se è selezionato Ex-Ante e non c'è num richiesta
            if (rblTipoVar.SelectedIndex == 0 && String.IsNullOrEmpty(tbRichiesta.Text)==true)
            {
                ClearText();
                //memoStatusPortafoglio.Text = string.Format("Richiesta non rilevata in automatico per il portafoglio {0} , consultare posizione in Guardian (campo Progr)!", portafoglio);
                memoStatusPortafoglio.Text = string.Format("Campo Richiesta obbligatorio, consultare posizione in Guardian (campo Progr)!");
                return;
            }

            if (cbShowJson.Checked == false)
            {
                //if (String.IsNullOrEmpty(tbRichiesta.Text) == false) CoveredExposurePortafoglio(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);

                //if (String.IsNullOrEmpty(tbRichiesta.Text) == false) AccountBalance(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);

                //if (String.IsNullOrEmpty(tbRichiesta.Text) == false) VarPortafoglio(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);

                CoveredExposurePortafoglio(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);
                AccountBalance(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);
                VarPortafoglio(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);
            }
            else PortafoglioJson(portafoglio, rblTipoVar.SelectedIndex, tbRichiesta.Text);
       
        }

        private void PortafoglioJson(string portafoglio, int tipoVar, string richiesta)
        {
            // Effettua chiamata a webservice /api/varPortafogolioGDN
            string jsonData = String.Empty;
            try
            {
                if (tipoVar == 0) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/varPortafoglioGDNIntradayMonetario?cod_rap={0}&showParams=true&richiesta={1}", portafoglio, richiesta)); // Intraday
                if (tipoVar == 1) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/varPortafoglioGDN?cod_rap={0}&showParams=true", portafoglio)); // EOD
            }
            catch (Exception ex)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Eccezione rilevata in scarico VaR per Portafoglio {0} - Errore : {1} {2}", portafoglio, ex.Message, ex.InnerException) + "\r\n";
                return;
            }

            // Rileva se il json non è ben formato
            if (CommonClass.IsValidJson(jsonData) == false)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in scarico VaR Portafoglio: {0} , json non valido rilevato: {1} !", portafoglio, jsonData);
                return;
            }

            memoStatusPortafoglio.Text = JValue.Parse(jsonData).ToString(Formatting.Indented); // https://weblog.west-wind.com/posts/2015/mar/31/prettifying-a-json-string-in-net

        }

        private void ClearText()
        {
            tbRichiesta.Text = "";
            tbVar95PtfPerc.Text = "";
            tbVar99PtfPerc.Text = "";
            tbAccBalance.Text = "";
            tbVar95Portafoglio.Text = "";
            tbVar99Portafoglio.Text = "";
            tbCovExpPortafoglio.Text = "";
            memoStatusPortafoglio.Text = "";
        }

        private void AccountBalance(string portafoglio, int tipoVar, string richiesta)
        {
            double accBalance = 0;
            string query = string.Empty;
            SqlConnection connSql = new SqlConnection(Properties.Settings.Default.SqlConnection);
            SqlCommand cmdSql = connSql.CreateCommand();
            if (tipoVar == 0) cmdSql.CommandText = "statpro_AccountBalance1_mysql";     // Intraday
            if (tipoVar == 1) cmdSql.CommandText = "statpro_AccountBalanceEOD_mysql";   // EOD
            cmdSql.CommandType = CommandType.StoredProcedure;
            cmdSql.Parameters.Add("@cod_rap", SqlDbType.VarChar).Value = portafoglio;
            if (tipoVar==0) cmdSql.Parameters.Add("@richiesta", SqlDbType.Int).Value = Convert.ToInt32(richiesta);
            connSql.Open();
            query = cmdSql.ExecuteScalar().ToString();
            connSql.Close();

            // Scarica dati da Guardian
            MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.mySqlConnection);
            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = query;
            conn.Open();
            object resQuery = cmd.ExecuteScalar();
            if (resQuery != null) accBalance = Convert.ToDouble(resQuery);
            conn.Close();
            tbAccBalance.Text = accBalance.ToString();
            AccBalance = accBalance;
        }

        private void CoveredExposurePortafoglio(string portafoglio, int tipoVar, string richiesta)
        {
            // Effettua chiamata api statpro per covered_exposure e la salva in varRap del portafoglio corrente
            string jsonData = "";

            // Effettua chiamata a webservice /api/infoPortafoglio 
            try
            {
                if (tipoVar == 0) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/covexpPortafoglioGDNIntraday?cod_rap={0}&showParams=false&richiesta={1}", portafoglio,richiesta));  // Intraday
                if (tipoVar == 1) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/covexpPortafoglioGDN?cod_rap={0}&showParams=false", portafoglio));                                  // EOD
            }
            catch (Exception ex)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Eccezione rilevata in scarico Covered Exposure in Portafoglio {0} - Errore : {1} {2}", portafoglio, ex.Message, ex.InnerException)+"\r\n";
                return;
            }

            // Invia mail di errore se json da statpro non è valido e prosegue col successivo portafoglio!
            if (CommonClass.IsValidJson(jsonData) == false)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in scarico Covered Exposure per Portafoglio: {0} , json non valido rilevato: {1} !", portafoglio, jsonData);
                return;
            }

            // Processa info json per Portafoglio e rileva Covered Exposure
            InfoPortafoglio.JsonInfoPortafoglio jsonInfoPortafoglio;
            double coveredExposure = 0;
            try
            {
                jsonInfoPortafoglio = JsonInfoPortafoglio.FromJson(jsonData);
                coveredExposure = jsonInfoPortafoglio.Results.CoveredExposure;
                CovExposure = coveredExposure;
            }
            catch (Exception)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in analisi variabile jsonInfoPortafoglio - Portafoglio: {0} !", portafoglio);
                return;
            }
            tbCovExpPortafoglio.Text = coveredExposure.ToString();

        }

        private void VarPortafoglio(string portafoglio, int tipoVar, string richiesta)
        {
            // Effettua chiamata a webservice /api/varPortafogolioGDN
            string jsonData = String.Empty;
            try
            {
                if (tipoVar == 0) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/varPortafoglioGDNIntradayMonetario?cod_rap={0}&showParams=false&richiesta={1}", portafoglio, richiesta)); // Intraday
                if (tipoVar == 1) jsonData = CommonClass.CallWebApi(string.Format("https://api.smart-roots.net:4001/api/varPortafoglioGDN?cod_rap={0}&showParams=false", portafoglio)); // EOD
            }
            catch (Exception ex)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Eccezione rilevata in scarico VaR per Portafoglio {0} - Errore : {1} {2}", portafoglio, ex.Message, ex.InnerException)+"\r\n";
                return;
            }

            // Rileva se il json non è ben formato
            if (CommonClass.IsValidJson(jsonData) == false)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in scarico VaR Portafoglio: {0} , json non valido rilevato: {1} !", portafoglio, jsonData);
                return;
            }

            // Processa json per Portafoglio
            JsonVarPortafoglio jsonVarPortafoglio = null;
            try
            {
                jsonVarPortafoglio = JsonVarPortafoglio.FromJson(jsonData);
            }
            catch (Exception)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in analisi variabile jsonVarPortafoglio - Portafoglio: {0} !", portafoglio);
                return;
            }

            // Rileva Results da json per Portafoglio
            VarPortafoglio.Result[] jsonResults = null;
            try
            {
                jsonResults = jsonVarPortafoglio.Results;
            }
            catch (Exception)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("[{0}] - " + "Errore in analisi variabile jsonResults - Portafoglio: {0} !", portafoglio);
                return;
            }

            // Rileva Errors da json per Portafoglio e li processa in errorStatus per visualizzarli in memoStatusPortafoglio
            VarPortafoglio.Error[][] jsonErrors = null;
            string errorStatus = String.Empty;
            try
            {
                jsonErrors = jsonVarPortafoglio.Errors;
                long? indexError = 0;
                string errorType = String.Empty;
                string errorMessage = String.Empty;
                string[] errorData;

                foreach (VarPortafoglio.Error[] error in jsonErrors)
                {
                    indexError = error[0].Integer;
                    errorType = error[1].String;
                    errorMessage = error[2].String;
                    errorData = error[3].StringArray;
                    errorStatus += string.Format(" ************************************************** \r\n Rilevato Errore su portafoglio: {0} \r\n Error Type: {1} \r\n Error Message: {2} \r\n **************************************************", portafoglio, errorType, errorMessage);

                    string query = string.Empty;
                    using (var con = new SqlConnection(Properties.Settings.Default.SqlConnection))
                    {
                        var cmd = new SqlCommand
                        {
                            CommandText = "dbo.statpro_ErroriPortafogli_mysql",
                            CommandType = CommandType.StoredProcedure,
                            Connection = con
                        };
                        cmd.Parameters.Add("@cod_rap", SqlDbType.VarChar).Value = portafoglio;
                        cmd.Parameters.Add("@errorType", SqlDbType.VarChar).Value = errorType;
                        cmd.Parameters.Add("@errorMessage", SqlDbType.VarChar).Value = errorMessage;
                        cmd.Parameters.Add("@productID", SqlDbType.VarChar).Value = errorData[0];
                        cmd.Parameters.Add("@data_ins", SqlDbType.Date).Value = DateTime.Today;
                        con.Open();
                        query = cmd.ExecuteScalar().ToString().Replace("\r\n",string.Empty);
                    }
                    MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.mySqlConnection);
                    MySqlCommand cmd2 = conn.CreateCommand();
                    cmd2.CommandText = query;
                    conn.Open();
                    cmd2.ExecuteNonQuery();
                    conn.Close();

                }


            }
            catch (Exception ex)
            {
                ClearText();
                memoStatusPortafoglio.Text = string.Format("Errore in analisi variabile jsonErrors - Portafoglio: {0} \r\nDettaglio Eccezione:{1}", portafoglio,ex.Message);
                return;
            }

            foreach (VarPortafoglio.Result result in jsonResults)
            {
                if (result.Percentile == 0.95)
                {
                    tbVar95Portafoglio.Text = result.Var.ToString();
                    // double? tempVar95Perc = (CovExposure + AccBalance != 0) ? (result.Var / (CovExposure + AccBalance)) * 100 : 0;
                    double? tempVar95Perc = (AccBalance != 0) ? (result.Var / AccBalance) * 100 : 0;
                    double? var95Perc = tempVar95Perc.HasValue ? (double?)Math.Round(tempVar95Perc.Value, 2) : 0;
                    tbVar95PtfPerc.Text = var95Perc.ToString();
                }

                if (result.Percentile == 0.99)
                {
                    tbVar99Portafoglio.Text = result.Var.ToString();
                    double? tempVar99Perc = (AccBalance != 0) ? (result.Var / AccBalance) * 100 : 0;
                    double? var99Perc = tempVar99Perc.HasValue ? (double?)Math.Round(tempVar99Perc.Value, 2) : 0;
                    tbVar99PtfPerc.Text = var99Perc.ToString();
                }

                if (String.IsNullOrEmpty(errorStatus) == true) memoStatusPortafoglio.Text = "OK";
                else memoStatusPortafoglio.Text = errorStatus;
            }
        }

        protected void rblTipoVar_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            tbRichiesta.Visible = (rblTipoVar.SelectedIndex == 0); // Visualizza campo Richiesta solo se è selezionato Ex-Ante (0)    

            btnPdfVarPortafoglio.Visible = (rblTipoVar.SelectedIndex == 0); // Visualizza pulsante Stampa Pdf Var Portafoglio solo se è selezionato Ex-Ante (0)

            // Se è selezionato Ex-Ante allora visualizza campo Richiesta e prova a rilevare il valore max di Richiesta in tmp1 per il ptf selezionato
            if (rblTipoVar.SelectedIndex == 0)
            {
                formLayoutPortafogli.FindItemOrGroupByName("Richiesta").ShowCaption = DevExpress.Utils.DefaultBoolean.True;

                //RilevaNumRichiesta();

            }
            else formLayoutPortafogli.FindItemOrGroupByName("Richiesta").ShowCaption = DevExpress.Utils.DefaultBoolean.False;

            // Se è selezionato Ex-Post allora cancella preventivamente contenuto di Richiesta 
            if (rblTipoVar.SelectedIndex == 1) tbRichiesta.Text = "";

        }

        private void RilevaNumRichiesta() // non più usata dal 21/03/2021, deve essere sempre consultata la posizione in Guardian per rilevare il Progr nel caso di chiamata ex-ante
        {
            // Rileva ptf selezionato 
            string portafoglio = String.Empty;
            ASPxGridView grid = gridlookupPortafogli.GridView;
            object objPortafoglio = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "cod_rap" });

            // Rileva max Richiesta in tmp1 per il portafoglio selezionato
            if (objPortafoglio != null)
            {
                MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.mySqlConnection);
                MySqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = string.Format("SELECT richiesta FROM tmppostit1 WHERE tmppostit1.cod_rap = '{0}' order by richiesta desc LIMIT 1;", objPortafoglio.ToString());
                conn.Open();
                object resQuery = cmd.ExecuteScalar();
                if (resQuery != null)
                {
                    int Richiesta = Convert.ToInt32(resQuery);
                    tbRichiesta.Text = Richiesta.ToString();
                }
                else { ClearText(); memoStatusPortafoglio.Text = "Progr non rilevata, consultare la posizione in GUARDIAN!"; }
                conn.Close();

            }
            else { ClearText(); memoStatusPortafoglio.Text = "Portafoglio non selezionato!"; }
        }

        protected void gridlookupPortafogli_ValueChanged(object sender, EventArgs e)
        {
           // if (rblTipoVar.SelectedIndex==0) RilevaNumRichiesta();
        }

        protected void btnPdfVarPortafoglio_Click(object sender, EventArgs e)
        {
            //string Portafoglio = Request.QueryString["Portafoglio"];
            //int Richiesta = Convert.ToInt32(Request.QueryString["Richiesta"]);
            //double Var95_perc = Convert.ToDouble(Request.QueryString["Var95_perc"]);
            //double Var95_money = Convert.ToDouble(Request.QueryString["Var95_money"]);
            //double Var99_perc = Convert.ToDouble(Request.QueryString["Var99_perc"]);
            //double Var99_money = Convert.ToDouble(Request.QueryString["Var99_money"]);
            //double AccBalance = Convert.ToDouble(Request.QueryString["AccBalance"]);
            //double CovExposure = Convert.ToDouble(Request.QueryString["CovExposure"]);

            // Rileva portafoglio selezionato in gridlookupPortafogli
            string portafoglio = String.Empty;
            ASPxGridView grid = gridlookupPortafogli.GridView;
            object objPortafoglio = grid.GetRowValues(grid.FocusedRowIndex, new string[] { "cod_rap" });
            if (objPortafoglio != null) portafoglio = objPortafoglio.ToString();
            else
            {
                ClearText();
                memoStatusPortafoglio.Text = "Portafoglio non selezionato!";
                return;
            }

            // Rileva Richiesta 
            string richiesta = tbRichiesta.Text;
            if (String.IsNullOrEmpty(richiesta) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Campo Richiesta obbligatorio, consultare posizione in Guardian (campo Progr)!";
                return;
            }

            // Rileva VaR 95 (%)
            string Var95_perc = tbVar95PtfPerc.Value.ToString();
            if (String.IsNullOrEmpty(Var95_perc) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Var95 (%) non rilevato";
                return;
            }

            // Rileva VaR 95 (€)
            string Var95_money = String.Format("{0:n0}",Convert.ToDouble(tbVar95Portafoglio.Text));
            if (String.IsNullOrEmpty(Var95_money) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Var95 (€) non rilevato";
                return;
            }

            // Rileva VaR 99 (%)
            string Var99_perc = tbVar99PtfPerc.Value.ToString();
            if (String.IsNullOrEmpty(Var99_perc) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Var99 (%) non rilevato";
                return;
            }

            // Rileva VaR 99 (€)
            string Var99_money = String.Format("{0:n0}", Convert.ToDouble(tbVar99Portafoglio.Text)); 
            if (String.IsNullOrEmpty(Var99_money) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Var99 (€) non rilevato";
                return;
            }

            // Rileva Account Balance
            string AccBalance = String.Format("{0:n0}", Convert.ToDouble(tbAccBalance.Text)); 
            if (String.IsNullOrEmpty(AccBalance) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Account Balance non rilevato";
                return;
            }

            // Rileva Covered Exposure
            string CovExposure = String.Format("{0:n0}", Convert.ToDouble(tbCovExpPortafoglio.Text)); 
            if (String.IsNullOrEmpty(CovExposure) == true)
            {
                ClearText();
                memoStatusPortafoglio.Text = "Covered Exposure non rilevato";
                return;
            }

            // Controlli superati, crea il pdf del var ex-ante
            // https://reports.smart-roots.net:4004/ReportVaRCall.aspx?Portafoglio=10CONV&Richiesta=19065&Var95_perc=4.93&Var95_money=520699.001623855&Var99_perc=8.94&Var99_money=944767.296269244&AccBalance=10568652.49&CovExposure=6852703.25886484
            string pdfLink = String.Format("https://reports.smart-roots.net:4004/ReportVaRCall.aspx?Portafoglio={0}&Richiesta={1}&Var95_perc={2}&Var95_money={3}&Var99_perc={4}&Var99_money={5}&AccBalance={6}&CovExposure={7}",
                                           portafoglio,richiesta,Var95_perc,Var95_money,Var99_perc,Var99_money,AccBalance,CovExposure);

            ScriptManager.RegisterStartupScript(Page, typeof(System.Web.UI.Page), "OpenWindow", "window.open('" + pdfLink + "');", true);
        }
    }
}
 