Ejemplo n.º 1
0
        public bool Evaluate(UserConnection userConnection, AdElement element, Entity relatedEntity, Entity handler)
        {
            _logger.Info("Добавляем средство связи " + handler.GetTypedColumnValue <string>("NavAdAttributeName"));

            string adValue = AdAttributesHelper.GetAdValue(element, (NavAdAttributesHandlers)handler);

            var  contact             = (Contact)relatedEntity;
            Guid communicationTypeId = GetCommunicationType(userConnection, handler.GetTypedColumnValue <string>("NavAdAttributeName"));

            ContactCommunication[] contactCommunications = GetContactCommunications(userConnection, contact, communicationTypeId);

            if (adValue != null)
            {
                char[] separator           = Core.Configuration.SysSettings.GetValue(userConnection.AppConnection.SystemUserConnection, "ContactCommunicationSeparator").ToString().ToArray();
                var    communicationValues = adValue.Split(separator).Select(s => s.Trim()).ToList();

                // обрабатываем уже существующие в bpm средства связи
                foreach (var cm in contactCommunications)
                {
                    if (!communicationValues.Contains(cm.Number))
                    {
                        cm.Delete();
                    }
                    else
                    {
                        communicationValues.Remove(cm.Number);
                    }
                }

                // создаем отсутствующие записи
                foreach (var cv in communicationValues)
                {
                    var contactCommunication = new ContactCommunication(userConnection);
                    contactCommunication.UseAdminRights = false;

                    contactCommunication.SetDefColumnValues();
                    contactCommunication.ContactId               = contact.Id;
                    contactCommunication.CommunicationTypeId     = communicationTypeId;
                    contactCommunication.NavSynchronizedWithLDAP = true;

                    contactCommunication.Number = cv;
                    contactCommunication.Save(false);
                }
            }
            else
            {
                foreach (var cm in contactCommunications)
                {
                    cm.Delete();
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        private ContactCommunication[] GetContactCommunications(UserConnection userConnection, Contact contact, Guid communicationTypeId)
        {
            var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "ContactCommunication");

            esq.AddAllSchemaColumns();
            esq.UseAdminRights = false;
            esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Contact", contact.Id));
            esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "CommunicationType", communicationTypeId));
            esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "NavSynchronizedWithLDAP", true));

            var collection = esq.GetEntityCollection(userConnection);

            ContactCommunication[] contactCommunications = new ContactCommunication[0];

            if (collection.Count > 0)
            {
                contactCommunications = collection.Select(e => { e.UseAdminRights = false; return((ContactCommunication)e); }).ToArray();
            }

            return(contactCommunications);
        }
 public ContactCommunication(Terrasoft.Configuration.ContactCommunication source)
     : base(source)
 {
     this.CopyEntityLookupProperties(source);
 }
Ejemplo n.º 4
0
 public ContactCommunication(ContactCommunication source)
     : base(source)
 {
 }