Exemplo n.º 1
0
        public static object ToDataShapeObject(this CompanyDTO company, List <string> lstOfFields)
        {
            List <string> lstOfFieldsToWorkWith = new List <string>(lstOfFields);

            if (!lstOfFieldsToWorkWith.Any())
            {
                return(company);
            }
            else
            {
                var lstOfAddressFields = lstOfFieldsToWorkWith.Where(f => f.Contains("addresses.")).ToList();

                bool returnPartialAddress = lstOfAddressFields.Any() && !lstOfAddressFields.Contains("addresses.");

                if (returnPartialAddress)
                {
                    lstOfFieldsToWorkWith.RemoveAll(f => f.Contains("addresses."));
                    lstOfAddressFields = lstOfAddressFields.Select(f => f.Substring(f.IndexOf(".") + 1)).ToList();
                }
                else
                {
                    //lstOfAddressFields.Remove("addresses");
                    lstOfFieldsToWorkWith.RemoveAll(f => f.Contains("addresses."));
                }

                ExpandoObject objectToReturn = new ExpandoObject();
                foreach (var field in lstOfFieldsToWorkWith)
                {
                    var fieldValue = company.GetType()
                                     .GetProperty(field, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance)
                                     .GetValue(company, null);

                    ((IDictionary <string, object>)objectToReturn).Add(field, fieldValue);
                }

                if (returnPartialAddress)
                {
                    List <object> addresses = new List <object>();
                    foreach (var address in company.Addresses)
                    {
                        addresses.Add(address.ToDataShapeObject(lstOfAddressFields));
                    }

                    ((IDictionary <string, object>)objectToReturn).Add("addresses", addresses);
                }
                return(objectToReturn);
            }
        }
Exemplo n.º 2
0
        public static object ToDataShapeObjectx(this CompanyDTO company, List <string> lstOfFields)
        {
            if (!lstOfFields.Any())
            {
                return(company);
            }
            else
            {
                ExpandoObject objectToReturn = new ExpandoObject();
                foreach (var field in lstOfFields)
                {
                    var fieldValue = company.GetType()
                                     .GetProperty(field, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance)
                                     .GetValue(company, null);

                    ((IDictionary <string, object>)objectToReturn).Add(field, fieldValue);
                }
                return(objectToReturn);
            }
        }
Exemplo n.º 3
0
        public static Company ToDomain(this CompanyDTO company, Company originalCompany = null)
        {
            if (originalCompany != null && originalCompany.ID == company.ID)
            {
                originalCompany.Code       = company.Code;
                originalCompany.ABN        = company.ABN;
                originalCompany.Name       = company.Name;
                originalCompany.ChangeDate = company.ChangeDate;
                originalCompany.CreateDate = company.CreateDate;
                originalCompany.Addresses  = company.Addresses != null?
                                             company.Addresses.Select(add =>
                                                                      add.ToDomain(
                                                                          originalCompany.Addresses != null ? originalCompany.Addresses.FirstOrDefault(ad => ad.ID == add.ID)  :  null
                                                                          )).ToList()
                                                 : new List <Address>();

                originalCompany.Contacts = company.Contacts != null?
                                           company.Contacts.Select(con =>
                                                                   con.ToDomain(
                                                                       originalCompany.Contacts != null ? originalCompany.Contacts.FirstOrDefault(co => co.ID == con.ID) : null
                                                                       )).ToList()
                                               : new List <Contact>();

                return(originalCompany);
            }

            return(new Company()
            {
                ID = company.ID,
                Code = company.Code,
                ABN = company.ABN,
                Name = company.Name,
                ChangeDate = company.ChangeDate,
                CreateDate = company.CreateDate,
                Addresses = company.Addresses != null?company.Addresses.Select(add => add.ToDomain()).ToList() : null,
                                Contacts = company.Contacts != null?company.Contacts.Select(con => con.ToDomain()).ToList() : null
            });
        }