Esempio n. 1
0
 public static OrganisationData ToOrganisationData(this IIfcOrganization ifcOrganization)
 {
     return(new OrganisationData
     {
         Name = ifcOrganization?.Name,
         Id = ifcOrganization?.Identification,
         Description = ifcOrganization?.Description,
         Addresses = ifcOrganization?.Addresses.Select(i => i.ToAddressData()).ToArray()
     });
 }
Esempio n. 2
0
        public static string EmailAddressOf(IIfcActorSelect personOrg)
        {
            IIfcPerson       person       = null;
            IIfcOrganization organisation = null;

            if (personOrg is IIfcPerson)
            {
                person = personOrg as IIfcPerson;
            }
            if (personOrg is IIfcOrganization)
            {
                organisation = personOrg as IIfcOrganization;
            }
            if (personOrg is IIfcPersonAndOrganization)
            {
                person       = (personOrg as IIfcPersonAndOrganization).ThePerson;
                organisation = (personOrg as IIfcPersonAndOrganization).TheOrganization;
            }

            string email;
            string phone; // not used

            // priority goes to person
            if (person != null)
            {
                GetTelecom(person.Addresses, out email, out phone);
                if (email != null)
                {
                    return(email);
                }
            }
            if (organisation != null)
            {
                GetTelecom(organisation.Addresses, out email, out phone);
                if (email != null)
                {
                    return(email);
                }
            }
            return(DefaultUniqueEmail(personOrg));
        }
Esempio n. 3
0
        private void ConvertOrganisation(Contact target, IIfcOrganization ifcOrganization)
        {
            if (ifcOrganization.Addresses != null)
            {
                var telecom = ifcOrganization.Addresses.OfType <IIfcTelecomAddress>().FirstOrDefault(a => a.ElectronicMailAddresses.Any(e => !string.IsNullOrWhiteSpace(e)));
                var postal  = ifcOrganization.Addresses.OfType <IIfcPostalAddress>().FirstOrDefault();

                if (telecom != null)
                {
                    target.Email = telecom.ElectronicMailAddresses.FirstOrDefault();
                    target.Phone = telecom.TelephoneNumbers.FirstOrDefault();
                }

                if (postal != null)
                {
                    target.Department = postal.InternalLocation;
                    target.Street     = postal.AddressLines != null?postal.AddressLines.ToString() : null;

                    target.PostalBox   = postal.PostalBox;
                    target.Town        = postal.Town;
                    target.StateRegion = postal.Region;
                    target.PostalCode  = postal.PostalCode;
                }
            }
            if (ifcOrganization.Roles != null)
            {
                var roles = ifcOrganization.Roles;
                if (roles.Any())
                {
                    target.Categories = new List <Category>(roles.Count());
                    foreach (var role in roles)
                    {
                        target.Categories.Add(new Category {
                            Classification = "Role", Code = role.Role.ToString(), Description = role.Description
                        });
                    }
                }
            }

            target.Company = ifcOrganization.Name;
        }
        private void ConvertOrganisation(CobieContact target, IIfcOrganization ifcOrganization)
        {
            if (ifcOrganization.Addresses != null)
            {
                var telecom = ifcOrganization.Addresses.OfType <IIfcTelecomAddress>().FirstOrDefault(a => a.ElectronicMailAddresses.Any(e => !string.IsNullOrWhiteSpace(e)));
                var postal  = ifcOrganization.Addresses.OfType <IIfcPostalAddress>().FirstOrDefault();

                if (telecom != null)
                {
                    target.Email = telecom.ElectronicMailAddresses.FirstOrDefault();
                    target.Phone = telecom.TelephoneNumbers.FirstOrDefault();
                }

                if (postal != null)
                {
                    target.Department  = postal.InternalLocation;
                    target.Street      = postal.AddressLines != null && postal.AddressLines.Any()? string.Join(", ", postal.AddressLines) : null;
                    target.PostalBox   = postal.PostalBox;
                    target.Town        = postal.Town;
                    target.StateRegion = postal.Region;
                    target.PostalCode  = postal.PostalCode;
                }
            }
            if (ifcOrganization.Roles != null)
            {
                var role = ifcOrganization.Roles.FirstOrDefault();
                if (role != null)
                {
                    var cls = role.Role.ToString();
                    target.Category = Exchanger.TargetRepository.Instances.New <CobieRole>(r => r.Value = cls);
                }
            }

            if (string.IsNullOrWhiteSpace(target.Email))
            {
                target.Email = string.Format("unknown{0}@undefined.email", ifcOrganization.EntityLabel);
            }

            target.Company = ifcOrganization.Name;
        }
Esempio n. 5
0
        /// <summary>
        /// Get email address from IfcPerson
        /// </summary>
        /// <param name="ifcOrganization"></param>
        /// <param name="ifcPerson"></param>
        /// <returns></returns>
        public static string GetEmail(IIfcOrganization ifcOrganization, IIfcPerson ifcPerson)
        {
            var email  = "";
            var emails = Enumerable.Empty <IfcLabel>();

            if ((ifcPerson != null) && (ifcPerson.Addresses != null))
            {
                emails = ifcPerson
                         .Addresses.OfType <IfcTelecomAddress>()
                         .Select(address => address.ElectronicMailAddresses)
                         .Where(item => item != null).SelectMany(em => em)
                         .Where(em => !string.IsNullOrEmpty(em))
                         .ToList();
            }
            if (!emails.Any())
            {
                if ((ifcOrganization != null) && (ifcOrganization.Addresses != null))
                {
                    emails = ifcOrganization.Addresses.OfType <IfcTelecomAddress>().Select(address => address.ElectronicMailAddresses).Where(item => item != null).SelectMany(em => em).Where(em => !string.IsNullOrEmpty(em));
                }
            }


            //if still no email lets make one up
            if (emails.Any())
            {
                email = string.Join(" : ", emails);
            }
            else
            {
                var first        = "";
                var lastName     = "";
                var organization = "";
                if (ifcPerson != null)
                {
                    first    = ifcPerson.GivenName.ToString();
                    lastName = ifcPerson.FamilyName.ToString();
                }
                if (ifcOrganization != null)
                {
                    organization = ifcOrganization.Name.ToString();
                }
                var domType = "";
                if (!string.IsNullOrEmpty(first))
                {
                    var split = first.Split('.');
                    if (split.Length > 1)
                    {
                        first = split[0];                   //assume first
                    }
                }

                if (!string.IsNullOrEmpty(lastName))
                {
                    var split = lastName.Split('.');
                    if (split.Length > 1)
                    {
                        lastName = split.Last();                   //assume last
                    }
                }


                if (!string.IsNullOrEmpty(organization))
                {
                    var split = organization.Split('.');
                    var index = 1;
                    foreach (var item in split)
                    {
                        if (index == 1)
                        {
                            organization = item;       //first item always
                        }
                        else if (index < split.Length) //all the way up to the last item
                        {
                            organization += "." + item;
                        }
                        else
                        {
                            domType = "." + item; //last item assume domain type
                        }
                        index++;
                    }
                }

                email += (string.IsNullOrEmpty(first)) ? "unknown" : first;
                email += ".";
                email += (string.IsNullOrEmpty(lastName)) ? "unknown" : lastName;
                email += "@";
                email += (string.IsNullOrEmpty(organization)) ? "unknown" : organization;
                email += (string.IsNullOrEmpty(domType)) ? ".com" : domType;
                email  = email.Replace(" ", ""); //remove any spaces
            }

            return(email);
        }
Esempio n. 6
0
        private void ConvertOrganisation(IIfcOrganization ifcOrganization, CoBieLiteHelper helper)
        {
            if (ifcOrganization.Addresses != null)
            {
                var telecom             = ifcOrganization.Addresses.OfType <IIfcTelecomAddress>();
                var postal              = ifcOrganization.Addresses.OfType <IIfcPostalAddress>();
                var ifcTelecomAddresses = telecom as IIfcTelecomAddress[] ?? telecom.ToArray();
                if (ifcTelecomAddresses.Any())
                {
                    var emailAddresses = string.Join(";", ifcTelecomAddresses.SelectMany(t => t.ElectronicMailAddresses));
                    if (!string.IsNullOrWhiteSpace(emailAddresses))
                    {
                        ContactEmail = emailAddresses;
                    }
                    var phoneNums = string.Join(";", ifcTelecomAddresses.SelectMany(t => t.TelephoneNumbers));
                    if (!string.IsNullOrWhiteSpace(phoneNums))
                    {
                        ContactPhoneNumber = phoneNums;
                    }
                    var url = string.Join(";", ifcTelecomAddresses.Where(p => p.WWWHomePageURL.HasValue).SelectMany(p => p.WWWHomePageURL.ToString()));
                    if (!string.IsNullOrWhiteSpace(url))
                    {
                        ContactURL = url;
                    }
                }

                var ifcPostalAddresses = postal as IIfcPostalAddress[] ?? postal.ToArray();
                if (ifcPostalAddresses.Any())
                {
                    var deptNames = string.Join(";", ifcPostalAddresses.Where(p => p.InternalLocation.HasValue).SelectMany(p => p.InternalLocation.ToString()));
                    if (!string.IsNullOrWhiteSpace(deptNames))
                    {
                        ContactDepartmentName = deptNames;
                    }
                    var streetNames = string.Join(";", ifcPostalAddresses.Where(p => p.AddressLines != null).SelectMany(p => p.AddressLines.ToString()));
                    if (!string.IsNullOrWhiteSpace(streetNames))
                    {
                        ContactStreet = streetNames;
                    }
                    var postalBox = string.Join(";", ifcPostalAddresses.Where(p => p.PostalBox.HasValue).SelectMany(p => p.PostalBox.ToString()));
                    if (!string.IsNullOrWhiteSpace(postalBox))
                    {
                        ContactPostalBoxNumber = postalBox;
                    }
                    var town = string.Join(";", ifcPostalAddresses.Where(p => p.Town.HasValue).SelectMany(p => p.Town.ToString()));
                    if (!string.IsNullOrWhiteSpace(town))
                    {
                        ContactTownName = town;
                    }
                    var region = string.Join(";", ifcPostalAddresses.Where(p => p.Region.HasValue).SelectMany(p => p.Region.ToString()));
                    if (!string.IsNullOrWhiteSpace(region))
                    {
                        ContactRegionCode = region;
                    }
                    var postalCode = string.Join(";", ifcPostalAddresses.Where(p => p.PostalCode.HasValue).SelectMany(p => p.PostalCode.ToString()));
                    if (!string.IsNullOrWhiteSpace(postalCode))
                    {
                        ContactPostalCode = postalCode;
                    }
                }
            }
            if (ifcOrganization.Roles != null)
            {
                var roles = string.Join(";", ifcOrganization.Roles.Select(r => r.RoleString)); //deals with User defined roles
                if (!string.IsNullOrWhiteSpace(roles))
                {
                    ContactCategory = roles;
                }
            }

            ContactCompanyName = ifcOrganization.Name;
        }
        private void ConvertOrganisation(IIfcOrganization ifcOrganization, CoBieLiteUkHelper helper)
        {
            if (ifcOrganization.Addresses != null)
            {
                var telecom             = ifcOrganization.Addresses.OfType <IIfcTelecomAddress>();
                var postal              = ifcOrganization.Addresses.OfType <IIfcPostalAddress>();
                var ifcTelecomAddresses = telecom.ToArray();
                if (ifcTelecomAddresses.Any())
                {
                    var emailAddresses = string.Join(";", ifcTelecomAddresses.SelectMany(t => t.ElectronicMailAddresses));
                    if (!string.IsNullOrWhiteSpace(emailAddresses))
                    {
                        Email = emailAddresses;
                    }
                    var phoneNums = string.Join(";", ifcTelecomAddresses.SelectMany(t => t.TelephoneNumbers));
                    if (!string.IsNullOrWhiteSpace(phoneNums))
                    {
                        Phone = phoneNums;
                    }
                    //var url = string.Join(";", ifcTelecomAddresses.Where(p => p.WWWHomePageURL.HasValue).SelectMany(p => p.WWWHomePageURL.ToString()));
                    //if (!string.IsNullOrWhiteSpace(url))
                    //    URL= url;
                }

                var ifcPostalAddresses = postal.ToArray();
                if (ifcPostalAddresses.Any())
                {
                    var deptNames = string.Join(";", ifcPostalAddresses.Where(p => p.InternalLocation.HasValue).SelectMany(p => p.InternalLocation.ToString()));
                    if (!string.IsNullOrWhiteSpace(deptNames))
                    {
                        Department = deptNames;
                    }
                    var streetNames = string.Join(";", ifcPostalAddresses.Where(p => p.AddressLines != null).SelectMany(p => p.AddressLines.ToString()));
                    if (!string.IsNullOrWhiteSpace(streetNames))
                    {
                        Street = streetNames;
                    }
                    var postalBox = string.Join(";", ifcPostalAddresses.Where(p => p.PostalBox.HasValue).SelectMany(p => p.PostalBox.ToString()));
                    if (!string.IsNullOrWhiteSpace(postalBox))
                    {
                        PostalBox = postalBox;
                    }
                    var town = string.Join(";", ifcPostalAddresses.Where(p => p.Town.HasValue).SelectMany(p => p.Town.ToString()));
                    if (!string.IsNullOrWhiteSpace(town))
                    {
                        Town = town;
                    }
                    var region = string.Join(";", ifcPostalAddresses.Where(p => p.Region.HasValue).SelectMany(p => p.Region.ToString()));
                    if (!string.IsNullOrWhiteSpace(region))
                    {
                        StateRegion = region;
                    }
                    var postalCode = string.Join(";", ifcPostalAddresses.Where(p => p.PostalCode.HasValue).SelectMany(p => p.PostalCode.ToString()));
                    if (!string.IsNullOrWhiteSpace(postalCode))
                    {
                        PostalCode = postalCode;
                    }
                }
            }
            if (ifcOrganization.Roles != null)
            {
                var roles = ifcOrganization.Roles;
                if (roles.Any())
                {
                    Categories = new List <Category>(roles.Count());
                    foreach (var role in roles)
                    {
                        Categories.Add(new Category {
                            Classification = "Role", Code = role.Role.ToString(), Description = role.Description
                        });
                    }
                }
            }

            Company = ifcOrganization.Name;
        }
        internal static void ConvertOrganisation(Contact target, IIfcOrganization ifcOrganization)
        {
            // specific fields (different from ifcperson)
            target.Company = ifcOrganization.Name;

            // ========================= postal address
            //
            string department;
            string street;
            string postalBox;
            string town;
            string stateRegion;
            string postalCode;

            var c = ContactFunctions.GetPostal(ifcOrganization.Addresses,
                                               out department,
                                               out street,
                                               out postalBox,
                                               out town,
                                               out stateRegion,
                                               out postalCode
                                               );

            if (c > 0)
            {
                if (department != null)
                {
                    target.Department = department;
                }
                if (street != null)
                {
                    target.Street = street;
                }
                if (postalBox != null)
                {
                    target.PostalBox = postalBox;
                }
                if (town != null)
                {
                    target.Town = town;
                }
                if (stateRegion != null)
                {
                    target.StateRegion = stateRegion;
                }
                if (postalCode != null)
                {
                    target.PostalCode = postalCode;
                }
            }

            // ========================= telecom address
            //

            string email;
            string phone;

            var c2 = ContactFunctions.GetTelecom(ifcOrganization.Addresses,
                                                 out email,
                                                 out phone
                                                 );

            if (c2 > 0)
            {
                if (email != null)
                {
                    target.Email = email;
                }
                if (phone != null)
                {
                    target.Phone = phone;
                }
            }

            // ========================= roles are used for classification
            //
            if (ifcOrganization.Roles == null)
            {
                return;
            }
            var roles = ifcOrganization.Roles;

            if (!roles.Any())
            {
                return;
            }
            if (target.Categories == null)
            {
                target.Categories = new List <Category>(roles.Count());
            }
            foreach (var role in roles)
            {
                target.Categories.Add(new Category
                {
                    Classification = "Role",
                    Code           = role.Role.ToString(),
                    Description    = role.Description
                });
            }
        }