Пример #1
0
        public async Task <IActionResult> ImageDetails(int id)
        {
            var image = await _dataAccess.GetImage(id);

            if (image == null)
            {
                return(NotFound("Image not found"));
            }

            var    claims = User.Claims.ToList();
            string subId  = claims.FirstOrDefault(x => x.Type == Consts.Claims.Sub)?.Value;

            bool isAdmin = await _aadHelper.IsAdminBySub(subId);

            var vm = new ImageDetailsViewModel()
            {
                Id           = image.ImageId ?? 0,
                IsAdmin      = isAdmin,
                ThumbnailUrl = string.IsNullOrWhiteSpace(image.ThumbnailRelativePath) ? null : _storageAccess.GetUrlForRelativePath(image.ThumbnailRelativePath),
                Url          = _storageAccess.GetUrlForRelativePath(image.RelativePath),
                Allowed      = image.Allowed
            };

            return(View(vm));
        }
Пример #2
0
        // GET: /Store/Browse
        public ActionResult Details(int albumId, int?imageId = null, int?processedImageId = null,
                                    int?conditionId          = null, int?featureId = null)
        {
            string message = HttpUtility.HtmlEncode("Store.Browse, Album = " + albumId);

            tblAlbum          selectedAlbum          = null;
            tblImage          selectedMasterImage    = null;
            tblProcessedImage selectedProcessedImage = null;

            selectedAlbum = imageDB.tblAlbums.SingleOrDefault(a => a.ALB_IDPkey == albumId);
            var query = imageDB.tblImages.Where(i => i.ALB_IDFkey == albumId);


            List <tblImage> images = query.ToList();

            if (imageId != null)
            {
                selectedMasterImage = images.SingleOrDefault(i => i.IMG_IDPkey == imageId);
            }
            else
            {
                selectedMasterImage = images.FirstOrDefault();
            }

            int selectedIndex = images.IndexOf(selectedMasterImage);
            int nextIndex     = images.Count() - 1;
            int previousIndex = 0;

            if (images.Count() - 1 > selectedIndex)
            {
                nextIndex = selectedIndex + 1;
            }

            if (selectedIndex - 1 >= 0)
            {
                previousIndex = selectedIndex - 1;
            }

            if (processedImageId != null)
            {
                selectedProcessedImage = selectedMasterImage.tblProcessedImages.SingleOrDefault(p => p.PIM_IDPkey == processedImageId.Value);
            }
            else
            {
                selectedProcessedImage = selectedMasterImage.tblProcessedImages.SingleOrDefault(p => p.tblFilter.FLT_Name == "JPEG");
            }

            var viewModel = new ImageDetailsViewModel
            {
                Image               = selectedMasterImage,
                NextImage           = images.ElementAt(nextIndex),
                PreviousImage       = images.ElementAt(previousIndex),
                ProcessedImage      = selectedProcessedImage,
                AvailableConditions = selectedAlbum.tblImages.Select(i => i.tblEnvironmentalCondition).Distinct().ToList(),
                AvailableFeatures   = selectedAlbum.tblImages.Select(i => i.tblFeature).Distinct().ToList()
            };

            return(this.View(viewModel));
        }
        public async void OnLike(object sender, EventArgs e)
        {
            ImageDetailsViewModel vm = this.BindingContext as ImageDetailsViewModel;

            try {
                await vm.LikeImageAsync();
                await DisplayAlert("Like sent!", "Like was sent to the image author", "OK");
            }
            catch (Exception) {
                await DisplayAlert("Error", "'Like' functionality is not available at the moment. Please try again later", "OK");
            }
        }
        public async void OnLike(object sender, EventArgs e)
        {
            ImageDetailsViewModel vm = this.BindingContext as ImageDetailsViewModel;

            if (await vm.LikeImageAsync())
            {
                await DisplayAlert("Success", "Your like sent to image author.", "OK");
            }
            else
            {
                await DisplayAlert("Error", "'Like' functionality is not available at the moment. Please try again later", "OK");
            }
        }
Пример #5
0
        public async void OnSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var selectedImage = e.SelectedItem as ContosoMoments.Models.Image;

            if (selectedImage != null)
            {
                var detailsVM   = new ImageDetailsViewModel(App.MobileService, selectedImage);
                var detailsView = new ImageDetailsView();
                detailsVM.Album            = viewModel.Album;
                detailsView.BindingContext = detailsVM;

                await Navigation.PushAsync(detailsView);
            }

            // prevents background getting highlighted
            imagesList.SelectedItem = null;
        }
Пример #6
0
        // GET: Imagems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Imagem imagem = db.Imagens.Find(id);

            if (imagem == null)
            {
                return(HttpNotFound());
            }
            ImageDetailsViewModel model = new ImageDetailsViewModel();

            model.Imagem = imagem;
            model.Ponto  = imagem.PontoInteresse;
            return(View(imagem));
        }
        public string ImportImage(ImageDetailsViewModel viewModel, IFormFile ImageForm)
        {
            Rectangle rectangle = new Rectangle(
                Convert.ToInt32(viewModel.X),
                Convert.ToInt32(viewModel.Y),
                Convert.ToInt32(viewModel.Width),
                Convert.ToInt32(viewModel.Height));

            Bitmap bitmapSrc    = Image.FromStream(ImageForm.OpenReadStream()) as Bitmap;
            Bitmap Bitmaptarget = new Bitmap(Convert.ToInt32(viewModel.Width), Convert.ToInt32(viewModel.Height));

            using (Graphics g = Graphics.FromImage(Bitmaptarget))
            {
                g.DrawImage(bitmapSrc, new Rectangle(0, 0, Convert.ToInt32(viewModel.Width), Convert.ToInt32(viewModel.Height)),
                            rectangle,
                            GraphicsUnit.Pixel);
                string NewFileName = Guid.NewGuid().ToString() + Path.GetExtension(ImageForm.FileName);
                Bitmaptarget.Save(Path.Combine(this.hostEnvironment.WebRootPath, "images", NewFileName));
                return(NewFileName);
            }
        }
Пример #8
0
        public async Task <ActionResult <OkObjectViewModel <ImageDetailsViewModel> > > Upload(IFormFile image)
        {
            if (image == null)
            {
                ModelState.AddModelError(string.Empty, "No image sent to server!");
                return(new BadRequestObjectResult(new BadRequestViewModel <ModelStateError>(ModelState.GetErrors())));
            }

            try
            {
                var entity = await this.manager.SaveImageAsync(image);

                var vm = new ImageDetailsViewModel(entity);
                vm.Url = $"{base.AppSettings.URLS.BaseURL}{vm.Url}";
                return(new OkObjectViewModel <ImageDetailsViewModel>("Image uploaded!", vm));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(new BadRequestObjectResult(new BadRequestViewModel <ModelStateError>(ModelState.GetErrors())));
            }
        }
 public async void OnSettings(object sender, EventArgs e)
 {
     ImageDetailsViewModel vm = this.BindingContext as ImageDetailsViewModel;
     await Navigation.PushModalAsync(new SettingView());
 }