using PDFGenerator.BusinessLayer.DataSection; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; namespace PDFGenerator.BusinessLayer { public static class SectionAdditionsConditionChecker { public static bool S128AddonAsteriskAndNote(DataThread dataThread) { DataSetS128 dataSet = (DataSetS128)dataThread.Data.DatiSezione; string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1]; decimal rischioMercatoMax = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax); decimal rischioMercatoVal = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal); decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]); decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]); bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax); return result; } public static bool S132AddonNote_2nd(DataThread dataThread) { DataSetS132 dataSet = (DataSetS132)dataThread.Data.DatiSezione; string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1]; decimal rischioMercatoMax = (decimal)dataSet.Tables["DatiGrafico"].Rows[0]["RischioMercatoMax"]; decimal rischioMercatoVal = (decimal)dataSet.Tables["DatiGrafico"].Rows[0]["RischioMercato"]; var rischioCreditoMaxTmp = dataSet.Tables["DatiGrafico"].Rows[0]["RischioCreditoMax"]; decimal rischioCreditoMax = rischioCreditoMaxTmp == DBNull.Value ? 0m : (decimal)rischioCreditoMaxTmp; var rischioCreditoValTmp = dataSet.Tables["DatiGrafico"].Rows[0]["RischioCredito"]; decimal rischioCreditoVal = rischioCreditoValTmp == DBNull.Value ? 0m : (decimal)rischioCreditoValTmp; bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax); dataThread.IsAdequatezza = result; return result; } public static bool S80BisBottomLabel(DataThread dataThread) { //20180917 AC aggiunto per far uscire la nota su eccessiva adeguatezza DSS128ProfiliRischioAdeguatezza s128 = new DSS128ProfiliRischioAdeguatezza(); DataSectionResult sectionResult = s128.getDataSection(new List(), "[C6MartPeriodico].[PL_MP_S128ProfiloRischioAdeguatezza]", dataThread); DataSetS128 dataSet = (DataSetS128) sectionResult.DatiSezione; //DataSetS80BIS dataSet = (DataSetS80BIS)dataThread.Data.DatiSezione; string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1]; decimal rischioMercatoMax = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax); decimal rischioMercatoVal = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal); decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]); decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]); bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax); dataThread.IsAdequatezza = result; return result; //--20180917 //return dataThread.IsAdequatezza == true; } //20180917 AC aggiunto per far uscire la nota su eccessiva adeguatezza nella S170 public static bool S170BottomLabel(DataThread dataThread) { DSS128ProfiliRischioAdeguatezza s128 = new DSS128ProfiliRischioAdeguatezza(); DataSectionResult sectionResult = s128.getDataSection(new List(), "[C6MartPeriodico].[PL_MP_S128ProfiloRischioAdeguatezza]", dataThread); DataSetS128 dataSet = (DataSetS128)sectionResult.DatiSezione; string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1]; decimal rischioMercatoMax = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax); decimal rischioMercatoVal = 0; decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal); decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]); decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]); bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax); dataThread.IsAdequatezza = result; return result; } //--20180917 private static bool S128And132NotesAndAsterisk(TipoContratto contractType, string profilioFinanziario, decimal rischioMercatoVal, decimal rischioMercatoMax, decimal rischioCreditoVal, decimal rischioCreditoMax) { profilioFinanziario = profilioFinanziario.ToLower(); int useAddins = int.Parse(ConfigurationManager.AppSettings["S132AndS128ShowNotesAndAsterisk"]); // we can disable entire change in config file //return true; if (useAddins == 1) { if (rischioMercatoMax >= rischioMercatoVal && rischioCreditoMax >= rischioCreditoVal) // white area condition { if (profilioFinanziario.Contains("equilibrato") && rischioMercatoVal <= 2) // 2 levels condition { return true; } if (profilioFinanziario.Contains("dinamico") && rischioMercatoVal <= 4.5m) // 2 levels condition { return true; } if (profilioFinanziario.Contains("aggressivo") && rischioMercatoVal <= 9.5m) // 2 levels condition { return true; } } return false; } else { return false; } } private static decimal ConvertRischioClasseToDecimal(string value) { decimal result = 0; switch (value.ToLower()) { case "classe a": result = 1; break; case "classe b": result = 2; break; case "classe c": result = 3; break; case "": case null: case "n.a.": default: result = 0; break; } return result; } } }