using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Domen; using Sesija;


namespace KolokvijumPrimer1 {

   public partial class FrmKlijent : Form
   {
       
       //List<Predmet> pre = new List<Predmet>();
       
       Broker b = new Broker();
       public FrmKlijent()
       {
           InitializeComponent();
           // Prikazuje unete Studente i Predmete
           cmbStudent.DataSource = Broker.dajSesiju().vratiStudente();//sta je bolje?
           cmbPredmet.DataSource = b.vratiPredmete();
           cmbPredmetStatistika.DataSource = b.vratiPredmete();
       }
       // akcija na dugme "Sačuvaj ispitnu prijavu"
       private void button1_Click(object sender, EventArgs e)
       {
           // Skuplja podatke o prijavi
           Prijava prijava = new Prijava();
           prijava.DatumPolaganja = txtDatumPolaganja.Text;
          
           prijava.Profesor = txtProfesor.Text;
           //jako biitno radi sa odabranim studentima
           Student s = cmbStudent.SelectedItem as Student;
           prijava.Student = s;
           Predmet p = cmbPredmet.SelectedItem as Predmet;
           prijava.Predmet = p;
           // Proverava da li su sva polja za unos prijave popunjena
           if (txtDatumPolaganja.Text == "" || txtOcena.Text == "" || txtProfesor.Text == "" || cmbPredmet.SelectedItem == null || cmbStudent.SelectedItem == null)
           {
               MessageBox.Show("Morate popuniti sva polja!");
           }
           else
           {
               prijava.Ocena = Convert.ToInt32(txtOcena.Text);
               // Proverava da li ima novca na racunu
               if (s.StanjeNaRAcunu == 0 || s.StanjeNaRAcunu < Convert.ToDouble(p.Espb_Bodovi*100))
               {
                   MessageBox.Show("Nemate dovoljno novca na računu!");
               }
               else
               {
                   bool found = false;
                   // Proverava da li je već uneta prijava za ovog sudenta za ovaj predmet 
                   foreach (Prijava pr in b.vratiPrijave())
                   {
                       if (prijava.Predmet.SifraPredmeta == pr.Predmet.SifraPredmeta && prijava.Student.SifraStudenta == pr.Student.SifraStudenta)
                       {
                           MessageBox.Show("Prijava već postoji!");
                           found = true;
                           break;
                       }
                   }
                   if (!found)
                   {
                       // Unosi prijavu
                       b.unesiPrijavu(prijava);
                       // Smanjuje stanje na racunu za vrednost prijave
                       s.StanjeNaRAcunu = s.StanjeNaRAcunu - p.Espb_Bodovi * 100;
                       b.azurirajStanjeNaRacunu(s);
                       MessageBox.Show("Prijava je uspešno sačuvana.");
                   }
               }
           }
           
       }
       // akcija na comboBox
       private void cmbPredmetStatistika_SelectedIndexChanged(object sender, EventArgs e)
       {
           //2 Za selektovani predmet iz comboBox-a prikazuje u tabeli sve Stdente koji su položili taj predmet
           Predmet p = cmbPredmetStatistika.SelectedItem as Predmet;
           dataGridView1.DataSource = b.prikaziPolozene(p);
       }
       //3 akcija na dugme "Poništi ispit"
       private void btnPonistiIspit_Click(object sender, EventArgs e)
       {
           // Za selektovanog Studenta i Predmet se vrši brisanje prijave iz baze
           Student s = cmbStudent.SelectedItem as Student;
           Predmet p = cmbPredmet.SelectedItem as Predmet;
           bool found = false;
           // Proverava se da li ispitna prijava postoji u bazi
               foreach (Prijava prijava in b.vratiPrijave())
               {
                   if (prijava.Student.SifraStudenta == s.SifraStudenta && prijava.Predmet.SifraPredmeta == p.SifraPredmeta)
                   {
                       // Ako postoji ispitna prijava, proveravamo da li ima dovoljno novca na stanju da bi de prijava poništila
                       if (s.StanjeNaRAcunu == 0 || s.StanjeNaRAcunu < Convert.ToDouble(prijava.Ocena * 100))
                       {
                           MessageBox.Show("Nemate dovoljno novca na računu!");
                       }
                       // Ako ima novca na stanju brišemo prijavu
                       else
                       {
                           b.obrisiPrijavu(s, p);
                           s.StanjeNaRAcunu = s.StanjeNaRAcunu - prijava.Ocena * 100;
                           b.azurirajStanjeNaRacunu(s);
                           MessageBox.Show("Ispitna prijava je poništena.");
                       }
                       found = true;
                       break;
                   }
               }
               if (!found)
                   MessageBox.Show("Prijava ne postoji u bazi!");
       }
   }

}