//private Expression<Func<Contact, bool>> getExpression(List<ColumnFilterInfo> filters) //{ // var discountFilter = "album => album.Quantity > 0"; // var options = ScriptOptions.Default.AddReferences(typeof(Album).Assembly); // Func<Album, bool> discountFilterExpression = await CSharpScript.EvaluateAsync<Func<Album, bool>>(discountFilter, options); // var discountedAlbums = albums.Where(discountFilterExpression); // Expression<Func<Contact, bool>> where = t => true; // foreach (ColumnFilterInfo filter in filters) { // if (filter.EntityName == typeof(Contact).Name) { // switch (filter.FilterType) { // case FilterTypeEnum.Equals.ToString(): // where. // break; // } // } // } //} private Contact MapToEntity(Dictionary <string, object> model, IEnumerable <AddedColumn> AddedColumns) { //try //{ List <AddedColumn> ContactAddedColumns = AddedColumns.Where(t => t.EntityName == typeof(Contact).Name).ToList(); List <AddedColumn> CompanyAddedColumns = AddedColumns.Where(t => t.EntityName == typeof(Company).Name).ToList(); Contact contact = new Contact(); contact.Name = model["Name"].ToString(); foreach (AddedColumn column in ContactAddedColumns) { try { BsonElement bsonElement = new BsonElement(column.ColumnName, (BsonValue)model[column.ColumnName]); contact.AddedColumns.Add(bsonElement); } catch { } } contact.Company = new List <Company>(); //JsonObject comp = JsonObject.Parse(model["Company"].ToString()); JsonArrayObjects companyList = JsonObject.ParseArray(model["Company"].ToString()); if (companyList.GroupBy(n => n["Name"]).Any(c => c.Count() > 1)) { throw new Exception("Company name field must be unique!"); } foreach (JsonObject element in companyList.AsEnumerable()) { Company company = new Company(); company.Name = element["Name"].ToString(); company.ID = _sequence.GetNextSequenceValue(typeof(Company).Name); company.NumberOfEmployees = int.Parse(element["NumberOfEmployees"].ToString()); foreach (AddedColumn column in CompanyAddedColumns) { try { BsonElement bsonElement = new BsonElement(column.ColumnName, (BsonValue)element[column.ColumnName]); company.AddedColumns.Add(bsonElement); } catch { } } contact.Company.Add(company); } return(contact); //} //catch (Exception ex) //{ // throw new Exception("Error mapping contact company fields !!"); //} }
private Contact MapToEntity(Dictionary <string, object> model, Contact contact, IEnumerable <AddedColumn> AddedColumns) { //try //{ List <AddedColumn> ContactAddedColumns = AddedColumns.Where(t => t.EntityName == typeof(Contact).Name).ToList(); List <AddedColumn> CompanyAddedColumns = AddedColumns.Where(t => t.EntityName == typeof(Company).Name).ToList(); contact.Name = model["Name"].ToString(); foreach (AddedColumn column in ContactAddedColumns) { try { int index = contact.AddedColumns.IndexOfName(column.ColumnName); BsonElement bsonElement = new BsonElement(column.ColumnName, (BsonValue)model[column.ColumnName]); if (index >= 0) { contact.AddedColumns.SetElement(index, bsonElement); } else { contact.AddedColumns.Add(bsonElement); } } catch { } } JsonArrayObjects companyList = JsonObject.ParseArray(model["Company"].ToString()); if (companyList.GroupBy(n => n["Name"]).Any(c => c.Count() > 1)) { throw new Exception("Company name field must be unique!"); } //List<Dictionary<string, object>> companies = (List<Dictionary<string, object>>)model["Company"]; //remove deleted companies List <int> CompanyIds = companyList.Select(t => int.Parse(t["ID"] == null ? "0" : t["ID"].ToString())).Distinct().ToList(); contact.Company.RemoveAll(t => !CompanyIds.Any(c => c == t.ID)); foreach (JsonObject element in companyList.AsEnumerable()) { Company company; company = contact.Company.Where((t, i) => t.ID == int.Parse(element["ID"].ToString())).FirstOrDefault(); //Handle Added Companies if (company == null) { company = new Company(); company.ID = _sequence.GetNextSequenceValue(typeof(Company).Name); } else { contact.Company.Remove(company); } company.Name = (string)element["Name"]; company.NumberOfEmployees = int.Parse(element["NumberOfEmployees"].ToString()); foreach (AddedColumn column in CompanyAddedColumns) { try { int index = company.AddedColumns.IndexOfName(column.ColumnName); BsonElement bsonElement = new BsonElement(column.ColumnName, (BsonValue)element[column.ColumnName]); if (index >= 0) { company.AddedColumns.SetElement(index, bsonElement); } else { company.AddedColumns.Add(bsonElement); } } catch { } } contact.Company.Add(company); } return(contact); //} //catch (Exception ex) //{ // throw new Exception("Error mapping contact company fields !!"); //} }