private string HandleNewItems(T obj) { // if (!EditedItems.Any(x=>x.FormState==FormMode.ADDMODE)) { return null; } PropertyInfo[] properties = obj.GetType().GetProperties(); var SqlStatements = new StringBuilder(); var sbField = new StringBuilder(); var sbWhere = new StringBuilder(); var fld = new AttributeHelper <DoNotIncludeField>(); List <string> fldNames = fld.HasField(obj); var dicDbFieldNames = fld.DbFieldName(obj); foreach (PropertyInfo property in properties) { if (!fldNames.Contains(property.Name)) { var matches = dicDbFieldNames.Where(kvp => kvp.Key == property.Name).FirstOrDefault(); string fieldName = matches.Key == null ? property.Name : matches.Value; sbField.Append("[" + fieldName + "]" + ","); if (property.PropertyType.ToString().IsNumericDatatype()) { sbWhere.Append(property.GetValue(obj)); //because bool is bit in sql do the following sbWhere = sbWhere.Replace("True", "1"); sbWhere = sbWhere.Replace("False", "0"); } else { //sbWhere.Append("'" + property.GetValue(obj) + "',"); sbWhere.Append(DB.SQuote(property.GetValue(obj).ToString())); } sbWhere.Append(","); } } sbField.Remove(sbField.ToString().LastIndexOf(","), 1); sbWhere.Remove(sbWhere.ToString().LastIndexOf(","), 1); var attributes = typeof(T).GetCustomAttributes <DbTableName>(); string tableName = ReadClassAttribute.GetDisplayAttributeValue(attributes); tableName = tableName == ""?obj.GetType().Name :tableName; SqlStatements.Append(" INSERT INTO " + tableName + " (" + sbField + ") VALUES ( " + sbWhere + ")" + ";"); //SqlStatements.Append(" GO "); return(SqlStatements.ToString()); }
private string HandleDeletedItems(T obj) { Initialize(obj);//get original field values var SqlStatements = new StringBuilder(); string strAnd = " AND "; var fld = new AttributeHelper <DoNotIncludeField>(); List <string> fldNames = fld.HasField(obj); var dicDbFieldNames = fld.DbFieldName(obj); var sbWhere = new StringBuilder(); foreach (var entry in mOriginalValues) { if (!fldNames.Contains(entry.Key)) { var matches = dicDbFieldNames.FirstOrDefault(kvp => kvp.Key == entry.Key); var item = mTypes.FirstOrDefault(t => t.Key == entry.Key); string fieldName = matches.Key == null ? entry.Key : matches.Value; if (Boytrix.Logic.Business.Common.ExtensionMethods.IsNumericDatatype(item.Value.ToString())) { sbWhere.Append("[" + fieldName + "] =" + entry.Value + strAnd); } else { sbWhere.Append("[" + fieldName + "] ='" + entry.Value + "' AND "); } } } sbWhere.Remove(sbWhere.ToString().LastIndexOf(strAnd), strAnd.Length); var attributes = typeof(T).GetCustomAttributes <DbTableName>(); string tableName = ReadClassAttribute.GetDisplayAttributeValue(attributes); tableName = tableName == "" ? obj.GetType().Name : tableName; SqlStatements.Append(" DELETE FROM " + tableName + " WHERE " + sbWhere.ToString() + ";"); // SqlStatements.Append(" GO "); return(SqlStatements.ToString()); }
public string HandleGet(T obj) { var fld = new AttributeHelper <DoNotIncludeField>(); List <string> fldNames = fld.HasField(obj); mTypes.Clear(); var dicDbFieldNames = fld.DbFieldName(obj); var sbField = new StringBuilder(); List <string> cols = fld.HasField(obj); PropertyInfo[] properties = obj.GetType().GetProperties(); foreach (PropertyInfo property in properties) { //Add type should we need it for find this.mTypes.Add(property.Name, property.PropertyType); } mTypes.ToList().ForEach(pair => { if (fldNames.Contains(pair.Key)) { mTypes.Remove(pair.Key); } }); mTypes.ToList().ForEach(pair => { sbField.Append(pair.Key); sbField.Append(","); }); var attributes = typeof(T).GetCustomAttributes <DbTableName>(); string tableName = ReadClassAttribute.GetDisplayAttributeValue(attributes); tableName = tableName == "" ? obj.GetType().Name : tableName; sbField.Remove(sbField.ToString().LastIndexOf(","), 1); return(" SELECT " + sbField.ToString() + " FROM " + tableName + ""); }
public string HandleFind(T obj, string strWhere) { var fld = new AttributeHelper <DoNotIncludeField>(); List <string> fldNames = fld.HasField(obj); var dicDbFieldNames = fld.DbFieldName(obj); string strAnd = " OR "; var sbWhere = new StringBuilder(); // var sql= HandleGet(obj); foreach (var item in mTypes) { //if (Boytrix.Logic.Business.Common.ExtensionMethods.IsNumericDatatype(item.Value.ToString())) // sbWhere.Append("[" + item.Key + "] LIKE %" + strWhere + "% OR "); //else sbWhere.Append("[" + item.Key + "] LIKE'%" + strWhere + "%' OR "); } sbWhere.Remove(sbWhere.ToString().LastIndexOf(strAnd), strAnd.Length); return(" WHERE " + sbWhere.ToString()); }
private string HandleEditedItems(T obj) { // if (!EditedItems.Any(x => x.FormState == FormMode.EDITMODE)) { return null ; } var SqlStatements = new StringBuilder(); PropertyInfo[] properties = obj.GetType().GetProperties(); var latestChanges = new Dictionary <string, object>(); // Save the current value of the properties to our dictionary. foreach (PropertyInfo property in properties) { latestChanges.Add(property.Name, property.GetValue(obj)); } // Get all properties PropertyInfo[] tempProperties = obj.GetType().GetProperties().ToArray(); // Filter properties by only getting what has changed properties = tempProperties.Where(p => !Equals(p.GetValue(obj, null), this.mOriginalValues[p.Name])).ToArray(); latestChanges.Clear(); string strAnd = " AND "; var sbField = new StringBuilder(); //Get custom attributes that exclude a field or provides proper db name for a field var fld = new AttributeHelper <DoNotIncludeField>(); List <string> fldNames = fld.HasField(obj); var dicDbFieldNames = fld.DbFieldName(obj); foreach (PropertyInfo property in properties) { if (!fldNames.Contains(property.Name)) { latestChanges.Add(property.Name, property.GetValue(obj)); // sql = "[" + property.Name.ToString() + "]=" + property.GetValue(obj) + ""; //KeyValuePair<string, string> properFieldName = dicDbFieldNames.ContainsKey(property.Name); var matches = dicDbFieldNames.Where(kvp => kvp.Key == property.Name).FirstOrDefault(); if (Boytrix.Logic.Business.Common.ExtensionMethods.IsNumericDatatype(property.PropertyType.ToString())) { sbField.Append("[" + matches == null ? property.Name.ToString() : matches.Value + "]=" + property.GetValue(obj) + ","); } else { sbField.Append("[" + matches == null ? property.Name.ToString() : matches.Value + "]='" + property.GetValue(obj) + "',"); } } } sbField.Remove(sbField.ToString().LastIndexOf(","), 1); var sbWhere = new StringBuilder(); foreach (var entry in mOriginalValues) { if (!fldNames.Contains(entry.Key)) { var item = mTypes.FirstOrDefault(t => t.Key == entry.Key); if (Boytrix.Logic.Business.Common.ExtensionMethods.IsNumericDatatype(item.Value.ToString())) { sbWhere.Append("[" + entry.Key + "] =" + entry.Value + " AND "); } else { sbWhere.Append("[" + entry.Key + "] ='" + entry.Value + "' AND "); } } // strWhere = strWhere + "[" + entry.Key + "] ='" + entry.Value + "' AND "; } sbWhere.Remove(sbWhere.ToString().LastIndexOf(strAnd), strAnd.Length); var attributes = typeof(T).GetCustomAttributes <DbTableName>(); string tableName = ReadClassAttribute.GetDisplayAttributeValue(attributes); tableName = tableName == "" ? obj.GetType().Name : tableName; //tempProperties = tempProperties.Where(p => !Equals(p.GetValue(obj, null), this.mOriginalValues[p.Name])).ToArray(); SqlStatements.Append(" UPDATE " + tableName + " SET " + sbField.ToString() + " WHERE " + sbWhere.ToString() + ";"); // SqlStatements.Append(" GO "); return(SqlStatements.ToString()); }