private void ImportAvatar(IImportExecuteContext context, ImportRow <Customer> row)
        {
            var urlOrPath = row.GetDataValue <string>("AvatarPictureUrl");

            if (urlOrPath.IsEmpty())
            {
                return;
            }

            Picture picture         = null;
            var     equalPictureId  = 0;
            var     currentPictures = new List <Picture>();
            var     seoName         = _pictureService.GetPictureSeName(row.EntityDisplayName);
            var     image           = CreateDownloadImage(urlOrPath, seoName, 1);

            if (image == null)
            {
                return;
            }

            if (image.Url.HasValue() && !image.Success.HasValue)
            {
                AsyncRunner.RunSync(() => _fileDownloadManager.DownloadAsync(DownloaderContext, new FileDownloadManagerItem[] { image }));
            }

            if ((image.Success ?? false) && File.Exists(image.Path))
            {
                Succeeded(image);
                var pictureBinary = File.ReadAllBytes(image.Path);

                if (pictureBinary != null && pictureBinary.Length > 0)
                {
                    var currentPictureId = row.Entity.GetAttribute <int>(SystemCustomerAttributeNames.AvatarPictureId);
                    if (currentPictureId != 0 && (picture = _pictureRepository.GetById(currentPictureId)) != null)
                    {
                        currentPictures.Add(picture);
                    }

                    pictureBinary = _pictureService.ValidatePicture(pictureBinary);
                    pictureBinary = _pictureService.FindEqualPicture(pictureBinary, currentPictures, out equalPictureId);

                    if (pictureBinary != null && pictureBinary.Length > 0)
                    {
                        if ((picture = _pictureService.InsertPicture(pictureBinary, image.MimeType, seoName, true, false, false)) != null)
                        {
                            _pictureRepository.Context.SaveChanges();

                            _genericAttributeService.SaveAttribute(row.Entity.Id, SystemCustomerAttributeNames.AvatarPictureId, _attributeKeyGroup, picture.Id.ToString());
                        }
                    }
                    else
                    {
                        context.Result.AddInfo("Found equal picture in data store. Skipping field.", row.GetRowInfo(), "AvatarPictureUrl");
                    }
                }
            }
            else
            {
                context.Result.AddInfo("Download of an image failed.", row.GetRowInfo(), "AvatarPictureUrl");
            }
        }
Beispiel #2
0
 private void SaveAttribute <TPropType>(ImportRow <Customer> row, string key)
 {
     SaveAttribute(row, key, row.GetDataValue <TPropType>(key));
 }
 private void SaveAttribute(ImportRow <Customer> row, string key)
 {
     _genericAttributeService.SaveAttribute(row.Entity.Id, key, _attributeKeyGroup, row.GetDataValue <string>(key));
 }