예제 #1
0
        protected internal async override Task <bool> RemoveAsync(PublishedItem publishedItem)
        {
            var id = ParseId(publishedItem);

            if (id == null)
            {
                return(false);
            }

            id = (long)id;

            switch (publishedItem.Type)
            {
            case ExportType.MarketItem:
                return(await Api.Markets.DeleteAsync(-GroupId, (long)id));

            case ExportType.PhotoAlbum:
                return(await Api.Photo.DeleteAlbumAsync((long)id, GroupId));

            case ExportType.Post:
                return(await Api.Wall.DeleteAsync(-GroupId, (long)id));

            default:
                throw new ArgumentException($"The type {publishedItem.Type} not supported in VKPublisher");
            }
        }
예제 #2
0
        public void UmbracoPickerProcessesMappedContent()
        {
            PublishedItem result = this.support.Content.MapTo <PublishedItem>();

            Assert.NotNull(result);
            Assert.IsAssignableFrom <PublishedItem>(result.Child);
        }
예제 #3
0
        public void UmbracoPickerProcessesIPublishedContent()
        {
            PublishedItem result = this.support.Content.MapTo <PublishedItem>();

            Assert.NotNull(result);
            Assert.IsAssignableFrom <IPublishedContent>(result.PublishedInterfaceContent);
        }
        public void MapperReturnsImageCropDataSet()
        {
            PublishedItem result = this.support.Content.MapTo <PublishedItem>();

            Assert.NotNull(result);
            Assert.NotNull(result.Image);
            Assert.Equal(this.support.Content.GetPropertyValue(nameof(PublishedItem.Image)), result.Image);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            PublishedItem publishedItem = db.PublishedItems.Find(id);

            db.PublishedItems.Remove(publishedItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #6
0
        private long?ParseId(PublishedItem publishedItem)
        {
            if (long.TryParse(publishedItem.Identifier, out long result))
            {
                return(result);
            }

            return(null);
        }
예제 #7
0
        public void MapperCanMapRelatedLinks()
        {
            MockPublishedContent content = this.support.Content;

            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.NotNull(result.RelatedLink);
            Assert.NotNull(result.RelatedLinks);
            Assert.True(result.RelatedLinks.GetType().IsEnumerableOfType(typeof(RelatedLink)));
        }
예제 #8
0
        public FastPropertyAccessorTests()
        {
            this.item = new PublishedItem
            {
                Id         = 1234,
                Name       = "Foo",
                CreateDate = DateTime.MaxValue
            };

            this.accessor = new FastPropertyAccessor(typeof(PublishedItem));
        }
 public ActionResult Edit([Bind(Include = "Id,UserId,ItemId,Price,Discount")] PublishedItem publishedItem)
 {
     if (ModelState.IsValid)
     {
         db.Entry(publishedItem).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ItemId = new SelectList(db.Items, "Id", "ItemName", publishedItem.ItemId);
     ViewBag.UserId = new SelectList(db.ServiceProviders, "Id", "Username", publishedItem.UserId);
     return(View(publishedItem));
 }
예제 #10
0
        public void MapperCanMapBaseAlternativeProperties()
        {
            var created = new DateTime(2017, 1, 1);

            MockPublishedContent content = this.support.Content;

            content.CreateDate = created;

            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.Equal(created, result.CreateDate);
            Assert.Equal(created, result.UpdateDate);
        }
        // GET: PublishedItems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PublishedItem publishedItem = db.PublishedItems.Find(id);

            if (publishedItem == null)
            {
                return(HttpNotFound());
            }
            return(View(publishedItem));
        }
예제 #12
0
        protected override async Task <IList <PublishedItem> > PublishAsync(IEnumerable <VKExportItem> exportItems)
        {
            var market   = GetSingleOfType(ExportType.MarketItem);
            var album    = GetSingleOfType(ExportType.PhotoAlbum);
            var wallPost = GetSingleOfType(ExportType.Post);

            PublishedItem publishedAlbum = null;

            if (album != null)
            {
                var albumId = await CreateAlbumAsync(album.Title, album.Description);

                publishedAlbum = CreatePublishedItem(album, albumId);
                MarkLinksAsNotNull(publishedAlbum);
            }

            PublishedItem publishedMarketItem = null;

            if (market != null)
            {
                publishedMarketItem = await AddMarketItemAsync(market);

                MarkLinksAsNotNull(publishedMarketItem);
            }

            // Load photos in album now, because it may have been linked with market item.
            if (album != null)
            {
                publishedAlbum = await AddAlbumAsync(album, publishedAlbum);
            }

            PublishedItem publishedWallPost = null;

            if (wallPost != null)
            {
                publishedWallPost = await WallPostAsync(wallPost);
            }


            VKExportItem GetSingleOfType(ExportType type) => exportItems.SingleOrDefault(item => item.ExportType == type);

            return(new[] { publishedWallPost, publishedMarketItem, publishedAlbum }.Where(pi => pi != null).ToArray());

            void MarkLinksAsNotNull(PublishedItem published)
            {
                exportItems.SelectMany(ei => ei.Attachments.Where(a => a.ExportType == published.Type && a.IsNull))
                .ToList()
                .ForEach(i => i.PublishedItem = published);
            }
        }
예제 #13
0
        public async Task <bool> RemoveAsync(PublishedItem publishedItem)
        {
            var published = (publishedItem as DbPublishedItem) ??
                            (await context?.PublishedItems
                             .Where(pi => pi.SubjectId == publishedItem.SubjectId)
                             .ToArrayAsync())
                            .SingleOrDefault(db => db.Equals(publishedItem));

            if (published != null)
            {
                context.PublishedItems.Remove(published);
            }

            return(published != null);
        }
예제 #14
0
        public void MapperReturnsCorrectEnumFromString()
        {
            const PlaceOrder placeOrder = PlaceOrder.Fourth;

            MockPublishedContent content = this.support.Content;

            content.Properties = new List <IPublishedProperty>
            {
                new MockPublishedContentProperty(nameof(PublishedItem.PlaceOrder), placeOrder.ToString())
            };

            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.Equal(placeOrder, result.PlaceOrder);
        }
예제 #15
0
        public void MapperReturnsDefaultEnum()
        {
            const PlaceOrder placeOrder = PlaceOrder.Fourth;

            MockPublishedContent content = this.support.Content;

            content.Properties = new List <IPublishedProperty>
            {
                new MockPublishedContentProperty(nameof(PublishedItem.PlaceOrder), null)
            };

            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.NotEqual(placeOrder, result.PlaceOrder);
            Assert.Equal(default(PlaceOrder), result.PlaceOrder);
        }
        // GET: PublishedItems/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PublishedItem publishedItem = db.PublishedItems.Find(id);

            if (publishedItem == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ItemId = new SelectList(db.Items, "Id", "ItemName", publishedItem.ItemId);
            ViewBag.UserId = new SelectList(db.ServiceProviders, "Id", "Username", publishedItem.UserId);
            return(View(publishedItem));
        }
예제 #17
0
        protected override async Task <PublishedItem> PublishAsync(InstaExportItem exportItem)
        {
            HandleImages(exportItem);

            var carouselImages = new List <System.Drawing.Image> {
                exportItem.Cover
            };

            carouselImages.AddRange(exportItem.Photos
                                    .Skip(1)
                                    .Take(CarouselPhotosCount - 1));
            try
            {
                var album = carouselImages.Select(photo =>
                {
                    return(new InstaImage
                    {
                        Height = 0,
                        Width = 0,
                        URI = ImageToUrlConverter.Convert(photo)
                    });
                })
                            .Distinct()
                            .ToArray();

                var result = await InstaApi.UploadPhotosAlbumAsync(album, exportItem.Description, exportItem.Location.InstaLocation);

                if (!result.Succeeded)
                {
                    throw new Exception(result.Info.Message);
                }

                var postUrl = CreatePostUrlByUrlSegment(result.Value.Code);

                var publishedItem = new PublishedItem(exportItem.Subject.SubjectId, exportItem.ExportType, result.Value.Pk, postUrl);
                OnItemPublished(publishedItem);

                return(publishedItem);
            }
            finally
            {
                ImageToUrlConverter.DoAfterImagesLoaded();
            }
        }
예제 #18
0
        public void MapperCanMapBaseProperties()
        {
            const int    id      = 999;
            const string name    = "Foo";
            var          created = new DateTime(2017, 1, 1);

            MockPublishedContent content = this.support.Content;

            content.Id         = id;
            content.Name       = name;
            content.CreateDate = created;


            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.Equal(id, result.Id);
            Assert.Equal(name, result.Name);
            Assert.Equal(created, result.CreateDate);
        }
예제 #19
0
        public void MapperReturnsDefaultProperties()
        {
            const int    id      = default(int);
            const string name    = default(string);
            var          created = default(DateTime);
            var          updated = default(DateTime);

            MockPublishedContent content = this.support.Content;

            content.Id         = id;
            content.Name       = name;
            content.CreateDate = created;

            PublishedItem result = content.MapTo <PublishedItem>();

            Assert.Equal(id, result.Id);
            Assert.Equal(name, result.Name);
            Assert.Equal(created, result.CreateDate);
            Assert.Equal(updated, result.UpdateDate);
        }
        public ActionResult Create(PublishedItem publishedItem)
        {
            if (ModelState.IsValid)
            {
                db.PublishedItems.Add(publishedItem);
                try
                {
                    db.SaveChanges();
                }
                catch (SqlException e)
                {
                    throw e;
                }

                return(RedirectToAction("Index"));
            }

            ViewBag.ItemId = new SelectList(db.Items, "Id", "ItemName", publishedItem.ItemId);
            ViewBag.UserId = new SelectList(db.ServiceProviders, "Id", "Username", publishedItem.UserId);
            return(View(publishedItem));
        }
예제 #21
0
파일: Attachment.cs 프로젝트: q2een/InvEx
 public Attachment(ExportType exportType, AttachmentType attachmentType, PublishedItem publishedItem)
     : this(exportType, attachmentType) => PublishedItem = publishedItem;
예제 #22
0
        protected override Task <bool> RemoveAsync(PublishedItem publishedItem)
        {
            Debug.WriteLine("RemoveAsync");

            return(new Task <bool>(() => false));
        }
예제 #23
0
        protected virtual async Task <PublishedItem> AddAlbumAsync(VKExportItem exportItem, PublishedItem publishedAlbum = null)
        {
            exportItem.Description += GetAttachmentsLinks(exportItem);

            long?albumId = ParseId(publishedAlbum);

            if (albumId == null)
            {
                albumId = await CreateAlbumAsync(exportItem.Title, exportItem.Description);
            }
            else
            {
                await EditAlbumAsync((ulong)albumId, exportItem.Title, exportItem.Description);
            }

            HandleImages(exportItem);

            var uploadServer = await Api.Photo.GetUploadServerAsync((long)albumId, GroupId);

            // Main album photo will be uploaded last.
            var responses = await UploadImagesAsync(uploadServer.UploadUrl, exportItem.Photos.Concat(new[] { exportItem.Cover }), UploadPhotosLimit);

            Photo mainPhoto = null;

            exportItem.Caption += GetAttachmentsLinks(exportItem);

            foreach (var response in responses)
            {
                var uploadedPhotos = await Api.Photo.SaveAsync(new PhotoSaveParams()
                {
                    AlbumId          = albumId,
                    GroupId          = GroupId,
                    Caption          = exportItem.Caption,
                    SaveFileResponse = response
                });

                if (response == responses.Last())
                {
                    mainPhoto = uploadedPhotos.LastOrDefault();
                }
            }

            if (mainPhoto != null)
            {
                await Api.Photo.MakeCoverAsync((ulong)mainPhoto.Id, -GroupId, albumId);
            }

            return(RiseItemPublishedEvent(exportItem, (long)albumId));
        }
예제 #24
0
        protected internal override async Task <bool> RemoveAsync(PublishedItem publishedItem)
        {
            var result = await InstaApi.DeleteMediaAsync(publishedItem.Identifier, InstaMediaType.Carousel);

            return(result.Succeeded);
        }
예제 #25
0
 public PublishedItemInfo(PublishedItem publishedItem, PublisherInfo publisherData)
 {
     PublishedItem = publishedItem;
     PublisherData = publisherData;
 }
예제 #26
0
 public void Add(PublishedItem publishedItem)
 {
     context.PublishedItems.Add(new DbPublishedItem(publishedItem));
 }
예제 #27
0
 private void Exporter_ItemPublished(object sender, PublishedItem e) => view.MarkAsPublished(new PublishedItemInfo(e, publishersInfo[e.Publisher]));