Пример #1
0
        public static string GenerateFilterFromJsonObject(Type T, string _filter, int authenticatedUserId, string connectionString)
        {
            string toReturn = "";

            try
            {
                JObject jObj = JObject.Parse(_filter);
                if (jObj.Count == 2)
                {
                    /*
                     * JToken j1 = jObj[0];
                     * JToken j2 = jObj[1];
                     * if(JsonConvert.DeserializeObject(JsonConvert.SerializeObject( j1), T).GetType().Name.IndexOf("Dosar") > -1 && j2.HasValues)
                     */
                    JToken j1 = jObj["jObject"];
                    JToken j2 = jObj["jobjectJson"];
                    if (jObj["jObject"] != null && jObj["jobjectJson"] != null)
                    {
                        string f1 = GenerateFilterFromJsonObject(T, JsonConvert.SerializeObject(j1), authenticatedUserId, connectionString);
                        string f2 = GenerateFilterFromJsonObject(T, JsonConvert.SerializeObject(j2), authenticatedUserId, connectionString);
                        toReturn = !String.IsNullOrEmpty(f1) && !String.IsNullOrEmpty(f2) ? String.Format("{0} AND {1}", f1, f2) : String.Format("{0}{1}", f1 == null ? "" : f1, f2 == null ? "" : f2);
                        return(toReturn);
                    }
                }
            }
            catch { }


            try
            {
                //dynamic jObj = JsonConvert.DeserializeObject(_filter);
                JObject        jObj        = JObject.Parse(_filter);
                var            x           = Activator.CreateInstance(T, new object[] { authenticatedUserId, connectionString });
                string         className   = x.GetType().Name; // to check if it returns only the short name
                string         tableAllias = CommonFunctions.ClassNamesTableNamesAlliases[className].ToUpper();
                PropertyInfo[] pisX        = x.GetType().GetProperties();
                //PropertyInfo[] pisJObj = jObj.GetType().GetProperties();
                //foreach (PropertyInfo piJObj in pisJObj)
                foreach (var t in jObj)
                {
                    string key = t.Key;
                    JToken j   = t.Value;
                    string v   = j == null || j.IsNullOrEmpty() ? null : (j.Type == JTokenType.Float ? j.ToString(Formatting.None) : j.ToString());
                    bool   propertyInMasterObject = false;
                    foreach (PropertyInfo piX in pisX)
                    {
                        ////if (piX.Name == piJObj.Name)
                        //if (piX.Name != "ID" && (j != null && !String.IsNullOrEmpty(v)))
                        if (j != null && !String.IsNullOrEmpty(v))
                        {
                            if (piX.Name == key)
                            {
                                string op = "";
                                switch (piX.PropertyType.ToString())
                                {
                                case "System.Boolean":
                                case "System.Nullable`1[System.Boolean]":
                                    op        = String.IsNullOrEmpty(v) ? "is null" : String.Format("= {0}", v.ToLower());
                                    toReturn += String.Format("{0}{1}.`{2}` {3}", (toReturn == "" ? "" : " AND "), tableAllias, piX.Name, op);
                                    break;

                                case "System.DateTime":
                                case "System.Nullable`1[System.DateTime]":
                                    if (v.IndexOf('?') > -1)
                                    {
                                        DateTime dStart = Convert.ToDateTime(v.Split('?')[0]);
                                        DateTime dEnd   = Convert.ToDateTime(v.Split('?')[1]);
                                        toReturn += String.Format("{0}(DATE({1}.`{2}`) >= '{3}' AND DATE({1}.`{2}`) <= '{4}')", (toReturn == "" ? " " : " AND "), tableAllias, piX.Name, CommonFunctions.ToMySqlFormatDate(dStart), CommonFunctions.ToMySqlFormatDate(dEnd));
                                    }
                                    else
                                    {
                                        DateTime d = Convert.ToDateTime(v);
                                        toReturn += String.Format("{0} {1}.`{2}` = '{3}'", (toReturn == "" ? " " : " AND "), tableAllias, piX.Name, CommonFunctions.ToMySqlFormatDate(d));
                                    }
                                    break;

                                case "System.Double":
                                case "System.Nullable`1[System.Double]":
                                case "System.Decimal":
                                case "System.Nullable`1[System.Decimal]":
                                    op = v.StartsWith("*") && v.EndsWith("*") ? String.Format("like '%{0}%'", v == null?null:Convert.ToDouble(CommonFunctions.BackDoubleValue(v.Substring(1, v.Length - 2))).ToString(CultureInfo.InvariantCulture)) :
                                         v.StartsWith("*") ? String.Format("like '%{0}'", v == null ? null : Convert.ToDouble(CommonFunctions.BackDoubleValue(v.Substring(1, v.Length - 1))).ToString(CultureInfo.InvariantCulture)) :
                                         v.EndsWith("*") ? String.Format("like '{0}%'", v == null?null: Convert.ToDouble(CommonFunctions.BackDoubleValue(v.Substring(0, v.Length - 1))).ToString(CultureInfo.InvariantCulture)) :
                                         String.Format("= '{0}'", v == null? null:Convert.ToDouble(CommonFunctions.BackDoubleValue(v)).ToString(CultureInfo.InvariantCulture));
                                    toReturn += String.Format("{0}{1}.`{2}` {3}", (toReturn == "" ? "" : " AND "), tableAllias, piX.Name, op);
                                    break;

                                default:
                                    op        = v.StartsWith("*") && v.EndsWith("*") ? String.Format("like '%{0}%'", v.Substring(1, v.Length - 2)) : v.StartsWith("*") ? String.Format("like '%{0}'", v.Substring(1, v.Length - 1)) : v.EndsWith("*") ? String.Format("like '{0}%'", v.Substring(0, v.Length - 1)) : String.Format("= '{0}'", v);
                                    toReturn += String.Format("{0}{1}.`{2}` {3}", (toReturn == "" ? "" : " AND "), tableAllias, piX.Name, op);
                                    break;
                                }

                                propertyInMasterObject = true;
                                break;
                            }
                        }
                    }
                    if (!propertyInMasterObject && (j != null && !String.IsNullOrEmpty(v))) // pt. campuri externe trimise pt. filtrare - ex. Nume societate sau asigurat din Dosar
                    {
                        string op = v.StartsWith("*") && v.EndsWith("*") ? String.Format("like '%{0}%'", v.Substring(1, v.Length - 2)) : v.StartsWith("*") ? String.Format("like '%{0}'", v.Substring(1, v.Length - 1)) : v.EndsWith("*") ? String.Format("like '{0}%'", v.Substring(0, v.Length - 1)) : String.Format("= '{0}'", v);
                        //switch (piJObj.Name.ToLower().Replace("_", "").Replace(" ", ""))
                        switch (key.ToLower().Replace("_", "").Replace(" ", ""))
                        {
                        //dosare
                        case "calitatesocietate":
                            string[] statuses = op.Replace("=", "").Replace("'", "").Trim().Split(',');
                            toReturn += String.Format("{0}(DOSARE.STATUS IN (", (toReturn == "" ? "" : " AND "));
                            for (int i = 0; i < statuses.Length; i++)
                            {
                                toReturn += String.Format("'{1}'{0}", i == statuses.Length - 1 ? "" : ",", statuses[i]);
                            }
                            toReturn += "))";
                            break;

                        case "asiguratcasco":
                        case "numeasiguratcasco":
                            //toReturn += String.Format("{2}ASIGC.`{0}` LIKE '%{1}%'", "DENUMIRE", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}ASIGC.`{0}` LIKE '{1}%'", "DENUMIRE", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}ASIGC.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "asiguratrca":
                        case "numeasiguratrca":
                            //toReturn += String.Format("{2}ASIGR.`{0}` LIKE '%{1}%'", "DENUMIRE", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}ASIGR.`{0}` LIKE '{1}%'", "DENUMIRE", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}ASIGR.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "autocasco":
                        case "numarautocasco":
                            //toReturn += String.Format("{2}AC.`{0}` LIKE '%{1}%'", "NR_AUTO", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}AC.`{0}` LIKE '{1}%'", "NR_AUTO", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}AC.`{0}` {1}", "NR_AUTO", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "autorca":
                        case "numarautorca":
                            //toReturn += String.Format("{2}AR.`{0}` LIKE '%{1}%'", "NR_AUTO", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}AR.`{0}` LIKE '{1}%'", "NR_AUTO", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}AR.`{0}` {1}", "NR_AUTO", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "societatecasco":
                        case "asiguratorcasco":
                            //toReturn += String.Format("{2}SC.`{0}` LIKE '%{1}%'", "DENUMIRE_SCURTA", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}SC.`{0}` LIKE '{1}%'", "DENUMIRE_SCURTA", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}SC.`{0}` {1}", "DENUMIRE_SCURTA", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "societaterca":
                        case "asiguratorrca":
                            //toReturn += String.Format("{2}SR.`{0}` LIKE '%{1}%'", "DENUMIRE_SCURTA", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}SR.`{0}` LIKE '{1}%'", "DENUMIRE_SCURTA", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}SR.`{0}` {1}", "DENUMIRE_SCURTA", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "intervenient":
                        case "numeintervenient":
                            //toReturn += String.Format("{2}I.`{0}` LIKE '%{1}%'", "DENUMIRE", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}I.`{0}` LIKE '{1}%'", "DENUMIRE", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}I.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "tipdosar":
                            //toReturn += String.Format("{2}TD.`{0}` LIKE '%{1}%'", "DENUMIRE", piJObj.GetValue(jObj, null), (toReturn == "" ? "" : " AND "));
                            //toReturn += String.Format("{2}TD.`{0}` LIKE '{1}%'", "DENUMIRE", v, (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}TD.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        //procese
                        case "tipproces":
                            toReturn += String.Format("{2}TD.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "complet":
                            toReturn += String.Format("{2}C.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "instanta":
                            toReturn += String.Format("{2}I.`{0}` {1}", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "reclamant":
                            toReturn += String.Format("{2} (REC1.`{0}` {1} OR REC2.`{3}` {4})", "DENUMIRE", op, (toReturn == "" ? "" : " AND "), "DENUMIRE", op);
                            break;

                        case "parat":
                            toReturn += String.Format("{2} (PAR1.`{0}` {1} OR PAR2.`{3}` {4})", "DENUMIRE", op, (toReturn == "" ? "" : " AND "), "DENUMIRE", op);
                            break;

                        case "tert":
                            toReturn += String.Format("{2} (TER.`{0}` {1})", "DENUMIRE", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "contract":
                            toReturn += String.Format("{2}CTR.`{0}` {1}", "NR_CONTRACT", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "stadiu":
                            toReturn += String.Format("{2}S.`{0}` {1}", "ID", op, (toReturn == "" ? "" : " AND "));
                            break;

                        case "datastadiu":
                            if (v.IndexOf('?') > -1)
                            {
                                DateTime dStart = Convert.ToDateTime(v.Split('?')[0]);
                                DateTime dEnd   = Convert.ToDateTime(v.Split('?')[1]);
                                toReturn += String.Format("{0} (DATE({1}.`{2}`) >= '{3}' AND DATE({1}.`{2}`) <= '{4}')", (toReturn == "" ? " " : " AND "), "PS", "DATA", CommonFunctions.ToMySqlFormatDate(dStart), CommonFunctions.ToMySqlFormatDate(dEnd));
                            }
                            else
                            {
                                DateTime d = Convert.ToDateTime(v);
                                toReturn += String.Format("{0} {1}.`{2}` = '{3}'", (toReturn == "" ? " " : " AND "), "PS", "DATA", CommonFunctions.ToMySqlFormatDate(d));
                            }
                            break;

                        case "calitate":
                            toReturn += String.Format("{0} {1}", (toReturn == "" ? "" : " AND "), v);
                            break;

                        case "dosarfaradocumente":
                            //toReturn += String.Format("{2}IFNULL(DS.`{0}`, 0) {1}", "CNT", op.ToLower().IndexOf("true") > -1 ? " = 0 " : op.ToLower().IndexOf("false") > -1 ? " > 0 " : " >= 0 ", (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}IFNULL(DOSARE.`{0}`, 0) {1}", "COUNT_DOCUMENTE", op.ToLower().IndexOf("true") > -1 ? " = 0 " : op.ToLower().IndexOf("false") > -1 ? " > 0 " : " >= 0 ", (toReturn == "" ? "" : " AND "));
                            break;

                        case "dosarfaraproces":
                            //toReturn += String.Format("{2}IFNULL(P.`{0}`, 0) {1}", "CNT", op.ToLower().IndexOf("true") > -1 ? " = 0 " : op.ToLower().IndexOf("false") > -1 ? " > 0 " : " >= 0 ", (toReturn == "" ? "" : " AND "));
                            toReturn += String.Format("{2}IFNULL(DOSARE.`{0}`, 0) {1}", "COUNT_PROCESE", op.ToLower().IndexOf("true") > -1 ? " = 0 " : op.ToLower().IndexOf("false") > -1 ? " > 0 " : " >= 0 ", (toReturn == "" ? "" : " AND "));
                            break;
                        }
                    }
                }

                /*
                 * MethodInfo mi = x.GetType().GetMethod("ValidareColoane");
                 * response res = (response)mi.Invoke(x, new object[] { _filter });
                 * if (res.Status)
                 * {
                 *  mi = x.GetType().GetMethod("GenerateFilterFromJsonObject");
                 *  var r = mi.Invoke(x, null);
                 *  toReturn = r.ToString();
                 * }
                 */
            }
            catch { }
            return(toReturn);
        }
Пример #2
0
 public static response GenerateByteThumbNail(string fileName, ThumbNailSizes tSize)
 {
     return(GenerateByteThumbNail(File.Exists(fileName) ? "" : CommonFunctions.GetScansFolder(), fileName, tSize));
 }
Пример #3
0
 public static response GenerateImgThumbNail(string fileName)
 {
     return(GenerateImgThumbNail(CommonFunctions.GetThumbNailSizes(ThumbNailType.Custom), File.Exists(fileName) ? "" : CommonFunctions.GetScansFolder(), fileName));
 }
Пример #4
0
 public static response GenerateImgThumbNail(ThumbNailSizes tSize, string fileName)
 {
     return(GenerateImgThumbNail(tSize.thumbNailType.ToString(), CommonFunctions.GetScansFolder(), fileName, tSize.Width, tSize.Height));
 }
Пример #5
0
 public static response GenerateImgThumbNail(string filePath, string fileName)
 {
     return(GenerateImgThumbNail(CommonFunctions.GetThumbNailSizes(ThumbNailType.Custom), filePath, fileName));
 }