public DataTable KendoPost([FromBody]JsonRequestKendoDatasource value) {
            JsonRequestDb oJson=new JsonRequestDb();
            oJson.pars = new Dictionary<string, string>();

            // hozzáadom az oJson-hoz a pars objektumot
            if (value.pars != null && value.pars.Count != 0) {
                foreach (KeyValuePair<string,string> par in value.pars) {
                    oJson.pars.Add(par.Key, par.Value);
                }
            }
            // hozzáadom az oJson-hoz az extraPars objektumot (ez a máshova nem tartozó paraméterek listája)
            if (value.extraPars != null && value.extraPars.Count !=0) {
                foreach (KeyValuePair<string, string> par in value.extraPars) {
                    if (oJson.pars.ContainsKey(par.Key)) {
                        throw new ApplicationException($"A paraméter ({par.Key}) a par objektumban és a szülő objektumban is létezik.");
                    }
                    oJson.pars.Add(par.Key, par.Value);
                }
            }

            addTokenToPars(oJson);
            using (_sql = new Sql(getConnectionString(value.db), BaseApiController.logInfoFactory())) {
                Dictionary<string, string> pars = oJson.pars;
                try {
                    if (value.log == null || !value.log.enabled) _sql.logger.DisabledOnce();
                    using (DataTable dt = _sql.spExecuters[value.action](ref pars)) {
                        if (dt !=null && dt.Rows.Count > 0) return dt;
                        // az update, create esetén vissza kell adni a megkapott értékeket
                        if (dt != null) {
                            var row = dt.NewRow();
                            foreach (DataColumn col in dt.Columns) {
                                if (oJson.pars.ContainsKey(col.ColumnName)) row[col.ColumnName] = oJson.pars[col.ColumnName];
                            }
                            dt.Rows.Add(row);
                        }
                        return dt;
                    }
                } catch (SqlException ex) {
                    if (ex.State == (byte) Sql.stateNumber.NoPrivilege) {
                        var errorResponse = Request.CreateErrorResponse(System.Net.HttpStatusCode.Unauthorized, "Ehhez a művelethez nincs jogosultságod. Jelentkezz be és próbáld újra");
                        throw new HttpResponseException(errorResponse);
                    }
                    throw;
                }
            }
        }
 public DataTable Post([FromBody]object value)
 {
     JsonRequestDb oJson;
     try
     {
         oJson = JsonConvert.DeserializeObject<JsonRequestDb>(value.ToString());
     }
     catch (Exception)
     {
         throw new Exception("Nem sikerült értelmezni a JSON adatot. A helyes formátum pl: {db:'Comforth.Ostomy', action:'list_sessions', returnPar:false, pars:{sid:'0',machineid:'1'}, log:{enabled: true}}");
     }
     addTokenToPars( oJson);
     using (_sql = new Sql(getConnectionString(oJson.db), BaseApiController.logInfoFactory()))
     {
         Dictionary<string, string> pars = oJson.pars;
         try
         {
             if (oJson.log == null || !oJson.log.enabled) _sql.logger.DisabledOnce();
             using (DataTable dt = _sql.spExecuters[oJson.action](ref pars))
             {
                 return dt;
             }
         }
         catch (SqlException ex)
         {
             if (ex.State == (byte)Sql.stateNumber.NoPrivilege)
             {
                 var errorResponse = Request.CreateErrorResponse(System.Net.HttpStatusCode.Unauthorized, "Ehhez a művelethez nincs jogosultságod. Jelentkezz be és próbáld újra");
                 throw new HttpResponseException(errorResponse);
             }
             throw;
         }
     }
 }
 public DataTable Register([FromBody]string value)
 {
     JsonRequestDb oJson;
     try
     {
         oJson = JsonConvert.DeserializeObject<JsonRequestDb>(value.ToString());
     }
     catch (Exception)
     {
         throw new Exception("Nem sikerült értelmezni a JSON adatot. A helyes formátum pl: {db:'ConnStrName', pars:{UserName:'******', FullName:'Sós András', Email:'*****@*****.**'}, Password:'******'}");
     }
     addTokenToPars( oJson);
     using (_sql = new Sql(getConnectionString(oJson.db), BaseApiController.logInfoFactory()))
     {
         Dictionary<string, string> pars = oJson.pars;
         try
         {
             if (oJson.log == null || !oJson.log.enabled) _sql.logger.DisabledOnce();
             using (DataTable dt = _sql.spExecuters["register"](ref pars))
             {
                 return dt;
             }
         }
         catch (SqlException ex)
         {
             if (ex.State == (byte) Sql.stateNumber.NoPrivilege)
             {
                 var errorResponse = Request.CreateErrorResponse(System.Net.HttpStatusCode.Unauthorized, "Ehhez a művelethez nincs jogosultságod. Jelentkezz be és próbáld újra");
                 throw new HttpResponseException(errorResponse);
             }
             throw;
         }
     }
 }
 public string Logout([FromBody]object value)
 {
     JsonRequestDb oJson;
     try
     {
         oJson = JsonConvert.DeserializeObject<JsonRequestDb>(value.ToString());
     }
     catch (Exception)
     {
         throw new Exception("Nem sikerült értelmezni a JSON adatot. A helyes formátum pl: {db:'Ostomy',action:'login',pars:{fh:'asos',jsz:'asosasos'}}");
     }
     addTokenToPars( oJson);
     using (_sql = new Sql(getConnectionString(oJson.db), BaseApiController.logInfoFactory()))
     {
         Dictionary<string, string> pars = oJson.pars;
         if (oJson.log == null || !oJson.log.enabled) _sql.logger.DisabledOnce();
         _sql.logout(ref pars);
         return "OK";
     }
 }
 public DataSet Login([FromBody]object value)
 {
     JsonRequestDb oJson;
     try
     {
         oJson = JsonConvert.DeserializeObject<JsonRequestDb>(value.ToString());
     }
     catch (Exception)
     {
         throw new Exception("Nem sikerült értelmezni a JSON adatot. A helyes formátum pl: {db:'Ostomy',action:'login',pars:{fh:'asos',jsz:'asosasos', domain:'mydomain'}}");
     }
     addTokenToPars( oJson);
     bool isAD=false,
         isValid=false;
     if (oJson.pars.ContainsKey("domain"))
     {
         using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, oJson.pars["domain"]))
         {
             // validate the credentials
             isValid = pc!=null && pc.ValidateCredentials(oJson.pars["fh"], oJson.pars["jsz"]);
         }
         if (!isValid) return null;
         isAD = true;
     }
     using (_sql = new Sql(getConnectionString(oJson.db), BaseApiController.logInfoFactory()))
     {
         Dictionary<string, string> pars = oJson.pars;
         pars.Add("IP", (Request.GetOwinContext() == null ? "na" : Request.GetOwinContext().Request.RemoteIpAddress));
         if (oJson.log == null || !oJson.log.enabled) _sql.logger.DisabledOnce();
         using (DataSet ds = _sql.login(ref pars))
         {
             if (ds != null && ds.Tables.Count == 2)
             {
                 ds.Tables[0].TableName = "token";
                 ds.Tables[1].TableName = "groups";
             }
             return ds;
         }
     }
 }
 public DataSet dtMulti([FromBody]object value)
 {
     using (DataSet ds = new DataSet())
     {
         var oJsons = new Dictionary<string, JsonRequestDb>();
         try
         {
             oJsons = JsonConvert.DeserializeObject<Dictionary<string, JsonRequestDb>>(value.ToString());
         }
         catch (Exception)
         {
             try
             {
                 var Json = JsonConvert.DeserializeObject<JsonRequestDb>(value.ToString());
                 oJsons.Add("0", Json);
             }
             catch (Exception)
             {
                 throw new Exception("Nem sikerült értelmezni a JSON adatot. A helyes formátum pl: {sessions:{db:'Comforth.Ostomy',action:'list_sessions',pars:{sid:'0',machineid:'1'}}}");
             }
         }
         foreach (KeyValuePair<string, JsonRequestDb> item in oJsons)
         {
             JsonRequestDb oJson = item.Value;
             addTokenToPars( oJson);
             using (_sql = new Sql(getConnectionString(oJson.db), BaseApiController.logInfoFactory()))
             {
                 var pars = oJson.pars;
                 try
                 {
                     if (oJson.log == null || !oJson.log.enabled) _sql.logger.DisabledOnce();
                     using (DataTable dt = _sql.spExecuters[oJson.action](ref pars))
                     {
                         dt.TableName = item.Key;
                         ds.Tables.Add(dt);
                     }
                 }
                 catch (SqlException ex)
                 {
                     if (ex.State == (byte) Sql.stateNumber.NoPrivilege)
                     {
                         var errorResponse = Request.CreateErrorResponse(System.Net.HttpStatusCode.Unauthorized, "Ehhez a művelethez nincs jogosultságod. Jelentkezz be és próbáld újra");
                         throw new HttpResponseException(errorResponse);
                     }
                     throw;
                 }
                 // a pars változót is beleteszem a ds-be külön táblaként. a tábla neve a select tábla neve + "Pars"
                 if (oJson.returnPar)
                 {
                     using (DataTable dtPar = new DataTable(item.Key + "Pars"))
                     {
                         foreach (KeyValuePair<string, string> par in pars)
                         {
                             using (DataColumn col = new DataColumn(par.Key, typeof(string)))
                             {
                                 dtPar.Columns.Add(col);
                             }
                         }
                         DataRow rowPars = dtPar.NewRow();
                         foreach (KeyValuePair<string, string> par in pars)
                         {
                             rowPars[item.Key] = item.Value;
                         }
                     }
                 }
             }
         }
         return ds;
     }
 }