Exemplo n.º 1
0
        public bool Evaluate(UserConnection userConnection, AdElement element, Entity relatedEntity, Entity handler)
        {
            _logger.Info("Получаем из элемента AD поток байтов из атрибута, указанном в записи обработчика в БД " + handler.GetTypedColumnValue <string>("NavAdAttributeName"));
            byte[] adValue = null;
            // проверяем, что из AD мы получили значение нужного атрибута
            if (element.Attributes.ContainsKey(handler.GetTypedColumnValue <string>("NavAdAttributeName")))
            {
                adValue = element.Attributes[handler.GetTypedColumnValue <string>("NavAdAttributeName")].BinaryItems[0];
            }
            else
            {
                _logger.Warn("В элементе AD не найден атрибут " + handler.GetTypedColumnValue <string>("NavAdAttributeName"));
            }

            _logger.Info("Очищаем поле " + relatedEntity.Schema.Caption + "." + handler.GetTypedColumnValue <string>("NavEntityFieldName") + " для удаления старого изображения");

            relatedEntity.SetColumnValue(handler.GetTypedColumnValue <string>("NavEntityFieldName") + "Id", null);

            _logger.Info("Сохраняем запись");
            relatedEntity.Save(false);

            if (adValue != null)
            {
                _logger.Info("Записываем в поле " + relatedEntity.Schema.Caption + "." + handler.GetTypedColumnValue <string>("NavEntityFieldName") + " файл с изображением");

                var image = new SysImage(userConnection);
                image.SetDefColumnValues();
                image.Name     = "Photo.bmp";
                image.MimeType = "image/bmp";
                image.SetColumnValue("Data", adValue);
                image.Save(false);

                relatedEntity.SetColumnValue(handler.GetTypedColumnValue <string>("NavEntityFieldName") + "Id", image.PrimaryColumnValue);

                _logger.Info("Сохраняем запись");
                relatedEntity.Save(false);
            }


            return(true);
        }
 public SysImage(SysImage source)
     : base(source)
 {
 }
 public SysImage(Terrasoft.Configuration.SysImage source)
     : base(source)
 {
     this.CopyEntityLookupProperties(source);
 }