public RezultatKomanda addMaterijal(string Naslov, string Opis, string DodadenOd, string Slika, string Pateka,String Type)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

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

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

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

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

                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajMaterijal", sqlCn: null);


                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda addUstanova(string Ime, string Adresa, string WebStrana, int Institucija_ID)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

                //Parametar za @WebAdresa = WebAdresa
                //Input Parametar
                SqlParam = new SqlParameter("@WebStrana", SqlDbType.NVarChar);
                SqlParam.Value = WebStrana;
                parametriKomanda.AddLast(SqlParam);

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

                //Parametar za @Aktiven  = D
                //Input Parametar
                SqlParam = new SqlParameter("@Aktiven", SqlDbType.Char);
                SqlParam.Value = 'D';
                parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajUstanova", sqlCn: null);


                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public void addPorakaPredmet()
        {
            try
            {
                FactoryRegEx regExFactory = new FactoryRegEx();
                RegExNas proverka = (RegExNas)regExFactory.Produce(ValidatorEnum.Poraka_Sodrzina, null);

                IPorakaPredmetAddView _porakaPredmetView = (IPorakaPredmetAddView)_view;

                proverka.Validiraj(_porakaPredmetView.Sodrzina_PorakaPredmet_Add_Input);
                RezultatKomanda rezultat = new RezultatKomanda(false);
                if (proverka.uspeh == true)
                {
                    rezultat = porakaDB.addPorakaPredmet(_porakaPredmetView.Predmet_ID_PorakaPredmet_Add_Input,
                                                                 _porakaPredmetView.Nasoka_ID_PorakaPredmet_Add_Input,
                                                                 _porakaPredmetView.UserID_PorakaPredmet_Add_Inpit,
                                                                 _porakaPredmetView.Sodrzina_PorakaPredmet_Add_Input,null);
                }
                else
                {
                    rezultat = porakaDB.addPorakaPredmet(_porakaPredmetView.Predmet_ID_PorakaPredmet_Add_Input,
                                                                _porakaPredmetView.Nasoka_ID_PorakaPredmet_Add_Input,
                                                                _porakaPredmetView.UserID_PorakaPredmet_Add_Inpit,
                                                                _porakaPredmetView.Sodrzina_PorakaPredmet_Add_Input,
                                                                'N');
                }
                if (rezultat.Rezultat == RezultatKomandaEnum.Uspeh)
                {
                    _porakaPredmetView.InfoPoraka = "Porakata e dodadena za predmetot ";
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Neuspeh)
                {
                    _porakaPredmetView.ErrorPoraka = rezultat.Pricina;
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Greska)
                {
                    _porakaPredmetView.ErrorPoraka = "Greska pri kreiranje poraka za predmet";
                }

                else
                {
                    _porakaPredmetView.ErrorPoraka = proverka.poraka;
                }



            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
 public RezultatKomanda addMaterijal(Materijal materijalObj)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     try
     {
         if (materijalObj != null)
         {
             rezultat = addMaterijal(materijalObj.Naslov, materijalObj.Opis, materijalObj.DodadenOd, materijalObj.Slika, materijalObj.Pateka,materijalObj.Type);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
 /// <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 RezultatKomanda addUstanova(Ustanova ustanovaObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                if (ustanovaObj != null)
                {
                    rezultat = addUstanova(ustanovaObj.Ime, ustanovaObj.Adresa, ustanovaObj.WebStrana, ustanovaObj.Institucija_ID);
                }

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        /// <summary>
        /// Dodavanje na del vo baza.
        /// </summary>
        /// <param name="Ime">Ime na del</param>
        /// <param name="ImaPredavac">Dali delot ima predavac</param>
        /// <param name="Vid_Izgled">Izgled na delot</param>
        /// <returns>Ishod od dodavanje na del.</returns>
        public RezultatKomanda addDel(string Ime, char ImaPredavac, int Vid_Izgled)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

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

                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajDel", sqlCn: null);


                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda updateMaterijal(int MaterijalID, string Naslov, string Opis, string DodadenOd, string Slika, string Pateka,string Type)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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


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

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

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

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

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

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

                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);

                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_IzmeniMaterijal", sqlCn: null);


                string pricina = parametriKomanda.Last.Value.Value.ToString();

                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                if (pricina.ToUpper() == "NEPOSTOI")
                {
                    //Ne postoi toj materijal
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Ne postoi toj materijal";

                }

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda getDeloviZaPredmetPoNasoka(int? Nasoka_ID, int? Predmet_ID, ref List<DeloviPredmetNasoka> delPredmetNasokaList)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);

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

                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    delPredmetNasokaList = new List<DeloviPredmetNasoka>();
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {

                        DeloviPredmetNasoka dpnObj = new DeloviPredmetNasoka();
                        dpnObj.Del_ID = BazaDB.DataRowVoInt(red, "Del_ID");
                        dpnObj.Del_Ime = BazaDB.DataRowVoString(red, "Del_Ime");
                        dpnObj.Predmet_ID = BazaDB.DataRowVoInt(red, "Predmet_ID");
                        dpnObj.Predmet_Ime = BazaDB.DataRowVoString(red, "Predmet_Ime");
                        dpnObj.Nasoka_ID = BazaDB.DataRowVoInt(red, "Nasoka_ID");
                        dpnObj.Nasoka_Ime = BazaDB.DataRowVoString(red, "Nasoka_Ime");
                        dpnObj.Stuff_ID = BazaDB.DataRowVoInt(red, "Stuff_ID");
                        dpnObj.Aktiven = BazaDB.DataRowVoChar(red, "Aktiven");

                        delPredmetNasokaList.Add(dpnObj);
                    }

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu edna nasoka
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema Delovi  za odbpran Predmet po  Nasoka";
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda addDownloadCount(int MaterijalID, int NasokaID, int PredmetID, int DelID)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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


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

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


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZgolemiDownloadMaterjalPredmet", sqlCn: null);

                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
 public RezultatKomanda addMaterijalPredmet(Materijal matObj, int NasokaID, int PredmetID, int DelID)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     try
     {
         if (matObj != null)
         {
             rezultat = addMaterijalPredmet(matObj.MaterijalID, NasokaID, PredmetID, DelID);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
        public RezultatKomanda deleteMaterijal(Materijal materijalObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);

            try
            {
                if (materijalObj != null)
                {
                    rezultat = deleteMaterijal(materijalObj.MaterijalID);
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                return rezultat;
            }
        }
        /// <summary>
        /// Dodavanje na nova nasoka vo baza.
        /// </summary>
        /// <param name="Ime">Ime na nasoka.</param>
        /// <param name="Opis">Opis na nasoka.</param>
        /// <param name="Oblast_ID">Oblast ID na koja pripagja nasokata.</param>
        /// <returns>Ishod od dodavanje na nasokata.</returns>
        public RezultatKomanda addNasoka(string Ime, string Opis, int Oblast_ID)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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


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

                //Parametar za @Aktiven  = D
                //Input Parametar
                SqlParam = new SqlParameter("@Aktiven", SqlDbType.Char);
                SqlParam.Value = 'D';
                parametriKomanda.AddLast(SqlParam);



                //Parametar za @StatusOUT   
                //Output Parametar
                //SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                //SqlParam.Direction = ParameterDirection.Output;
                //SqlParam.Value = "OUTPUT";
                //SqlParam.Size = 50;
                //parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajNasoka", sqlCn: null);

                //string pricina = parametriKomanda.Last.Value.Value.ToString();


                //if (pricina.ToUpper() == "POSTOI")
                //{
                //    //Korisnikot veke postoi
                //    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                //    rezultat.Pricina = "Veke postoi takov korisnik";

                //}
                //else
                //{
                //    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                //}
                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
 /// <summary>
 /// Ureduvanje na nasoka
 /// </summary>
 /// <param name="nasokaObj">Objekt koj kje bide ureden.</param>
 /// <returns>Ishod od ureduvanjeto na nasoka.</returns>
 public RezultatKomanda updateNasoka(Nasoka nasokaObj)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     dsKomanda = null;
     try
     {
         if (nasokaObj != null)
         {
             rezultat = updateNasoka(nasokaObj.NasokaID, nasokaObj.Oblast_ID, nasokaObj.Ime, nasokaObj.Opis);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
        /// <summary>
        /// Ureduvanje na Nasoka vo baza.
        /// </summary>
        /// <param name="ID">ID na nasoka koja kje se ureduva.</param>
        /// <param name="Oblast_ID">Oblast na koja pripagja nasokata.</param>
        /// <param name="Ime">Ime na nasoka.</param>
        /// <param name="Opis">Opis na nasoka.</param>
        /// <returns>Ishod od ureduvanje na nasoka.</returns>
        public RezultatKomanda updateNasoka(int ID, int Oblast_ID, string Ime, string Opis)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            
            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);

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

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


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

                //Parametar za @Aktiven  = D
                //Input Parametar
                SqlParam = new SqlParameter("@Aktiven", SqlDbType.Char);
                SqlParam.Value = 'D';
                parametriKomanda.AddLast(SqlParam);



                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_IzmeniNasoka", sqlCn: null);

                string pricina = parametriKomanda.Last.Value.Value.ToString();

                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                if (pricina.ToUpper() == "NEPOSTOI")
                {
                    //Ne postoi taa nasoka
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Ne postoi taa nasoka.";

                }

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        /// <summary>
        /// Formiranje na lista na korisnici
        /// </summary>
        /// <param name="korisniciLista">Lista od korisnici koja se menuva po referenca.</param>
        /// <returns>Ishod od kreiranje na lista.</returns>
        public RezultatKomanda getKorisnici(ref List<Korisnik> korisniciLista) {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    korisniciLista = new List<Korisnik>();
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {
                        korisnikNov = new Korisnik();
                        korisnikNov.UserID = BazaDB.DataRowVoString(red, "UserID");
                        korisnikNov.Lozinka = BazaDB.DataRowVoString(red, "Lozinka");
                        korisnikNov.Email = BazaDB.DataRowVoString(red, "Email");
                        korisnikNov.Ime = BazaDB.DataRowVoString(red, "Ime");
                        korisnikNov.Prezime = BazaDB.DataRowVoString(red, "Prezime");
                        korisnikNov.DodadenNa = BazaDB.DataRowVoDateTime(red, "DodadenNa");
                        korisnikNov.IzmenetNa = BazaDB.DataRowVoDateTime(red, "IzmenetNa");
                        korisnikNov.IzmenetOd = BazaDB.DataRowVoString(red, "IzmenetOd");
                        korisnikNov.KorTip_ID = BazaDB.DataRowVoString(red, "KorTip_ID");

                        korisniciLista.Add(korisnikNov);
                    }
                  
                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu eden korisnik
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema korisnici";
                }
                return rezultat;
            }
            catch (KonekcijaEX greskaSqlKonekcija)
            {
                throw greskaSqlKonekcija;
            }
            catch (NemaKolonaEX nemaKolonaEx)
            {
                throw nemaKolonaEx;
            }
            catch (Exception greskaKomanda)
            {
                throw new KomandaKorisiniciEX("Greska pri prikazuvanje na korisnicite!", "Greska pri izvrsuvanje na getKorisnici(ref List<Korisnik> korisniciLista) ", greskaKomanda.Message, 0);
            }

        }
        /// <summary>
        /// Proverka na aktivnost na korisnik
        /// </summary>
        /// <param name="id">ID na korisnik.</param>
        /// <param name="pass">Password na korisnik.</param>
        /// <param name="korisnikObj">Izmena na korisnik po referenca.</param>
        /// <returns>Ishod od proverkata na kroisnikot.</returns>
        public RezultatKomanda  getKorisnik(String id, String pass, ref Korisnik korisnikObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

                //Parametar za @UserId  = id
                //Input Parametar
                SqlParam = new SqlParameter("@UserID", SqlDbType.VarChar);
                SqlParam.Value = id;
                parametriKomanda.AddLast(SqlParam);

                //Parametar za @Lozinka  = pass
                //Input Parametar
                SqlParam = new SqlParameter("@Lozinka", SqlDbType.VarChar);
                SqlParam.Value = pass;
                parametriKomanda.AddLast(SqlParam);

                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);
                
                
                dsKomanda = BazaDB.GetDataSet(parametriKomanda.ToArray(), "sp_PodigniKorisnikLogin", sqlCn: null);
                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    DataRow red = dsKomanda.Tables[0].Rows[0];
                    korisnikObj = new Korisnik();
                    korisnikObj.UserID = BazaDB.DataRowVoString(red, "UserID");
                    korisnikObj.Lozinka = BazaDB.DataRowVoString(red, "Lozinka");
                    korisnikObj.Email = BazaDB.DataRowVoString(red, "Email");
                    korisnikObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                    korisnikObj.Prezime = BazaDB.DataRowVoString(red, "Prezime");
                    korisnikObj.DodadenNa = BazaDB.DataRowVoDateTime(red, "DodadenNa");
                    korisnikObj.IzmenetNa = BazaDB.DataRowVoDateTime(red, "IzmenetNa");
                    korisnikObj.IzmenetOd = BazaDB.DataRowVoString(red, "IzmenetOd");
                    korisnikObj.KorTip_ID = BazaDB.DataRowVoString(red, "KorTip_ID");
                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh ;
                }
                else
                {
                    string pricina = parametriKomanda.Last.Value.Value.ToString();
                    if (pricina.ToUpper() == "NEAKTIVEN")
                    {
                        //Korisnikot ne e aktiven
                        rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                        rezultat.Pricina = "Korisnikot ne e aktiven";

                    }
                    else if (pricina.ToUpper() == "GRESEN")
                    {
                        //Pogreseni podatoci 
                        rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                        rezultat.Pricina = "Pogresno korisnicko ime ili lozinka";
                    }
                }
                return rezultat;
            }
            catch (KonekcijaEX greskaSqlKonekcija)
            {
                throw greskaSqlKonekcija;
            }
            catch (NemaKolonaEX nemaKolonaEx)
            {
                throw nemaKolonaEx;
            }
            catch (Exception greskaKomanda)
            {
                throw new KomandaKorisiniciEX("Sistemot momentalno ima problemi", "Greska pri izvrzuvanje na getKorisnik ", greskaKomanda.Message, 0);
            }

        }
        public RezultatKomanda deleteMaterijal(int ID)
        {
            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);


                ////Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_MaterijalDel", sqlCn: null);
                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                string pricina = parametriKomanda.Last.Value.Value.ToString();
                if (pricina.ToUpper() == "NEPOSTOI")
                {
                    //Nema takov materijal
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Ne postoi toj materijal";

                }

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                return rezultat;
            }
        }
  /// <summary>
  /// Brisenje na nasoka od baza.
  /// </summary>
  /// <param name="nasokaObj">Nasoka koja treba da bide izbrisana.</param>
  /// <returns>Ishod od brisenje na nasoka.</returns>
  public RezultatKomanda deleteNasoka(Nasoka nasokaObj)
  {
      RezultatKomanda rezultat = new RezultatKomanda(false);
 
      try
      {
          if (nasokaObj != null)
          {
              rezultat = deleteNasoka(nasokaObj.NasokaID);
          }
          return rezultat;
      }
      catch (Exception ex)
      {
          rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
          rezultat.Pricina = ex.Message;
          return rezultat;
      }
  }
        public RezultatKomanda getMaterijali(string DodadenOd, ref List<Materijal> marerijaliLista)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();


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

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


                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    marerijaliLista = new List<Materijal>();
                    Materijal materijalObj;
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {
                        materijalObj = new Materijal();
                        materijalObj.MaterijalID = BazaDB.DataRowVoInt(red, "MaterijalID");
                        materijalObj.Naslov = BazaDB.DataRowVoString(red, "Naslov");
                        materijalObj.DodadenOd = BazaDB.DataRowVoString(red, "DodadenOd");
                        materijalObj.DodadenNa = BazaDB.DataRowVoDateTime(red, "DodadenNa");
                        materijalObj.Opis = BazaDB.DataRowVoString(red, "Opis");
                        materijalObj.Pateka = BazaDB.DataRowVoString(red, "Pateka");
                        materijalObj.Slika = BazaDB.DataRowVoString(red, "Slika");
                        materijalObj.Aktiven = BazaDB.DataRowVoChar(red, "Aktiven");
                        materijalObj.Type = BazaDB.DataRowVoString(red, "Type");

                        marerijaliLista.Add(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 RezultatKomanda getMaterijal(int ID, ref Materijal materijalObj)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

                    materijalObj = new Materijal();
                    materijalObj.MaterijalID = BazaDB.DataRowVoInt(red, "MaterijalID");
                    materijalObj.Naslov = BazaDB.DataRowVoString(red, "Naslov");
                    materijalObj.DodadenOd = BazaDB.DataRowVoString(red, "DodadenOd");
                    materijalObj.DodadenNa  = BazaDB.DataRowVoDateTime(red, "DodadenNa");
                    materijalObj.Opis  = BazaDB.DataRowVoString(red, "Opis");
                    materijalObj.Pateka = BazaDB.DataRowVoString(red, "Pateka");
                    materijalObj.Slika = BazaDB.DataRowVoString(red, "Slika");
                    materijalObj.Aktiven = BazaDB.DataRowVoChar(red, "Aktiven");
                    materijalObj.Type = BazaDB.DataRowVoString(red, "Type");

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    rezultat.Pricina = "Ne postoi tekov materijal - ID";
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                return rezultat;
            }
        }
        /// <summary>
        /// Prebaruvanje na nasoka spored ID
        /// </summary>
        /// <param name="ID">ID na nasoka koja se prebaruva.</param>
        /// <param name="nasokaObj">NasokaObj objekt koj se menuva po referenca.</param>
        /// <returns></returns>
        public RezultatKomanda getNasoka(int ID, ref Nasoka nasokaObj)
        {
            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_PodigniNasoka1", sqlCn: null);
                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    DataRow red = dsKomanda.Tables[0].Rows[0];

                    nasokaObj = new Nasoka();
                    nasokaObj.NasokaID = BazaDB.DataRowVoInt(red, "ID");
                    nasokaObj.Oblast_ID = BazaDB.DataRowVoInt(red, "Oblast_ID");
                    nasokaObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                    nasokaObj.Opis = BazaDB.DataRowVoString(red, "Opis");
                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    rezultat.Pricina = "Ne postoi takva nasoka - ID";
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Pricina = ex.Message;
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                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 RezultatKomanda getNasokiPoOblast(int Oblast_ID, ref List<Nasoka> nasokiLista)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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

                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    nasokiLista = new List<Nasoka>();
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {

                        Nasoka nasokaObj = new Nasoka();
                        nasokaObj.NasokaID = BazaDB.DataRowVoInt(red, "ID");
                        nasokaObj.Oblast_ID = BazaDB.DataRowVoInt(red, "Oblast_ID");
                        nasokaObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                        nasokaObj.Opis = BazaDB.DataRowVoString(red, "Opis");


                        nasokiLista.Add(nasokaObj);
                    }

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu edna nasoka
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema Nasoki";
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
 public RezultatKomanda deleteMaterijalOdPredmet(Materijal matObj, PredmetNasoka predmetNasokaObj, int DelID)
 {
     RezultatKomanda rezultat = new RezultatKomanda(false);
     try
     {
         if (predmetNasokaObj != null && predmetNasokaObj != null)
         {
             rezultat = deleteMaterijalOdPredmet(matObj.MaterijalID, predmetNasokaObj.NasokaID, predmetNasokaObj.PredmetID, DelID);
         }
         return rezultat;
     }
     catch (Exception ex)
     {
         rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
         rezultat.Pricina = ex.Message;
         return rezultat;
     }
 }
        //Da se vidi kaj da se stavat
        //------------------------------
        public RezultatKomanda addPredmetPoNasoka(int Nasoka_ID, int Predmet_ID, string Ime, string Kod, int Krediti)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();


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

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

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

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

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

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

                //Parametar za @Aktiven  = D
                //Input Parametar
                SqlParam = new SqlParameter("@Aktiven", SqlDbType.Char);
                SqlParam.Value = 'D';
                parametriKomanda.AddLast(SqlParam);



                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajNasokaPredmet", sqlCn: null);

                string pricina = parametriKomanda.Last.Value.Value.ToString();


                if (pricina.ToUpper() == "POSTOI")
                {
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Veke postoi za taa nasoka takov predmet";

                }
                else
                {
                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda addRejting(int MaterijalID, int NasokaID, int PredmetID, int DelID, RejtingTip tipRejting)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();

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

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


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

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

                //Parametar za @Tip = Tip
                //Input Parametar
                SqlParam = new SqlParameter("@Tip", SqlDbType.Char);
                    if(tipRejting == RejtingTip.Negativen)
                    {
                        SqlParam.Value = "L";

                    }
                    else if (tipRejting == RejtingTip.Pozitiven)
                    {
                        SqlParam.Value = "D";
                    }
                parametriKomanda.AddLast(SqlParam);

                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajRejtingMaterjalPredmet", sqlCn: null);

                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public RezultatKomanda getPredmetiPoNasoka(int Nasoka_ID, ref List<PredmetNasoka> predmetiPoNasokaLista)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();


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

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

                if (dsKomanda.Tables.Count > 0 && dsKomanda.Tables[0].Rows.Count > 0)
                {
                    predmetiPoNasokaLista = new List<PredmetNasoka>();
                    foreach (DataRow red in dsKomanda.Tables[0].Rows)
                    {

                        PredmetNasoka pnObj = new PredmetNasoka();
                        pnObj.NasokaID = BazaDB.DataRowVoInt(red, "NasokiID");
                        pnObj.NasokaIme = BazaDB.DataRowVoString(red, "NasokiIme");
                        pnObj.PredmetID = BazaDB.DataRowVoInt(red, "PredmetiID");
                        pnObj.PredmetIme = BazaDB.DataRowVoString(red, "PredmetiIme");
                        pnObj.Ime = BazaDB.DataRowVoString(red, "Ime");
                        pnObj.Kod = BazaDB.DataRowVoString(red, "Kod");
                        pnObj.Krediti = BazaDB.DataRowVoInt(red, "Krediti");
                        predmetiPoNasokaLista.Add(pnObj);
                    }

                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                else
                {
                    //Nema nitu edna nasoka
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Nema Predmeti za Nasoka";
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }
        public void loginKorisnik()
        {
            IKorisnikLoginView _viewKor = ((IKorisnikLoginView)_view);

            korObj = new Korisnik();
            try
            {
                FactoryRegEx regExFactory = new FactoryRegEx();
                RegExNas proverka = (RegExNas)regExFactory.Produce(ValidatorEnum.Korisnik_UserID, null);


                //proverka.Validiraj(_viewKor.UserID_Login_Input);

                //if (proverka.uspeh == true)
                //{

                //}
                
                //RezultatKomanda rezultat = korDb.getKorisnik(_viewKor.UserID_Login_Input, _viewKor.Lozinka_Login_Input, ref korObj);
                RezultatKomanda rezultat = new RezultatKomanda(true);
                Korisnik pom = new Korisnik();
                pom.UserID = "Marko";
                rezultat.Rezultat = RezultatKomandaEnum.Uspeh;

                if (rezultat.Rezultat == RezultatKomandaEnum.Uspeh)
                {
                    //_viewKor.PorakaLogin = "******";
                    _viewKor.InfoPoraka = "Logirani ste";
                    _viewKor.logirajKorisnik(korObj);
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Neuspeh)
                {
                    //_viewKor.PorakaLogin = rezultat.Pricina;
                    _viewKor.ErrorPoraka = rezultat.Pricina;
                }
                else if (rezultat.Rezultat == RezultatKomandaEnum.Greska)
                {
                    //_viewKor.PorakaLogin = "******";
                   _viewKor.ErrorPoraka = "Greska";
                }

            }
            catch (GlavenException ex)
            {

                if (ex is KonekcijaEX)
                {
                    throw new Exception("KONEKCIJA NESTO ");
                }
            }
        }
        public RezultatKomanda addDeloviZaPredmetPoNasoka(int Nasoka_ID, int Predmet_ID, int Delovi_ID, int Stuff_ID)
        {
            RezultatKomanda rezultat = new RezultatKomanda(false);
            dsKomanda = null;
            try
            {
                parametriKomanda = new LinkedList<SqlParameter>();

                parametriKomanda.Clear();


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

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

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

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


                //Parametar za @Aktiven  = D
                //Input Parametar
                SqlParam = new SqlParameter("@Aktiven", SqlDbType.Char);
                SqlParam.Value = 'D';
                parametriKomanda.AddLast(SqlParam);



                //Parametar za @StatusOUT   
                //Output Parametar
                SqlParam = new SqlParameter("@StatusOUT", SqlDbType.NVarChar);
                SqlParam.Direction = ParameterDirection.Output;
                SqlParam.Value = "OUTPUT";
                SqlParam.Size = 50;
                parametriKomanda.AddLast(SqlParam);


                BazaDB.ExecuteScalar(parametriKomanda.ToArray(), "sp_ZacuvajDeloviNasoka", sqlCn: null);

                string pricina = parametriKomanda.Last.Value.Value.ToString();


                if (pricina.ToUpper() == "POSTOI")
                {
                    rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                    rezultat.Pricina = "Veke postoi za taa nasoka-predmet takov del";

                }
                else
                {
                    rezultat.Rezultat = RezultatKomandaEnum.Uspeh;
                }
                return rezultat;
            }
            catch (Exception ex)
            {
                rezultat.Rezultat = RezultatKomandaEnum.Neuspeh;
                rezultat.Pricina = ex.Message;
                return rezultat;
            }
        }