using System; using System.Collections.Generic; using System.Text; using System.Data; namespace PDFGenerator.BusinessLayer.DataSection { class DSS103TabellaEmittenti : IDataSection { #region IDataSection Members public DataSectionResult getDataSection (List tabelleSessione, string querySql, DataThread dataThread) { DataSectionResult dsr = new DataSectionResult(); DataTable dt = null; dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); dsr.Esito = dt.Rows.Count; if (dt.Rows.Count == 0) { return dsr; } FormatNum num = new FormatNum(); DataSetS103 ds103 = new DataSetS103(); DataSetS103.EmittentiRow emittente; DataRow[] filtrata; //DataView dw = new DataView(dt);//,"Institute= "+dataThread.Intermediario, //V il filtro va rivisto if(dataThread.TipoReport.ToUpper() == "DIAGNOSI") filtrata = dt.Select("INTERMEDIARIO= '" + dataThread.Intermediario.Replace("'", "''") + "'"); else filtrata = dt.Select("INTERMEDIARIO= 'BF" +"'"); //Devo rappresentare al più 3 righe int numRighe = 3; if (filtrata.Length < 3) numRighe = filtrata.Length; //filtrata.Rows.Count; //foreach (DataRow row in filtrata.Rows) for(int i = 0; i < numRighe; i++) { DataRow row = filtrata[i]; bool rc1, rc2, rc3, rc4, rc5, rc6, rc7, rc8, rc9, rc10, nc; rc1 = Convert.ToBoolean(row["flg_riskclass1"]); rc2 = Convert.ToBoolean(row["flg_riskclass2"]); rc3 = Convert.ToBoolean(row["flg_riskclass3"]); rc4 = Convert.ToBoolean(row["flg_riskclass4"]); rc5 = Convert.ToBoolean(row["flg_riskclass5"]); rc6 = Convert.ToBoolean(row["flg_riskclass6"]); rc7 = Convert.ToBoolean(row["flg_riskclass7"]); rc8 = Convert.ToBoolean(row["flg_riskclass8"]); rc9 = Convert.ToBoolean(row["flg_riskclass9"]); rc10 = Convert.ToBoolean(row["flg_riskclass10"]); nc = Convert.ToBoolean(row["nc"]); emittente = ds103.Emittenti.NewEmittentiRow(); emittente.Emittente = row["Issuer"].ToString(); Int16 iCont = 0; bool multiclass = false; if (!rc1 && !rc2 && !rc3 && !rc4 && !rc5 && !rc6 && !rc7 && !rc8 && !rc9 && !rc10) emittente.Rischio = "n.a."; if (!nc) { if (rc1) { iCont++; emittente.Rischio += "Rischio 1/10"; multiclass = true; } if (rc2) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 2/10"; else emittente.Rischio += "Rischio 2/10"; multiclass = true; } if (rc3) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 3/10"; else emittente.Rischio += "Rischio 3/10"; multiclass = true; } if (rc4) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 4/10"; else emittente.Rischio += "Rischio 4/10"; multiclass = true; } if (rc5) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 5/10"; else emittente.Rischio += "Rischio 5/10"; multiclass = true; } if (rc6) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 6/10"; else emittente.Rischio += "Rischio 6/10"; multiclass = true; } if (rc7) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 7/10"; else emittente.Rischio += "Rischio 7/10"; multiclass = true; } if (rc8) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 8/10"; else emittente.Rischio += "Rischio 8/10"; multiclass = true; } if (rc9) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 9/10"; else emittente.Rischio += "Rischio 9/10"; multiclass = true; } if (rc10) { iCont++; if (multiclass) emittente.Rischio += " - Rischio 10/10"; else emittente.Rischio += "Rischio 10/10"; multiclass = true; } if (iCont > 4) { //emittente.Rischio = "Rischio 9/10 - Rischio 9/10 - Rischio 9/10 - Rischio 10/10"; //emittente.Rischio = "Rischio 1-2-3-4-5-6-7-8-9-10/10"; emittente.Rischio = string.Empty; multiclass = false; if (rc1) { emittente.Rischio += "1"; multiclass = true; } if (rc2) { if (multiclass) emittente.Rischio += "-2"; else emittente.Rischio += "2"; multiclass = true; } if (rc3) { if (multiclass) emittente.Rischio += "-3"; else emittente.Rischio += "3"; multiclass = true; } if (rc4) { if (multiclass) emittente.Rischio += "-4"; else emittente.Rischio += "4"; multiclass = true; } if (rc5) { if (multiclass) emittente.Rischio += "-5"; else emittente.Rischio += "5"; multiclass = true; } if (rc6) { if (multiclass) emittente.Rischio += "-6"; else emittente.Rischio += "6"; multiclass = true; } if (rc7) { if (multiclass) emittente.Rischio += "-7"; else emittente.Rischio += "7"; multiclass = true; } if (rc8) { if (multiclass) emittente.Rischio += "-8"; else emittente.Rischio += "8"; multiclass = true; } if (rc9) { if (multiclass) emittente.Rischio += "-9"; else emittente.Rischio += "9"; multiclass = true; } if (rc10) { if (multiclass) emittente.Rischio += "-10"; else emittente.Rischio += "10"; multiclass = true; } emittente.Rischio = "Rischio " + emittente.Rischio + "/10"; } } else emittente.Rischio = "n.c."; //Vuol dire che ho concatenato almeno 2 stringhe e quindi ho almeno 2 classi di rischio, c'è la necessità di inserire la nota //if (emittente.Rischio.Length > "Oltre Classe 3".Length) if (iCont > 1) { emittente.Rischio += "*"; emittente.Nota = true; } //emittente.Rischio = row["CreditRisk"].ToString(); emittente.CtvObbligazionario = num.ConvertNum(row["bondsCounterValue"]); //.ToString(); emittente.CtvAzionario = num.ConvertNum(row["stocksCounterValue"]); if(dataThread.Intermediario.ToUpper() == "COMPLESSIVO") emittente.Concentrazione = num.ConvertPerformance(row["concentration_issuer"]); else emittente.Concentrazione = num.ConvertPerformance(row["concentration"]); //V Aggiunto !nc altrimenti in caso di non copertura inseriva na if (Convert.ToDouble(row["bondsCounterValue"]) <= 0 && !nc) emittente.Rischio = "n.a."; ds103.Emittenti.AddEmittentiRow(emittente); } dsr.Esito = ds103.Emittenti.Rows.Count; dsr.DatiSezione = ds103; return dsr; } #endregion } }