public IActionResult Edit(GalleryItemViewModel galvm)
        {
            if (ModelState.IsValid)
            {
                GalleryItem gallery = galleryItemService.GetGalleryItem(galvm.Id);
                gallery.Title        = galvm.Title;
                gallery.Description  = galvm.Description;
                gallery.Position     = galleryItemService.CountGalleryItem() + 1;
                gallery.AddedBy      = galvm.AddedBy;
                gallery.GalleryId    = galvm.GalleryId;
                gallery.AddedDate    = galvm.AddedDate;
                gallery.ModifiedBy   = User.Identity.Name ?? "username";
                gallery.ModifiedDate = DateTime.Now;
                gallery.Video        = galvm.Video;
                gallery.Photo        = galvm.Photo;
                gallery.Meta1        = galvm.Meta1;

                galleryItemService.UpdateGalleryItem(gallery);
                galleryItemService.SaveGalleryItem();
                galleryItemService.UpdateCategories(gallery.Id, galvm.categoriesHidden);
                return(RedirectToAction("Index"));
            }
            var galleryR = galleryItemService.GetGalleryItem(galvm.Id);

            ViewBag.CategoryList = galleryItemCategoryService.GetGalleryItemCategories();
            ViewBag.CheckList    = galleryR.GalleryItemGalleryItemCategories;
            ViewBag.GalleryList  = new SelectList(galleryService.GetGalleries(), "Id", "Name");
            return(View(galvm));
        }
        public IActionResult Create()
        {
            ViewBag.CategoryList = galleryItemCategoryService.GetGalleryItemCategories();
            ViewBag.GalleryList  = new SelectList(galleryService.GetGalleries(), "Id", "Name");
            var galleryItem = new GalleryItemViewModel();

            return(View(galleryItem));
        }
示例#3
0
        public GalleryItemPage(GalleryItemViewModel viewModel)
        {
            InitializeComponent();
            BindingContext = viewModel;

            Browser.IsVisible = false;
            Browser.Source    = new Uri("https://www.youtube.com/embed/" + viewModel.Item.VideoId);
            Browser.GoForward();
        }
        async Task PrepareViewModels(GalleryItemViewModel vm)
        {
            ViewModel = vm;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ViewModel)));
            Images.Clear();
            Comments.Clear();
            Tags.Clear();
            TagBarVisibility = Visibility.Collapsed;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TagBarVisibility)));

            if (vm.IsAlbum)
            {
                var album = vm.Item as GalleryAlbum;
                foreach (var i in album.Images)
                {
                    Images.Add(new ImageViewModel(i));
                }
            }
            else
            {
                Images.Add(new ImageViewModel(vm.DisplayImage));
            }

            foreach (var t in vm.Tags)
            {
                Tags.Add(new TagViewModel(t));
            }

            if (Tags.Count > 0)
            {
                TagBarVisibility = Visibility.Visible;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TagBarVisibility)));
            }

            // The front page model only contains the first 3 images. If there's more, we would need to request them.
            // Turns out not always.
            if (vm.IsAlbum && vm.ImageCount > Images.Count)
            {
                var fullAlbum = await ApiClient.Client.GetGalleryAlbumAsync(vm.Id);

                for (int i = Images.Count; i < fullAlbum.ImageCount; i++)
                {
                    Images.Add(new ImageViewModel(fullAlbum.Images[i]));
                }
            }

            var comments = await ApiClient.Client.GetGalleryCommentsAsync(vm.Id);

            Comments = new ObservableCollection <CommentViewModel>(CommentViewModelFactory.BuildCommentViewModels(comments));
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Comments)));
        }
        public void ThrowInvalidOperationException_WhenModelStateIsInvalid()
        {
            // Arrange
            var galleryServiceMock = new Mock <IGalleryImageService>();
            var userServiceMock    = new Mock <IUserService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new GalleryController(galleryServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            controller.ViewData.ModelState.AddModelError("asdasda", "asdasdasd");

            var model = new GalleryItemViewModel();

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => controller.Comment(Guid.NewGuid(), model));
        }
 protected override async void OnNavigatedTo(NavigationEventArgs e)
 {
     base.OnNavigatedTo(e);
     if (e.Parameter is GalleryItemDetailsNavigationParameter navParams)
     {
         GalleryDetailsSidebarItemSource itemSource = new GalleryDetailsSidebarItemSource(navParams.GalleryItems);
         GalleryVm = new IncrementalLoadingCollection <GalleryDetailsSidebarItemSource, GalleryItemViewModel>(itemSource);
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GalleryVm)));
         await PrepareViewModels(navParams.Item);
     }
     else if (e.Parameter is string id && !string.IsNullOrWhiteSpace(id))
     {
         GalleryItemViewModel            vm         = new GalleryItemViewModel(await ApiClient.Client.GetGalleryItemAsync(id));
         GalleryDetailsSidebarItemSource itemSource = new GalleryDetailsSidebarItemSource(null);
         GalleryVm = new IncrementalLoadingCollection <GalleryDetailsSidebarItemSource, GalleryItemViewModel>(itemSource);
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GalleryVm)));
         await PrepareViewModels(vm);
     }
 }
示例#7
0
        public ActionResult Comment(Guid itemId, GalleryItemViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                throw new InvalidOperationException();
            }

            var userId = this.User.Identity.GetUserId();

            this.galleryService.AddComment(userId, model.NewCommentContent, itemId);

            var image = this.galleryService.GetGalleryImageById(itemId);

            model = this.mappingService.Map <GalleryItemViewModel>(image);
            var user = this.userService.GetById(userId);

            model.CurrentUser    = user;
            model.ProfilePicSize = AppConstants.GalleryProfilePicSize;

            return(this.PartialView("_CommentBoxPartial", model));
        }
示例#8
0
        public void CallGetGalleryImageById_WhenParamsAreValid()
        {
            // Arrange
            var galleryServiceMock = new Mock <IGalleryImageService>();
            var userServiceMock    = new Mock <IUserService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new GalleryController(galleryServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var image = new GalleryImage();

            galleryServiceMock.Setup(x => x.GetGalleryImageById(It.IsAny <Guid>())).Returns(image);

            var model = new GalleryItemViewModel();

            mappingServiceMock.Setup(x => x.Map <GalleryItemViewModel>(image)).Returns(model);
            var ids = new Tuple <Guid, Guid>(Guid.NewGuid(), Guid.NewGuid());

            galleryServiceMock.Setup(x => x.GetSurroundingImageIds(It.IsAny <GalleryImage>())).Returns(ids);

            var controllerContext = new Mock <ControllerContext>();
            var user = new Mock <IPrincipal>();

            user.Setup(p => p.IsInRole("admin")).Returns(true);
            user.SetupGet(x => x.Identity.Name).Returns("username");
            controllerContext.SetupGet(x => x.HttpContext.User).Returns(user.Object);
            controller.ControllerContext = controllerContext.Object;

            var userModel = new User();

            userServiceMock.Setup(x => x.GetById(It.IsAny <string>())).Returns(userModel);
            galleryServiceMock.Setup(x => x.IsImageLiked(It.IsAny <string>(), It.IsAny <Guid>())).Returns(true);

            // Act
            controller.PopulateModal(Guid.NewGuid());

            // Assert
            galleryServiceMock.Verify(x => x.GetGalleryImageById(It.IsAny <Guid>()), Times.Once);
        }
        public void RenderPartialViewWithCorrectModel_WhenParamsAreValid()
        {
            // Arrange
            var galleryServiceMock = new Mock <IGalleryImageService>();
            var userServiceMock    = new Mock <IUserService>();
            var mappingServiceMock = new Mock <IMappingService>();
            var utilsMock          = new Mock <IUtilitiesService>();

            var controller = new GalleryController(galleryServiceMock.Object, mappingServiceMock.Object, userServiceMock.Object, utilsMock.Object);

            var controllerContext = new Mock <ControllerContext>();
            var user = new Mock <IPrincipal>();

            user.Setup(p => p.IsInRole("admin")).Returns(true);
            user.SetupGet(x => x.Identity.Name).Returns("username");
            controllerContext.SetupGet(x => x.HttpContext.User).Returns(user.Object);
            controller.ControllerContext = controllerContext.Object;

            galleryServiceMock.Setup(x => x.AddComment(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>()));

            var image = new GalleryImage();

            galleryServiceMock.Setup(x => x.GetGalleryImageById(It.IsAny <Guid>())).Returns(image);

            var model = new GalleryItemViewModel();

            mappingServiceMock.Setup(x => x.Map <GalleryItemViewModel>(image)).Returns(model);

            var userModel = new User();

            userServiceMock.Setup(x => x.GetById(It.IsAny <string>())).Returns(userModel);

            // Act & Assert
            controller.WithCallTo(x => x.Comment(Guid.NewGuid(), model))
            .ShouldRenderPartialView("_CommentBoxPartial")
            .WithModel <GalleryItemViewModel>(x => x == model);
        }
示例#10
0
        public IActionResult Edit(long id)
        {
            GalleryItem gallery = galleryItemService.GetGalleryItem(id);

            ViewBag.CategoryList = galleryItemCategoryService.GetGalleryItemCategories();
            ViewBag.CheckList    = gallery.GalleryItemGalleryItemCategories;
            ViewBag.GalleryList  = new SelectList(galleryService.GetGalleries(), "Id", "Name");
            GalleryItemViewModel galvm = new GalleryItemViewModel();

            galvm.Photo        = gallery.Photo;
            galvm.GalleryId    = gallery.GalleryId;
            galvm.IsPublished  = gallery.IsPublished;
            galvm.Description  = gallery.Description;
            galvm.Position     = gallery.Position;
            galvm.Meta1        = gallery.Meta1;
            galvm.Title        = gallery.Title;
            galvm.Video        = gallery.Video;
            galvm.AddedBy      = gallery.AddedBy;
            galvm.AddedDate    = gallery.AddedDate;
            galvm.ModifiedBy   = gallery.ModifiedBy;
            galvm.ModifiedDate = gallery.ModifiedDate;
            ViewBag.FileName   = gallery.Photo ?? gallery.Video;
            return(View(galvm));
        }
 public GalleryItemDetailsNavigationParameter(GalleryItemViewModel item, IncrementalItemsSource <GalleryItemViewModel> galleryItems)
 {
     Item         = item;
     GalleryItems = galleryItems;
 }