예제 #1
0
        public string SetProperties(string json_params)
        {
            Dersa.Common.CachedObjects.ClearCache();
            IParameterCollection Params = Util.DeserializeParams(json_params);
            string key = "-1";
            //string procName = "";
            AttributeOwnerType ownerType = AttributeOwnerType.Entity;

            if (Params.Contains("entity"))
            {
                key = Params["entity"].Value.ToString();
                //procName = "ENTITY$SetAttribute";
                ownerType = AttributeOwnerType.Entity;
                Params.Remove("entity");
                if (Params.Count < 1)
                {
                    return("no data");
                }
            }
            if (Params.Contains("relation"))
            {
                key = Params["relation"].Value.ToString();
                //procName = "RELATION$SetAttribute";
                ownerType = AttributeOwnerType.Relation;
                Params.Remove("relation");
                if (Params.Count < 1)
                {
                    return("no data");
                }
            }
            DersaSqlManager DM = new DersaSqlManager();

            foreach (IParameter Param in Params)
            {
                try
                {
                    if (Param.Value != null)
                    {
                        string strVal = Param.Value.ToString().Replace("$lt$", "<").Replace("$gt$", ">");
                        Param.Value = strVal;
                    }
                    SetAttribute(DM, ownerType, key, Param.Name, Param.Value?.ToString(), 0);
                }
                catch
                {
                    throw;
                }
            }
            return("");
        }
        public string CreateTextFile(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("file_name") && Params.Contains("file_body"))
            {
                string       userName = HttpContext.Current.User.Identity.Name;
                string       path     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "user_resources", userName, Params["file_name"].Value.ToString());
                StreamWriter SW       = File.CreateText(path);
                SW.Write((string)Params["file_body"].Value);
                SW.Flush();
                SW.Close();
                return("OK");
            }
            return("no parameters");
        }
예제 #3
0
        public string OpenHtml(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("html"))
            {
                string Id     = PutString(Params["html"].Value.ToString());
                var    result = new { action = "window.open('Query/GetHtml?Id=" + Id + "','user html', 'width=400,height=400,status=1,menubar=1');" };
                return(JsonConvert.SerializeObject(result));
            }
            if (Params.Contains("URL"))
            {
                var result = new { action = "window.open('" + Params["URL"].Value.ToString() + "');" };
                return(JsonConvert.SerializeObject(result));
            }
            return(null);
        }
예제 #4
0
        public ActionResult GetViewById(string cshtmlId)
        {
            IParameterCollection Params = (new QueryControllerAdapter()).GetViewParams(cshtmlId);

            if (Params.Contains("view_name"))
            {
                string view_name = Params["view_name"].Value.ToString();
                return(GetViewByName(view_name, Params));
            }
            return(null);
        }
예제 #5
0
        public ActionResult Report(string proc_name, string parameters)
        {
            DersaSqlManager      M      = new DersaSqlManager();
            IParameterCollection Params = Util.DeserializeParams(parameters);

            if (Params.Contains("proc_name") || !string.IsNullOrEmpty(proc_name))
            {
                if (Params.Contains("proc_name"))
                {
                    proc_name = Params["proc_name"].Value.ToString();
                    Params.Remove("proc_name");
                }
                System.Data.DataTable T = M.ExecuteSPWithParams(proc_name, Params);
                return(View(T));
            }
            else
            {
                throw new System.Exception("procedure for report is not defined!");
            }
        }
예제 #6
0
        public ActionResult GetView(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (!Params.Contains("cshtml"))
            {
                return(null);
            }
            string view_name = (new QueryControllerAdapter()).GetViewName(Params["cshtml"].Value.ToString());

            return(GetViewByName(view_name, Params));
        }
예제 #7
0
        public string GetText(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("entity") && Params.Contains("attr_name") && Params.Contains("method_name"))
            {
                try
                {
                    string entityId   = Params["entity"].Value.ToString();
                    string methodName = Params["method_name"].Value.ToString();
                    string res        = (new NodeControllerAdapter()).ExecMethodResult(int.Parse(entityId), methodName).ToString();
                    var    result     = new
                    {
                        entityId  = entityId,
                        attrName  = Params["attr_name"].Value,
                        attrValue = res
                    };
                    return(JsonConvert.SerializeObject(result));
                }
                catch (Exception exc)
                {
                    return(exc.Message);
                }
            }
            else if (Params.Contains("entity") && Params.Contains("attr_name"))
            {
                string userName  = HttpContext.Current.User.Identity.Name;
                string entityId  = Params["entity"].Value.ToString();
                string attrName  = Params["attr_name"].Value.ToString();
                string attrValue = (new QueryExecuteService()).GetAttrValue(attrName, entityId, userName);
                var    result    = new
                {
                    entityId  = entityId,
                    attrName  = attrName,
                    attrValue = attrValue
                };
                return(JsonConvert.SerializeObject(result));
            }
            return("");
        }
예제 #8
0
        public IParameterCollection GetViewParams(string cshtmlId)
        {
            string json_params          = GetString(cshtmlId, false);
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("cshtml"))
            {
                string view_name = GetViewName(Params["cshtml"].Value.ToString());
                Params.Remove("cshtml");
                Params.Add("view_name", view_name);
            }
            return(Params);
        }
예제 #9
0
        public string GetActionForParams(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("method_name") && Params.Contains("objectid"))
            {
                object[] extParams = new object[] { json_params };
                try
                {
                    string result = GetAction(Params["method_name"].Value.ToString(), int.Parse(Params["objectid"].Value.ToString()), JsonConvert.SerializeObject(extParams));
                    if (Params.Contains("result_is_already_formatted"))
                    {
                        return(result);
                    }
                    var actionObject = new { action = result };
                    return(JsonConvert.SerializeObject(actionObject));
                }
                catch (Exception exc)
                {
                    Logger.LogStatic(exc.Message);
                }
            }
            return(null);
        }
예제 #10
0
 public string ObjectUpdateOrInsert(string class_name, string json_params)
 {
     try
     {
         DersaUserSqlManager  M      = new DersaUserSqlManager();
         IParameterCollection Params = Util.DeserializeParams(json_params);
         bool   doInsert             = Params[class_name.ToLower()].Value.ToString() == "";
         string keyName = class_name.ToLower();
         if (!Params.Contains(keyName))
         {
             return("no key");
         }
         System.Data.DataTable T = M.ExecuteSPWithParams("OBJ$Info", new object[] { class_name, Params[class_name.ToLower()].Value });
         if (T.Rows.Count < 1)
         {
             if (!doInsert)
             {
                 return("no object");
             }
             System.Data.DataRow newR = T.NewRow();
             T.Rows.Add(newR);
         }
         ArrayList changedFields = new ArrayList();
         foreach (IParameter Param in Params)
         {
             if (!doInsert || Param.Name != keyName)
             {
                 T.Rows[0][Param.Name] = Param.Value;
                 changedFields.Add(Param.Name);
             }
         }
         string dbName = M.DatabaseName;
         if (!dbName.Contains("["))
         {
             dbName = "[" + dbName + "]";
         }
         //if(doInsert)
         //    M.InsertTable(dbName, class_name, class_name.ToLower(), T, changedFields);
         //else
         //    M.UpdateTable(dbName, class_name, class_name.ToLower(), T, changedFields);
         return("");
     }
     catch (System.Exception exc)
     {
         return(exc.Message);
     }
 }
예제 #11
0
        public void DownloadReport(int id, string parameters)
        {
            DersaSqlManager      M      = new DersaAnonimousSqlManager();
            IParameterCollection Params = Util.DeserializeParams(parameters);

            if (Params.Contains("proc_name"))
            {
                StreamWriter SW        = null;
                string       proc_name = Params["proc_name"].Value.ToString();
                Params.Remove("proc_name");
                try
                {
                    Response.ContentType = "application/force-download; charset =windows-1251";
                    string Header = "Filename=" + "report_" + id.ToString() + ".csv";  //Attachment;
                    Response.AppendHeader("Content-Disposition", Header);

                    //MemoryStream S = new MemoryStream();
                    //SW = new StreamWriter(S);
                    SW = new StreamWriter(Response.OutputStream, System.Text.Encoding.Default);
                    M.ExecSqlToStream(proc_name, SW, Params);
                    SW.Close();
                    //string result = System.Text.Encoding.UTF8.GetString(S.ToArray());
                    //byte[] btres = System.Text.Encoding.Default.GetBytes(result);
                    //Response.AppendHeader("Content-Length", btres.Length.ToString());
                    //Response.OutputStream.Write(btres, 0, btres.Length);
                    Response.End();
                }
                catch (Exception exc)
                {
                    Response.OutputStream.Flush();
                    Response.OutputStream.Close();
                    Response.ContentType = "TEXT/HTML";
                    Response.ClearHeaders();
                    Response.Write(exc.Message);
                }
            }
            else
            {
                throw new System.Exception("procedure for report is not defined!");
            }
        }
예제 #12
0
        public string ExecSql(string json_params)
        {
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (!Params.Contains("SQL"))
            {
                return(json_params);
            }
            else
            {
                DersaSqlManager      M          = new DersaSqlManager();
                string               sql        = Params["SQL"].Value.ToString().Replace("$gt$", ">").Replace("$lt$", "<");
                IParameterCollection UserParams = new ParameterCollection();
                string               userName   = HttpContext.Current.User.Identity.Name;
                UserParams.Add("@login", userName);
                UserParams.Add("@password", Util.GetPassword(userName));
                int userPermissions = M.ExecuteSPWithResult("DERSA_USER$GetPermissions", false, UserParams);
                int canExecSql      = userPermissions & 1;
                if (canExecSql == 0)
                {
                    return("You have no permissions to exec SQL in database.");
                }
                UserParams.Add("@user_setting_name", "Выполнять SQL локально");
                int execSqlLocal    = M.ExecuteSPWithResult("DERSA_USER$GetBoolUserSetting", false, UserParams);
                int canExecLocalSql = userPermissions & 2;
                if (execSqlLocal > 0)
                {
                    if (canExecLocalSql == 0)
                    {
                        return("You have no permissions to exec SQL locally.");
                    }
                    else
                    {
                        string queryId = GetQueryId(sql);
                        (UserParams["@user_setting_name"] as IParameter).Value = "Функция вызова локального клиента SQL";
                        System.Data.DataTable VT = M.ExecuteSPWithParams("DERSA_USER$GetTextUserSetting", UserParams);
                        if (VT == null || VT.Rows.Count < 1)
                        {
                            throw new Exception("Функция вызова локального клиента SQL не определена");
                        }
                        string functionBody = VT.Rows[0][0].ToString();
                        var    result       = new { action = functionBody, arg_name = "queryId", arg = queryId };
                        return(JsonConvert.SerializeObject(result));
                    }
                }

                try
                {
                    string result = "Unknown error";
                    if (Params.Contains("Server") && Params["Server"].Value != null)
                    {
                        string     connectionString = string.Format("Server={0};Database={1};user={2};password={3}", Params["Server"].Value, Params["Database"].Value, Params["Login"].Value, Params["Password"].Value);
                        SqlManager ExecM            = new SqlManager(connectionString);
                        result = ExecM.ExecMultiPartSql(sql);
                    }
                    else
                    {
                        DersaUserSqlManager UM = new DersaUserSqlManager();
                        result = UM.ExecMultiPartSql(sql);
                    }
                    if (result != "")
                    {
                        return(result);
                    }
                    return("Запрос успешно выполнен:\n\n" + sql);
                }
                catch (Exception exc)
                {
                    return(exc.Message);
                }
            }
        }