/// <summary>
 /// Dodavanje na del vo baza.
 /// </summary>
 /// <param name="delObj">Objekt od tip Del koj kje bide dodaden vo baza.</param>
 /// <returns>Ishod od dodavanje na del.</returns>
 public RezultatKomanda addDel(Del delObj)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     dsKomanda = null;
     try
     {
         if (delObj != null)
         {
             rezultat = addDel(delObj.Ime, delObj.ImaPredavac, delObj.Vid_Izgled);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
 public void DodadiMaterijalPoDel(Del del,Materijal materijal)
 {
     if (PoDelovi)
     {
         DelMaterijali tek = NajdiDel(del.ID);
         if (tek != null)
         {
             tek.DodadiMaterijal(materijal);
         }
         else
         {
             tek = new DelMaterijali(del);
             tek.DodadiMaterijal(materijal);
             this._deloviMaterijali.AddLast(tek);
         }
     }
     else
     {
         throw new Exception("Dodadvate materijal po delovi - a objektot e podesen raboti bez delovi.!");
     }
 }
        LiteralControl NacrtajDeloviPredmetNasoka(Del delObj,int nasokaID, String kategorija, int broj)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("<li id=\"" + kategorija + "\">");
            sb.Append(delObj.Ime);
            sb.Append("</li>");

            return new LiteralControl("<a href=\"PredmetStudent.aspx?NasID=" + this.Nasoka_ID_NPD_Pregled_Selected + "&PredID=" + this.Predmet_ID_NPD_Pregled_Selected + "&DelID=" + delObj.ID + "\">" + sb.ToString() + "</a>");
        }
 public RezultatKomanda addMaterijalPredmet(Materijal matObj, PredmetNasoka predmetNasokaObj, Del delObj)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     try
     {
         if (matObj != null && predmetNasokaObj !=null && delObj != null)
         {
             rezultat = addMaterijalPredmet(matObj.MaterijalID, predmetNasokaObj.NasokaID, predmetNasokaObj.PredmetID, delObj.ID);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
        public RezultatKomanda getMaterijali(int NasokaID, int PredmetID, int? DeloviID, ref MaterijaliGrupirani grupiranMaterijali)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();


                //Parametar za @Nasoka_ID  = NasokaID
                //Input Parametar
                SqlParam = new SqlParameter("@Nasoka_ID", SqlDbType.Int);
                SqlParam.Value = NasokaID;
                parametriKomanda.AddLast(SqlParam);

                //Parametar za @Predmet_ID  = PredmetID
                //Input Parametar
                SqlParam = new SqlParameter("@Predmet_ID", SqlDbType.Int);
                SqlParam.Value = PredmetID;
                parametriKomanda.AddLast(SqlParam);

                if (DeloviID != null)
                {
                    //Parametar za @Delovi_ID  = DeloviID
                    //Input Parametar
                    SqlParam = new SqlParameter("@Delovi_ID", SqlDbType.Int);
                    SqlParam.Value = DeloviID;
                    parametriKomanda.AddLast(SqlParam);

                }
                dsKomanda = BazaDB.GetDataSet(parametriKomanda.ToArray(), "sp_PodigniMaterijaliPoDelovi", sqlCn: null);


                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    Nasoka tekNasoka = new Nasoka();
                    tekNasoka.NasokaID = BazaDB.DataRowVoInt(dsKomanda.Tables[0].Rows[0], "NA_NasokaID");
                    tekNasoka.Ime = BazaDB.DataRowVoString(dsKomanda.Tables[0].Rows[0], "NA_NasokaIme");
                    
                    Del tekovenDel;
                    Materijal materijalObj;
                    if (DeloviID != null)
                    {
                        grupiranMaterijali = new MaterijaliGrupirani(tekNasoka, new Predmet(PredmetID), true);
                       
                    }
                    else
                    {
                        grupiranMaterijali = new MaterijaliGrupirani(tekNasoka, new Predmet(PredmetID), false);
                    }

           
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {
                        materijalObj = new Materijal();
                        
                        materijalObj.MaterijalID = BazaDB.DataRowVoInt(red, "M_MaterijalID");
                        materijalObj.Naslov = BazaDB.DataRowVoString(red, "M_Naslov");
                        materijalObj.DodadenOd = BazaDB.DataRowVoString(red, "M_DodadenOD");
                        materijalObj.DodadenNa = BazaDB.DataRowVoDateTime(red, "M_DodadenNa");
                        materijalObj.Opis = BazaDB.DataRowVoString(red, "M_Opis");
                        materijalObj.Pateka = BazaDB.DataRowVoString(red, "M_Pateka");
                        materijalObj.Slika = BazaDB.DataRowVoString(red, "M_Slika");
                        materijalObj.Aktiven = BazaDB.DataRowVoChar(red, "M_Aktiven");
                        materijalObj.Type = BazaDB.DataRowVoString(red, "M_Type");
                        materijalObj.Prevzemen = BazaDB.DataRowVoInt(red, "Prevzemen");
                        materijalObj.DobarRejting = BazaDB.DataRowVoInt(red, "DobarRejting");
                        materijalObj.LosRejting = BazaDB.DataRowVoInt(red, "LosRejting");

                        if (DeloviID != null)
                        {
                            tekovenDel = new Del(BazaDB.DataRowVoInt(red, "DEL_ID"), BazaDB.DataRowVoString(red, "DEL_Ime"), ' ');
                            tekovenDel.Vid_Izgled = BazaDB.DataRowVoInt(red, "DEL_Vid_Izgled");
                            grupiranMaterijali.DodadiMaterijalPoDel(tekovenDel, materijalObj);
                        }
                        else
                        {
                            grupiranMaterijali.DodadiSamoMaterijal(materijalObj);
                        }
                    }

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu eden materijal
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema materijali";
                }
                return rezultat;
            }
            catch (Exception ex)
            {    
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public void zemiDelZaEdit()
        {
            try
            {
                IDeloviEditView _viewDelEdit = (IDeloviEditView)_view;
                Del delObj = new Del();

                RezultatKomanda rezultat = deloviDB.getDel(_viewDelEdit.ID_Delovi_Edit_Selected, ref delObj);

                if (rezultat.Rezultat == RezultatKomandaEnum.Uspeh)
                {
                    _viewDelEdit.nacrtajFormaZaEditDelovi(delObj);
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Neuspeh)
                {
                    _viewDelEdit.ErrorPoraka = rezultat.Pricina;
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Greska)
                {
                    _viewDelEdit.ErrorPoraka = "Greska pri citanje na EDIT del";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public void nacrtajPregled1Delovi(Del delObj)
 {
     throw new NotImplementedException();
 }
        public void nacrtajFormaZaEditDelovi(Del delObj)
        {
            if (delObj != null)
            {
                this.ID_Delovi_Edit_Input = delObj.ID;
                this.Ime_Delovi_Edit_Input = delObj.Ime;
                this.Aktiven_Delovi_Edit_Input = delObj.Aktiven;
                this.ImaPredavac_Delovi_Edit_Input = delObj.ImaPredavac;
                this.VidIzgled_Delovi_Edit_Input = delObj.Vid_Izgled;

                this.textBoxIDDel_Del_Edit.Enabled = false;
            }
        }
        /// <summary>
        /// Prebaruvanje na objekt od tip del
        /// </summary>
        /// <param name="ID">Identifikator na posakuvaniot del objekt.</param>
        /// <param name="delObj">Promenliva koja po referenca kje go sodrzi objektot koj se bara.</param>
        /// <returns>Ishod od prebaruvanje.</returns>
        public RezultatKomanda getDel(int ID, ref Del delObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

                //Parametar za @ID  = ID
                //Input Parametar
                SqlParam = new SqlParameter("@ID", SqlDbType.Int);
                SqlParam.Value = ID;
                parametriKomanda.AddLast(SqlParam);

                dsKomanda = BazaDB.GetDataSet(parametriKomanda.ToArray(), "sp_PodigniDel1", sqlCn: null);
                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    DataRow red = dsKomanda.Tables[0].Rows[0];

                    delObj = new Del();
                    delObj.ID = BazaDB.DataRowVoInt(red, "ID");
                    delObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                    delObj.ImaPredavac = BazaDB.DataRowVoChar(red, "ImaPredavac");
                    delObj.Vid_Izgled = BazaDB.DataRowVoInt(red, "Vid_Izgled");
                    delObj.Aktiven = BazaDB.DataRowVoChar(red,"Aktiven");

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    rezultat.Pricina = "Ne postoi tekov del - ID";
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                return rezultat;
            }
        }
        /// <summary>
        /// Formiranje na lista od posakuvani delovi 
        /// </summary>
        /// <param name="deloviLista">lista koja po referenca kje gi sodrzi posakuvanite delovi.</param>
        /// <returns>Ishod od formiranje na lista so delovi.</returns>
        public RezultatKomanda getDelovi(ref List<Del> deloviLista)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

                dsKomanda = BazaDB.GetDataSet(parametriKomanda.ToArray(), "sp_PodigniDelovi8", sqlCn: null);

                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    deloviLista  = new List<Del>();
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {
                        Del delObj = new Del();
                        delObj.ID = BazaDB.DataRowVoInt(red, "ID");
                        delObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                        delObj.ImaPredavac = BazaDB.DataRowVoChar(red, "ImaPredavac");
                        delObj.Vid_Izgled = BazaDB.DataRowVoInt(red, "Vid_Izgled");
                        delObj.Aktiven = BazaDB.DataRowVoChar(red,"Aktiven");

                        deloviLista.Add(delObj);
                    }

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu eden del
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema delovi";
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        /// <summary>
        /// Brisenje na del od baza.
        /// </summary>
        /// <param name="delObj">Objekt od tip Del koj treba da se izbrise.</param>
        /// <returns>Ishod od brisenjeto na objektot Del.</returns>
        public RezultatKomanda deleteDel(Del delObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);

            try
            {
                if (delObj != null)
                {
                    rezultat = deleteDel(delObj.ID);
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                return rezultat;
            }
        }
 public DelMaterijali(int DelID, String DelIme, int DelVidIzgled)
 {
     this._del = new Del(DelID, DelIme, ' ', DelVidIzgled);
     this._materijali = new List<Materijal>();
 }
 public DelMaterijali(Del del, List<Materijal> materijali)
 {
     this.Del = del;
     this.Materijali = materijali;
 }
 public DelMaterijali(Del del) 
 {
     this.Del = del;
     this._materijali = new List<Materijal>();
 }
 public DeloviPredmetNasoka()
 {
     _delObj = new Del();
     _predmetObj = new Predmet();
     _nasokaObj = new Nasoka();
 }