using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using ConsulenzaEvoluta;
using ClassLibraryWS.bancafideuram.nac.anagrafica;
public partial class query : System.Web.UI.Page
{
private DataTable GetDataOracle()
{
DataSectionParameter dsr = new DataSectionParameter();
dsr.CodiceCliente = this.txtCF.Text.Trim();
dsr.CodicePB = this.txtPB.Text.Trim();
dsr.CodiceRete = this.txtRETE.Text.Trim();
try
{
return SectionManager.GetDataSection(txtFileSQL.Text.ToUpper(), dsr);
}
catch (DataBaseException ex)
{
throw new DataBaseException(ex, ex.ConnectionStringWithoutCredentials, ex.CommandText);
}
}
private DataTable GetDataSqlServer()
{
DataSectionParameter dsr = new DataSectionParameter();
dsr.CodiceCliente = this.txtCF.Text.Trim();
dsr.CodicePB = this.txtPB.Text.Trim();
dsr.CodiceRete = this.txtRETE.Text.Trim();
try
{
Cliente cliente = Cliente.getCliente(dsr.CodiceRete + dsr.CodicePB, dsr.CodiceCliente);
return BusinessManager.GetDataTableFromStoredProcedure_ConsulenzaEvoluta(txtStoredSQL.Text, cliente.ChiaveClientePB);
}
catch (DataBaseException ex)
{
throw new DataBaseException(ex, ex.ConnectionStringWithoutCredentials, ex.CommandText);
}
}
///
/// Esegue le query su Oracle (SEIReport)
///
///
///
protected void Esegui_Click(object sender, EventArgs e)
{
try
{
lblNoDatiOracle.Visible = false;
DateTime inizioElaborazioneQuery = DateTime.Now;
DataTable dt = GetDataOracle();
DateTime fineElaborazioneQuery = DateTime.Now;
#region Tempo impiegato alla elaborazione
TimeSpan tempoImpiegato = fineElaborazioneQuery.Subtract(inizioElaborazioneQuery);
#endregion
this.tempoElaborazioneOracle.Text = dt.Rows.Count + " righe in (m:s:ms) = " + tempoImpiegato.Minutes + " : " + tempoImpiegato.Seconds + " : " + tempoImpiegato.Milliseconds;
if (dt.Rows.Count > 0)
{
grigliaOracle.DataSource = dt;
grigliaOracle.DataBind();
}
else
{
grigliaOracle.DataSource = null;
grigliaOracle.DataBind();
lblNoDatiOracle.Visible = true;
}
}
catch (DataBaseException ex)
{
Response.Write(ex.Eccezione.Message);
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
}
///
/// Esegue le query su SqlServer (ConsulenzaEvoluta)
///
///
///
protected void EseguiSql_Click(object sender, EventArgs e)
{
try
{
lblNoDatiSqlServer.Visible = false;
DateTime inizioElaborazioneQuery = DateTime.Now;
DataTable dt = GetDataSqlServer();
DateTime fineElaborazioneQuery = DateTime.Now;
#region Tempo impiegato alla elaborazione
TimeSpan tempoImpiegato = fineElaborazioneQuery.Subtract(inizioElaborazioneQuery);
#endregion
this.tempoElaborazioneSqlServer.Text = dt.Rows.Count + " righe in (m:s:ms) = " + tempoImpiegato.Minutes + " : " + tempoImpiegato.Seconds + " : " + tempoImpiegato.Milliseconds;
if (dt.Rows.Count > 0)
{
grigliaSqlServer.DataSource = dt;
grigliaSqlServer.DataBind();
}
else
{
grigliaSqlServer.DataSource = null;
grigliaSqlServer.DataBind();
lblNoDatiSqlServer.Visible = true;
}
}
catch (DataBaseException ex)
{
Response.Write(ex.Eccezione.Message);
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.End();
}
}
///
/// Compara i dati da oracle con quelli da sqlserver
///
///
///
protected void Compara_Click(object sender, EventArgs e)
{
DataTable dt;
dt = getDifferentRecords(GetDataOracle(), GetDataSqlServer());
if (dt.Rows.Count == 0)
lblRisultatoComparazione.Text = "Uguali";
else
lblRisultatoComparazione.Text = "Diversi";
}
protected void NoSession_Click(object sender, EventArgs e)
{
int numeroChiaviTotale = Session.Keys.Count - 1;
int i = numeroChiaviTotale;
while (i > 0)
{
if (Session.Keys[i].ToString().ToLower().Contains(txtCF.Text.Trim().ToLower()))
Session.Remove(Session.Keys[i].ToString());
i--;
}
}
protected void griglia_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = GetDataOracle();
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
grigliaOracle.DataSource = dataView;
grigliaOracle.DataBind();
}
}
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
}
protected void LanciaProceduraCaricamentoDati_Click(object sender, EventArgs e)
{
List listParameters = new List();
Parametro parametro;
parametro = new Parametro();
parametro.ParameterName = "v_codfis";
parametro.Value = this.txtCF.Text.Trim();
parametro.DbType = DbType.AnsiStringFixedLength;
listParameters.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "v_rete";
parametro.Value = this.txtRETE.Text.Trim();
parametro.DbType = DbType.AnsiStringFixedLength;
listParameters.Add(parametro);
try
{
DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.Oracle, "avvio_report", listParameters);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
#region Compare two DataTables and return a DataTable with DifferentRecords
public DataTable getDifferentRecords(DataTable FirstDataTable, DataTable SecondDataTable)
{
FirstDataTable.TableName = "TabellaOracle";
SecondDataTable.TableName = "TabellaSqlServer";
//Create Empty Table
DataTable ResultDataTable = new DataTable("ResultDataTable");
//use a Dataset to make use of a DataRelation object
using (DataSet ds = new DataSet())
{
//Add tables
ds.Tables.AddRange(new DataTable[] { FirstDataTable.Copy(), SecondDataTable.Copy() });
//Get Columns for DataRelation
DataColumn[] firstColumns = new DataColumn[ds.Tables[0].Columns.Count];
for (int i = 0; i < firstColumns.Length; i++)
{
firstColumns[i] = ds.Tables[0].Columns[i];
}
DataColumn[] secondColumns = new DataColumn[ds.Tables[1].Columns.Count];
for (int i = 0; i < secondColumns.Length; i++)
{
secondColumns[i] = ds.Tables[1].Columns[i];
}
////Create DataRelation
//DataRelation r1 = new DataRelation(string.Empty, firstColumns, secondColumns, false);
//ds.Relations.Add(r1);
//DataRelation r2 = new DataRelation(string.Empty, secondColumns, firstColumns, false);
//ds.Relations.Add(r2);
//Create columns for return table
for (int i = 0; i < FirstDataTable.Columns.Count; i++)
{
ResultDataTable.Columns.Add(FirstDataTable.Columns[i].ColumnName, typeof(string)); //FirstDataTable.Columns[i].DataType);
}
//If FirstDataTable Row not in SecondDataTable, Add to ResultDataTable.
ResultDataTable.BeginLoadData();
foreach (DataRow parentrow in ds.Tables[0].Rows)
{
//DataRow[] childrows = parentrow.GetChildRows(r1);
//if (childrows == null || childrows.Length == 0)
ResultDataTable.LoadDataRow(parentrow.ItemArray, true);
}
//If SecondDataTable Row not in FirstDataTable, Add to ResultDataTable.
foreach (DataRow parentrow in ds.Tables[1].Rows)
{
//DataRow[] childrows = parentrow.GetChildRows(r2);
//if (childrows == null || childrows.Length == 0)
ResultDataTable.LoadDataRow(parentrow.ItemArray, true);
}
ResultDataTable.EndLoadData();
}
return ResultDataTable;
}
#endregion
protected void btnMigrazioneDettaglioASUL_Click(object sender, EventArgs e)
{
esitoMigrazioneFettaglioASUL.Text = string.Empty;
try
{
DataTable tabellaInputOracle = DataAccess.ExecuteDataTableSqlStatement(DBProvider.Oracle, "select distinct a.adbkid as cf, v.rete_pb as rete, v.codice_pb as agente from v_all_cf_e_pb v, proposta a, clonepos clo, catitemref t where v.codicefiscale = a.adbkid and v.rete_pb = a.instid and a.type$_statop_1e6ec='Validata' and clo.propostaid=a.c_propostaid_117d4 and clo.f_oid$_posit_a78ff=t.oid$ and t.tipoprodotto='ASUL' order by a.adbkid", null);
foreach (DataRow rowInputOracle in tabellaInputOracle.Rows)
{
HttpContext.Current.Session.RemoveAll();
#region Recupero il cliente
string rete = rowInputOracle["rete"].ToString();
string cf = rowInputOracle["cf"].ToString();
string agente = rowInputOracle["agente"].ToString();
string token = string.Empty;
Cliente cliente = Cliente.getCliente(rete + agente, cf);
#endregion
#region Recupero token da AnagraficaWS.GetVersion
if (string.IsNullOrEmpty(token))
{
string codPortal = WebConfigParameter.getParameter("CODICEPORTALEPERVERSIONESIMPB");
InfoClient infoCliente = new InfoClient();
infoCliente.codiceApplicazione = WebConfigParameter.getParameter("CODICEAPPLICAZIONE").ToString();
infoCliente.codiceRete = rete;
infoCliente.versioneDatabaseSIMPB = 0;
AnagraficaWS wsana = new AnagraficaWS();
PBRes risposta = wsana.GetVersion(infoCliente, codPortal);
token = risposta.info.versioneDatabaseSIMPB.ToString();
}
#endregion
#region InfoClient e ChiaveCliente di GlobalPosition e Anagrafica
// Global Position
ClassLibraryWS.bancafideuram.nac.globalposition.InfoClient _infoCliente_GlobalPosition = new ClassLibraryWS.bancafideuram.nac.globalposition.InfoClient();
_infoCliente_GlobalPosition.codiceApplicazione = WebConfigParameter.getParameter("CODICEAPPLICAZIONE").ToString();
_infoCliente_GlobalPosition.codiceRete = rete;
_infoCliente_GlobalPosition.versioneDatabaseSIMPB = int.Parse(token);
ClassLibraryWS.bancafideuram.nac.globalposition.ChiaveCliente _chiaveCliente_GlobalPosition = new ClassLibraryWS.bancafideuram.nac.globalposition.ChiaveCliente();
_chiaveCliente_GlobalPosition.codiceAgente = agente;
_chiaveCliente_GlobalPosition.codicefiscale = cf;
_chiaveCliente_GlobalPosition.codiceRete = rete;
_chiaveCliente_GlobalPosition.potenzialeClienteNAC = true;
// Anagrafica
ClassLibraryWS.bancafideuram.nac.anagrafica.InfoClient _infoCliente_Anagrafica = new ClassLibraryWS.bancafideuram.nac.anagrafica.InfoClient();
_infoCliente_Anagrafica.codiceApplicazione = WebConfigParameter.getParameter("CODICEAPPLICAZIONE").ToString();
_infoCliente_Anagrafica.codiceRete = rete;
_infoCliente_Anagrafica.versioneDatabaseSIMPB = int.Parse(token);
ClassLibraryWS.bancafideuram.nac.anagrafica.ChiaveCliente _chiaveCliente_Anagrafica = new ClassLibraryWS.bancafideuram.nac.anagrafica.ChiaveCliente();
_chiaveCliente_Anagrafica.codiceAgente = agente;
_chiaveCliente_Anagrafica.codicefiscale = cf;
_chiaveCliente_Anagrafica.codiceRete = rete;
_chiaveCliente_Anagrafica.potenzialeClienteNAC = true;
#endregion
#region Caricamento tabella Dettaglio_Asul
// Recupero i dati dalla Prometeia.GetContrattoSintesiPerClienteCaricamentoAsul
DataTable dtDettaglioAsul = new DataTable();
DataTable dtContrattoSintesiPerCliente = Prometeia.GetContrattoSintesiPerClienteCaricamentoAsul(_chiaveCliente_GlobalPosition, _infoCliente_GlobalPosition, cliente.ChiaveClientePB);
DataRow[] rowsProdottiAsul = dtContrattoSintesiPerCliente.Select("tipoProdotto='ASUL'");
// Richiamo il dettaglio asul per ogni asul trovato nel portafoglio del cliente.
foreach (DataRow itemProdottoAsul in rowsProdottiAsul)
{
dtDettaglioAsul.Merge(Prometeia.GetContrattoUnitLinkedSaldo(_chiaveCliente_GlobalPosition, itemProdottoAsul["CODICECONTRATTO"].ToString(), _infoCliente_GlobalPosition, cliente.ChiaveClientePB));
}
// Insert sulla DETTAGLIO_ASUL di ConsulenzaEvoluta
if (dtDettaglioAsul.Rows.Count > 0)
BusinessManager.InsertData_Into_DettaglioAsul(cliente.ChiaveClientePB, dtDettaglioAsul);
#endregion
}
esitoMigrazioneFettaglioASUL.Text = "migrazione COMPLETATA";
}
catch (Exception ex)
{
esitoMigrazioneFettaglioASUL.Text = "migrazione NON COMPLETATA -- " + ex.Message;
}
}
}