예제 #1
0
 public ReportPorfitLossAnnoGestioniViewModel(ReportProfitLossList reportProfitLossList, bool isDetailed)
 {
     reportProfitLosses = reportProfitLossList ?? throw new ArgumentNullException("Mancano i dati per la costruzione del report.");
     //AddTotals(reportProfitLosses);
     ProfitLossData = reportProfitLossList;
     IsDetailed     = isDetailed == true ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
 }
        public ReportProfitLossList GetReport1(IList <RegistryOwner> _selectedOwners,
                                               IList <int> _selectedYears, bool isSynthetic)
        {
            string owners = " (";

            foreach (RegistryOwner i in _selectedOwners)
            {
                owners += " A.id_gestione = " + i.Id_gestione + " or ";
            }
            owners  = owners.Substring(0, owners.Length - 4);
            owners += ") ";
            string anni = " (";

            foreach (int i in _selectedYears)
            {
                anni += " year(data_movimento) = " + i + " or ";
            }
            anni  = anni.Substring(0, anni.Length - 4);
            anni += ") ";
            string query = owners + " and " + anni;

            try
            {
                ReportProfitLossList reportProfitLossList = new ReportProfitLossList();
                DataTable            data = new DataTable();
                using (MySqlDataAdapter dbAdapter = new MySqlDataAdapter())
                {
                    dbAdapter.SelectCommand             = new MySqlCommand();
                    dbAdapter.SelectCommand.CommandType = System.Data.CommandType.Text;
                    dbAdapter.SelectCommand.CommandText = isSynthetic == true?string.Format(SQL.ReportScripts.GetProfitLoss, query) :
                                                              string.Format(SQL.ReportScripts.GetDetailedProfitLoss, query);

                    dbAdapter.SelectCommand.Connection = new MySqlConnection(DAFconnection.GetConnectionType());
                    dbAdapter.Fill(data);
                    foreach (DataRow dr in data.Rows)
                    {
                        ReportProfitLoss RPL = new ReportProfitLoss();
                        RPL.Anno      = dr.Field <int>("Anno");
                        RPL.Gestione  = dr.Field <string>("nome_gestione");
                        RPL.TipoSoldi = dr.Field <string>("desc_tipo_soldi");
                        RPL.Valuta    = dr.Field <string>("cod_valuta");
                        if (!isSynthetic)
                        {
                            RPL.NomeTitolo = dr.Field <string>("desc_titolo");
                            RPL.ISIN       = dr.Field <string>("isin");
                        }
                        else
                        {
                            RPL.NomeTitolo = "";
                            RPL.ISIN       = "";
                        }
                        RPL.Azioni       = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Azioni") * -1 : dr.Field <double>("Azioni");
                        RPL.Obbligazioni = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Obbligazioni") * -1 : dr.Field <double>("Obbligazioni");
                        RPL.Certificati  = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Certificati") * -1 : dr.Field <double>("Certificati");
                        RPL.ETF_C_P      = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("ETF_C_P") * -1 : dr.Field <double>("ETF_C_P");
                        RPL.Fondo        = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Fondo") * -1 : dr.Field <double>("Fondo");
                        RPL.Futures      = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Futures") * -1 : dr.Field <double>("Futures");
                        RPL.Opzioni      = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Opzioni") * -1 : dr.Field <double>("Opzioni");
                        RPL.Commodities  = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Commodities") * -1 : dr.Field <double>("Commodities");
                        RPL.Costi        = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Costi") * -1 : dr.Field <double>("Costi");
                        RPL.Totale       = RPL.TipoSoldi == "Perdita di Capitale" ? dr.Field <double>("Totale") * -1 : dr.Field <double>("Totale");
                        reportProfitLossList.Add(RPL);
                    }
                }
                return(reportProfitLossList);
            }
            catch (MySqlException err)
            {
                throw new Exception(err.Message);
            }
            catch (Exception err)
            {
                throw new Exception(err.Message);
            }
        }