Beispiel #1
0
        //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 !!");
            //}
        }
Beispiel #2
0
        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 !!");
            //}
        }