// gruenlandladen.cpp : implementation file
//

#include "stdafx.h"
#include "Ecopay.h"
#include "gruenlandladen.h"
#include <string>
#include <sstream> 
#include "ergebnis.h"
#include "modell.h"
#include "gruenland.h"
#include "massnahme.h"
#include "datenbank.h"
#include "gruenlanddialog.h"

// gruenlandladen dialog

IMPLEMENT_DYNAMIC(gruenlandladen, CDialog)

gruenlandladen::gruenlandladen(CWnd* pParent /*=NULL*/)
: CDialog(gruenlandladen::IDD, pParent)
, name(_T(""))
, savetime(_T(""))
{

}

gruenlandladen::~gruenlandladen()
{
}

void gruenlandladen::DoDataExchange( CDataExchange* pDX)
{
    CDialog::DoDataExchange( pDX);
    DDX_Control( pDX, IDC_ART_AUSWAHL, m_combo_art_auswahl);
}
BOOL gruenlandladen::OnInitDialog()
{
    CDialog::OnInitDialog();

    return TRUE;
}

BEGIN_MESSAGE_MAP(gruenlandladen, CDialog)
ON_CBN_SELCHANGE(IDC_ART_AUSWAHL, &gruenlandladen::OnCbnSelchangeArtAuswahl)
ON_BN_CLICKED(IDOK, &gruenlandladen::OnBnClickedOk)
END_MESSAGE_MAP()

// gruenlandladen message handlers
void gruenlandladen::OnCbnSelchangeArtAuswahl()
{

    CString artauswahl;
    int nIndex = m_combo_art_auswahl.GetCurSel();
    if (nIndex != CB_ERR)

    {
        m_combo_art_auswahl.GetLBText(nIndex,artauswahl);
        // aus dem string artauswahl muss der Name und die savetime ausgelesen werden.

    }

    string::size_type posA, posB, posC;

    string line(artauswahl);
    string wuchs;

    // Find first non-whitespace character.
    posA = line.find_first_not_of( " \t", 0);
    posC = line.find_first_of( "/", 0);
    //posC = line.find_first_not_of( " \t", posD);

    name = line.substr( posA, posC - posA);

    // Find first whitespace after that (i.e. end of token).
    posB = line.find_first_of( ",", posC+1);

    // Iterate this until the end of the line.
    // while( string::npos != posA || string::npos != posB)
    // {
    // Extract the token.
    wuchs = line.substr( posC+1, posB - (posC+1));
    if( wuchs == "schwachwüchsig")
    mager = true;
    else
    mager = false;

    CString bname(name.c_str());
    //AfxMessageBox(bname,MB_YESNO,0);

    //... do something with the token ...

    // Find next token same way as before.
    posA = line.find_first_not_of( " \t", posB+1);

    posB = line.find_first_of( ",t", posA);
    savetime = line.substr( posA, posB - posA);
    //CString btime(savetime.c_str());
    //AfxMessageBox(btime,MB_YESNO,0);

    //}

}

void gruenlandladen::OnBnClickedOk()
{


    if( name != "" && savetime != "")
    {
        CString mv;
        CString str;
        char ma[ 1000];
        stringstream returnstring;
        string result;
        gruenlanddialog* gruenDlg;
        gruenDlg = new gruenlanddialog();

        //Check if new succeeded and we got a valid pointer to a dialog object
        if( gruenDlg != NULL)
        {
            BOOL ret = gruenDlg->Create( IDD_DIALOG_gruenland);
            if( !ret) //Create failed.
                AfxMessageBox( "Error creating Dialog", MB_YESNO, 0);
            daten.returndistinctgruenland( gruen, name, savetime, mager);
            gruenDlg->ShowWindow( SW_SHOW);
            if( gruen.mager == true)
            {
                returnstring.str( "");
                returnstring.clear();
                returnstring << gruen.name_deutsch << "/ schwachwüsig";
                result = returnstring.str();
                lstrcpy( ma, result.c_str());
                gruenDlg->SetWindowTextA( ma);
            } else
            {
                returnstring.str( "");
                returnstring.clear();
                returnstring << gruen.name_deutsch << "/ starkwüchsig";
                result = returnstring.str();
                lstrcpy( ma, result.c_str());
                gruenDlg->SetWindowTextA( ma);
            }
			
            gruenDlg->SetDlgItemTextA( IDC_name, gruen.name_deutsch);
			gruenDlg->gruen_schwach->name_deutsch = gruen.name_deutsch;
			gruenDlg->gruen_stark->name_deutsch = gruen.name_deutsch;
            gruenDlg->SetDlgItemTextA( IDC_lnamelatein, gruen.name_latein);
			gruenDlg->gruen_schwach->name_latein = gruen.name_latein;
			gruenDlg->gruen_stark->name_latein = gruen.name_latein;
            gruenDlg->SetDlgItemTextA( IDC_Person, gruen.name_benutzer);
			gruenDlg->gruen_schwach->name_benutzer = gruen.name_benutzer;
			gruenDlg->gruen_stark->name_benutzer = gruen.name_benutzer;
            mv.Format( _T( "%d"), gruen.nummer);
            gruenDlg->SetDlgItemTextA( IDC_Nummer, mv);
			gruenDlg->gruen_schwach->nummer = gruen.nummer;
			gruenDlg->gruen_stark->nummer = gruen.nummer;
            mv.Format( _T( "%.1f"), gruen.trocken);
            gruenDlg->SetDlgItemTextA( IDC_trocken, mv);
			gruenDlg->gruen_schwach->trocken = gruen.trocken;
			gruenDlg->gruen_stark->trocken = gruen.trocken;
            mv.Format( _T( "%.1f"), gruen.frisch);
            gruenDlg->SetDlgItemTextA( IDC_frisch, mv);
			gruenDlg->gruen_schwach->frisch = gruen.frisch;
			gruenDlg->gruen_stark->frisch = gruen.frisch;
            mv.Format( _T( "%.1f"), gruen.feucht);
            gruenDlg->SetDlgItemTextA( IDC_feucht, mv);
			gruenDlg->gruen_schwach->feucht = gruen.feucht;
			gruenDlg->gruen_stark->feucht = gruen.feucht;


			gruenDlg->gruen_schwach->hoch = gruen.hoch;
			gruenDlg->gruen_stark->hoch = gruen.hoch;
			gruenDlg->gruen_schwach->tief = gruen.tief;
			gruenDlg->gruen_stark->tief = gruen.tief;
			gruenDlg->gruen_schwach->mager = gruen.mager;
			gruenDlg->gruen_stark->mager = gruen.mager;

            vector< massnahme>::iterator mit;
            //vector < massnahme > m_schwach;
            //vector < massnahme > m_stark;
            datenbank daten;

            if( gruen.hoch == true)
            {
                if( gruen.tief == true)
                    gruenDlg->CheckDlgButton( IDC_Egal, 1);
                else
                    gruenDlg->CheckDlgButton( IDC_Hoch, 1);
            } else
                gruenDlg->CheckDlgButton( IDC_Tief, 1);

            if( gruen.mager == true)
            {
                daten.get_massnahmen_for_gruenland( gruenDlg->mliste_schwach,
                        gruen.gruenlandID);
                for( mit = gruenDlg->mliste_schwach.begin(); mit != gruenDlg->mliste_schwach.end(); mit++)
                {
                    returnstring.str( "");
                    returnstring.clear();
                    returnstring << mit->name << ", " << mit->mv1massnahme
                            << "/" << mit->abstand2massnahme <<"/" << mit->abstand3massnahme<< ",";
                    if( (mit->grossvieheinheit != 0)
                            && (mit->grossvieheinheit != 99))
                        returnstring << mit->grossvieheinheit << " (GV), ";

                    returnstring << mit->duengung << " (D)";
                    result = returnstring.str();
                    lstrcpy( ma, result.c_str());
                    gruenDlg->m_liste_gmassnahme_schwach.AddString( ma);
                }
            } else
            {
                daten.get_massnahmen_for_gruenland( gruenDlg->mliste_stark, gruen.gruenlandID);
                for( mit = gruenDlg->mliste_stark.begin(); mit != gruenDlg->mliste_stark.end(); mit++)
                {
                    returnstring.str( "");
                    returnstring.clear();
                    returnstring << mit->name << ", " << mit->mv1massnahme
                            << "/" << mit->abstand2massnahme << ",";
                    if( (mit->grossvieheinheit != 0)
                            && (mit->grossvieheinheit != 99))
                        returnstring << mit->grossvieheinheit << " (GV), ";

                    returnstring << mit->duengung << " (D)";
                    result = returnstring.str();
                    lstrcpy( ma, result.c_str());
                    gruenDlg->m_liste_gmassnahme_stark.AddString( ma);
                }
            }

            gruenDlg->m_d_ja.EnableWindow( false);
            gruenDlg->m_d_nein.EnableWindow( false);
            gruenDlg->m_massnahmeGV.EnableWindow( false);
            gruenDlg->m_massnahmenabstand.EnableWindow( false);
            gruenDlg->m_massnahmenart.EnableWindow( false);
            gruenDlg->m_massnahmenstart.EnableWindow( false);
            gruenDlg->m_massnahmetierart.EnableWindow( false);
            gruenDlg->m_schwach.EnableWindow( false);
            gruenDlg->m_stark.EnableWindow( false);
			gruenDlg->button_erase_schwach.EnableWindow(false);
			gruenDlg->button_erase_stark.EnableWindow(false);
            gruenDlg->GetDlgItem( IDC_Datenbearbeiten)->ShowWindow( TRUE);
            gruenDlg->GetDlgItem( IDC_Datena)->ShowWindow( TRUE);
            gruenDlg->GetDlgItem( IDOK)->ShowWindow( FALSE);
            gruenDlg->GetDlgItem( IDCANCEL)->ShowWindow( FALSE);
            //artenLebensraumDlg->SetDlgItemTextA(IDC_Vogelname, "Lebensraum");
        } else
            AfxMessageBox( "Error Creating Dialog Object", MB_YESNO, 0);

        OnOK();
    } else
        AfxMessageBox( "Bitte treffen Sie erst eine Auswahl!", MB_YESNO, 0);

}
