public IEnumerable <IslemLogViewModel> CustomFilter(IslemLogSearchViewModel searchModel)
        {
            Expression <Func <IslemLog, bool> > predicate = f => true;

            predicate = CreateCustomPredicate(searchModel);

            ////Veritabanında Kullanici tablosu olmadığından cache yapıp aldığımız kısım
            List <Kullanici> kullanici = new List <Kullanici>();

            kullanici = HttpRuntime.Cache["Kullanici"] as List <Kullanici>;

            List <SqlParameter> parameters = new List <SqlParameter>();
            string whereClause             = CreateWhereClause(searchModel, parameters);

            IEnumerable <IslemLog> islemData = ((IIslemLogRepository)rep).GetDataWithSql(whereClause, parameters);

            var joinedSequence = (from k in kullanici
                                  join i in islemData on k.Id equals i.KullaniciId
                                  select new IslemLogViewModel
            {
                KullaniciId = i.KullaniciId,
                KullaniciAdi = k.KullaniciAdi,
                AddedNew = i.AddedNew,
                EntityFieldName = i.EntityFieldName,
                EntityIdValue = i.EntityIdValue,
                EntityName = i.EntityName,
                ResponseStatusId = i.ResponseStatusId,
                NewValue = i.NewValue,
                OldValue = i.OldValue,
                RequestMessageDate = i.RequestMessageDate,
                IslemAdi = i.IslemAdi
            });

            return(joinedSequence.AsEnumerable());
        }
        public List <string> GetEntityFieldList(IslemLogSearchViewModel searchModel)
        {
            searchModel = FormatTableNameAsDbField(searchModel);
            var entityFieldList = (from p in rep.Table
                                   where p.TableName == searchModel.EntityName
                                   select new IslemLogSearchViewModel {
                EntityFieldName = p.ColumnName
            }).Distinct().ToList();

            return(FormatTableName(entityFieldList));
        }
        public IslemLogSearchViewModel FormatTableNameAsDbField(IslemLogSearchViewModel searchModel)
        {
            char[] array       = searchModel.EntityName.ToCharArray();
            string returnValue = "";

            returnValue += array[0];
            for (int i = 1; i < array.Length; i++)
            {
                if (array[i] <= 'Z' && array[i] >= 'A')
                {
                    returnValue += "_" + array[i];
                    continue;
                }
                returnValue += char.ToUpper(array[i]);
            }
            searchModel.EntityName = returnValue.Replace("İ", "I");
            return(searchModel);
        }
        private string CreateWhereClause(IslemLogSearchViewModel model, List <SqlParameter> parameters)
        {
            StringBuilder whereClause = new StringBuilder();

            if (model.EntityIdValue == 0)
            {
                rep.SetTimeOut(300);
                whereClause.Append(" ");
                whereClause.Append("ENTITY_NAME= @entityname");
                parameters.Add(new SqlParameter("entityname", model.EntityName));
                if (!string.IsNullOrEmpty(model.EntityFieldName))
                {
                    whereClause.Append(" ");
                    whereClause.Append("and");
                    whereClause.Append(" ");
                    whereClause.Append("ENTITY_FIELD_NAME= @entityfieldname");
                    parameters.Add(new SqlParameter("entityfieldname", model.EntityFieldName));
                }

                if (!string.IsNullOrEmpty(model.NewValue) && !string.IsNullOrEmpty(model.OldValue))
                {
                    whereClause.Append(" ");
                    whereClause.Append("and");
                    whereClause.Append(" ");
                    whereClause.Append("(NEW_VALUE= @newvalue or OLD_VALUE= @oldvalue)");
                    parameters.Add(new SqlParameter("newvalue", model.NewValue));
                    parameters.Add(new SqlParameter("oldvalue", model.OldValue));
                }
                else
                if (!string.IsNullOrEmpty(model.NewValue))
                {
                    whereClause.Append(" ");
                    whereClause.Append("and");
                    whereClause.Append(" ");
                    whereClause.Append("NEW_VALUE= @newvalue");
                    parameters.Add(new SqlParameter("newvalue", model.NewValue));
                }
                else
                if (!string.IsNullOrEmpty(model.OldValue))
                {
                    whereClause.Append(" ");
                    whereClause.Append("and");
                    whereClause.Append(" ");
                    whereClause.Append("OLD_VALUE= @oldvalue");
                    parameters.Add(new SqlParameter("oldvalue", model.OldValue));
                }
            }
            else
            {
                if (string.IsNullOrEmpty(model.OldValue) && string.IsNullOrEmpty(model.NewValue))
                {
                    whereClause.Append(" ");
                    whereClause.Append("ENTITY_NAME= @entityname");
                    whereClause.Append(" ");
                    whereClause.Append("and");
                    whereClause.Append(" ");
                    whereClause.Append("ENTITY_ID_VALUE=@entityidvalue");

                    parameters.Add(new SqlParameter("entityname", model.EntityName));
                    parameters.Add(new SqlParameter("entityidvalue", model.EntityIdValue));
                    if (!string.IsNullOrEmpty(model.EntityFieldName))
                    {
                        whereClause.Append(" ");
                        whereClause.Append("and");
                        whereClause.Append(" ");
                        whereClause.Append("ENTITY_FIELD_NAME= @entityfieldname");
                        parameters.Add(new SqlParameter("entityfieldname", model.EntityFieldName));
                    }
                }
                else
                {
                    whereClause.Append(" ");
                    whereClause.Append("ENTITY_NAME= @entityname");
                    parameters.Add(new SqlParameter("entityname", model.EntityName));
                    if (!string.IsNullOrEmpty(model.EntityFieldName))
                    {
                        whereClause.Append(" ");
                        whereClause.Append("and");
                        whereClause.Append(" ");
                        whereClause.Append("ENTITY_FIELD_NAME= @entityfieldname and ENTITY_ID_VALUE=@entityidvalue");
                        parameters.Add(new SqlParameter("entityfieldname", model.EntityFieldName));
                        parameters.Add(new SqlParameter("entityidvalue", model.EntityIdValue));
                    }

                    if (!string.IsNullOrEmpty(model.NewValue) && !string.IsNullOrEmpty(model.OldValue))
                    {
                        whereClause.Append(" ");
                        whereClause.Append("and");
                        whereClause.Append(" ");
                        whereClause.Append("(NEW_VALUE= @newvalue or OLD_VALUE= @oldvalue)");
                        parameters.Add(new SqlParameter("newvalue", model.NewValue));
                        parameters.Add(new SqlParameter("oldvalue", model.OldValue));
                    }
                    else
                    if (!string.IsNullOrEmpty(model.NewValue))
                    {
                        whereClause.Append(" ");
                        whereClause.Append("and");
                        whereClause.Append(" ");
                        whereClause.Append("NEW_VALUE= @newvalue");
                        parameters.Add(new SqlParameter("newvalue", model.NewValue));
                    }
                    else
                    if (!string.IsNullOrEmpty(model.OldValue))
                    {
                        whereClause.Append(" ");
                        whereClause.Append("and");
                        whereClause.Append(" ");
                        whereClause.Append("OLD_VALUE= @oldvalue");
                        parameters.Add(new SqlParameter("oldvalue", model.OldValue));
                    }
                }
            }

            if (model.AddedNew != null)
            {
                whereClause.Append(" ");
                whereClause.Append("and");
                whereClause.Append(" ");
                whereClause.Append("ADDED_NEW= @addednew");
                parameters.Add(new SqlParameter("addednew", model.AddedNew));
            }

            return(whereClause.ToString());
        }