private bool NapraviProc(TipProceduri tip)
        {
            bool uspeh = true;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandTimeout = _defSQlTimeout;
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            try
            {
               DataRow[] redDS = null;
               uspeh = ZemiProeceduri(ref redDS,tip);
               if (uspeh)
                {
                    _status.addInfo(TipServisi.DBAlatService, "Zemam telo na objektite od baza.");
                    TextWriter output = File.AppendText(Pateka);
                    foreach (DataRow red in redDS)
                    {
                        string ImeProc = "";
                        ImeProc = (Convert.ToString(red["PROCEDURE_NAME"]).Substring(0, Convert.ToString(red["PROCEDURE_NAME"]).Length - 2)).ToLower();
                        string strProc = "";
                        if (PripremiTextSqlObj(ImeProc, ref strProc, tip))
                        {
                            output.WriteLine(strProc);
                        }
                        else
                        {
                            break;
                        }

                    }
                    output.Close();
                    _status.addInfo(TipServisi.DBAlatService, "Zavrsiv so zapisuvanje objekti od TIP:" + tip.ToString().ToUpper());
                }
                UnvFunc.ZatvoriKonekcija(ref cn);
            }
            catch (Exception ex)
            {
                uspeh = false;
                _status.addGreska(TipServisi.DBAlatService, "Greska(NapraviProc):" + ex.Message);
            }        
            return uspeh;
        }
 public void NapraviSkript(TipProceduri tip)
 {
     NapraviProc(tip);
 }
 private string PripremiSlect(TipProceduri tip)
 {
     string select = "PROCEDURE_NAME LIKE ";
     string uslov="";
     switch (tip)
     {
         case TipProceduri.SP:
             {
                 uslov = select + "'sp_%'";
                 _status.addLog("SQL", "Dodadeni se SP proceduri.");
                 break;
             }
         case TipProceduri.RK:
             {
                 uslov = select + "'rk_%'";
                 _status.addLog("SQL", "Dodadeni se RK proceduri.");
                 break;
             }
         case TipProceduri.Fix:
             {
                 uslov = select + "'fix_%'";
                 _status.addLog("SQL", "Dodadeni se FIX funkcii.");
                 break;
             }
         case TipProceduri.Fn:
             {
                 uslov = select + "'fn_%'";
                 _status.addLog("SQL", "Dodadeni se FN funkcii.");
                 break;
             }
         case TipProceduri.Wtrg:
             {
                 uslov = select + "'sp_%' OR " + select + " 'fn_%' OR " + select + " 'fix_%'"  ;
                 break;
             }
         case TipProceduri.WApt:
             {
                 uslov = select + "'sp_%' OR " + select + "'rk_%' OR " + select + " 'fn_%' OR " + select + " 'fix_%'";
                 break;
             }
         case TipProceduri.Site:
             {
                 uslov = select +  "'%'";
                 _status.addLog("SQL", "Dodadeni se site objekti od sql.");
                 break;
             }
     }
   
     return uslov;
 }
        private bool PripremiTextSqlObj(string ImeProc, ref string strObjSql,TipProceduri tip)
        {
            bool uspeh = true;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandTimeout = _defSQlTimeout;
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            string Drop1, Drop2;                

            Drop1 = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#####]'))";

            if(ImeProc.StartsWith("fix_") || ImeProc.StartsWith("fn_"))
            {
                Drop2 = "drop function [dbo].[#####]";              
            }
            else
            {
                Drop2 = "drop procedure [dbo].[#####]";
            }


            if (ImeProc.StartsWith("fix_"))
            {
                Drop1 = "if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#####]'))";
                Drop2 = "begin declare @SSQL as varchar(8000) set @SSQL = '";
            }

            Drop1 = Drop1.Replace("#####", ImeProc);
            Drop2 = Drop2.Replace("#####", ImeProc);

            sb.AppendLine(Drop1);
            sb.AppendLine(Drop2);

            if (ImeProc.StartsWith("fix_"))
            {
                sb.AppendLine("\nGo");
            }

            try
            {
                if (UnvFunc.OtvoriKonekcija(ref cn) == false)
                {
                    return false;
                }       

                cmd.Connection = cn;
                cmd.CommandText = "sp_helptext";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Clear();
                cmd.Parameters.Add("@objname", ImeProc);
                da.SelectCommand = cmd;
                da.Fill(ds, "TeloProc");

            }
            catch (Exception ex)
            {
                uspeh = false;
                _status.addGreska(TipServisi.DBAlatService, "Greska(PripremiTextSqlObj):" + ex.Message);
            }

            if (uspeh)
            {

                foreach (DataRow redProc in ds.Tables["TeloProc"].Rows)
                {
                    string line = "";
                    line = Convert.ToString(redProc[0]);
                    if (!line.Trim().StartsWith("/**"))
                    {
                        if (ImeProc.StartsWith("fix_"))
                        {
                            line = line.Replace("'", "''");
                        }
                        if (line.Trim() != "")
                            sb.Append(line);
                    }
                }

                if (ImeProc.StartsWith("fix_"))
                {
                    sb.AppendLine("' exec(@SSQL)");
                    sb.AppendLine("end");
                }
                sb.AppendLine("\nGo");
                da.Dispose();
                ds.Tables["TeloProc"].Clear();

                strObjSql = sb.ToString();
            }
            return uspeh;
        }
        private bool ZemiProeceduri(ref  DataRow []red, TipProceduri tipProc)
        {
            bool uspeh = true;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandTimeout = _defSQlTimeout;
            SqlDataAdapter da = new SqlDataAdapter();
           DataSet  dsTek = new DataSet();   
                try
                {
                    if (UnvFunc.OtvoriKonekcija(ref cn) == false)
                    {
                        _status.addGreska(TipServisi.DBAlatService, "Ne mozam da vospostavam konekcija so bazata! =>" + cn.ConnectionString);
                        return false;
                    }
                    _status.addInfo(TipServisi.DBAlatService, "Zemam lista objekti od bazata - TIP:" + tipProc.ToString().ToUpper());
                    cmd.Connection = cn;
                    cmd.CommandText = "sp_stored_procedures";
                    cmd.CommandType = CommandType.StoredProcedure;

                    da.SelectCommand = cmd;
                    da.Fill(dsTek, "Proceduri");

                }
                catch (Exception ex)
                {
                    uspeh = false;
                    _status.addGreska(TipServisi.DBAlatService, "Greska(ZemiProceduri):" + ex.Message);
                }
                if (uspeh)
                {
                    red = dsTek.Tables["Proceduri"].Select(this.PripremiSlect(tipProc));
                }
                _status.addInfo(TipServisi.DBAlatService, "Vkupno "  +  red.Length.ToString() +  " objekti!");
           return  uspeh ;
        }
 private void SrediSqlOdRecept(TipProceduri tipP)
 {
     if(tipP == TipProceduri.Trigeri)
         dbA.ZemiTrigeri();
     else
         dbA.NapraviSkript(tipP);
 }
 public void addSqlObj(TipProceduri tipProc)
 {
     _proc.Add(tipProc);       
 }