예제 #1
0
        public ActionResult Photos(string id)
        {
            var photosPath = Server.MapPath($"~/media/Photos/{id}");
            var vm         = new PhotosViewModel(photosPath);

            return(View(vm));
        }
        public async Task <IActionResult> New(PhotosViewModel model)
        {
            if (ModelState.IsValid)
            {
                string uniqueFileName = UploadedFile(model);
                var    photoPath      = "wwwroot/images/" + uniqueFileName;
                var    gps            = ImageMetadataReader.ReadMetadata(photoPath)
                                        .OfType <GpsDirectory>()
                                        .FirstOrDefault();
                var    location        = gps.GetGeoLocation();
                var    photoLat        = location.Latitude;
                var    photoLong       = location.Longitude;
                var    directories     = ImageMetadataReader.ReadMetadata(photoPath);
                var    subIfdDirectory = directories.OfType <ExifSubIfdDirectory>().FirstOrDefault();
                var    photoDate       = subIfdDirectory?.GetDescription(ExifDirectoryBase.TagDateTimeOriginal);
                Photos photo           = new Photos
                {
                    PhotoFile    = uniqueFileName,
                    PhotoTripId  = model.PhotoTripId,
                    PhotoCaption = model.PhotoCaption,
                    PhotoLat     = photoLat.ToString(),
                    PhotoLong    = photoLong.ToString(),
                    PhotoDate    = photoDate
                };
                _context.Add(photo);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View());
        }
예제 #3
0
        public ActionResult Photos(int id)
        {
            Repository      repo   = new Repository();
            PhotosViewModel photos = repo.getPhotosVM(id);

            return(View(photos));
        }
예제 #4
0
        public ActionResult Index(int?id)
        {
            PhotosViewModel viewModel = new PhotosViewModel();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Album album = db.Albums.Find(id);

            if (album == null)
            {
                return(HttpNotFound());
            }

            var photos = db.Photos.Where(x => x.AlbumID == album.ID).ToList();

            if (photos != null)
            {
                viewModel.Photos = photos;

                viewModel.Album = album;
            }
            else
            {
                var defaultPhoto = GetDefaultPhoto(album);

                viewModel.Photos.Add(defaultPhoto);

                viewModel.Album = album;
            }

            return(View("Index", viewModel));
        }
예제 #5
0
        public PhotosPage()
        {
            InitializeComponent();
            _viewModel          = new PhotosViewModel();
            _viewModel.UserInfo = OfflineDefaultData.DefaultUserInfo;
            ContainerStackLayout.BindingContext = _viewModel;
            BindingContext = _viewModel;
            TagFilterPicker.SelectedIndex = 0;

            MessagingCenter.Subscribe <SelectProgenyPage>(this, "Reload", async(sender) =>
            {
                _reload = true;
                await SetUserAndProgeny();
                _viewModel.PageNumber = 1;
                await Reload();
            });

            MessagingCenter.Subscribe <AccountViewModel>(this, "Reload", async(sender) =>
            {
                _reload = true;
                await SetUserAndProgeny();
                _viewModel.PageNumber = 1;
                await Reload();
            });
        }
예제 #6
0
        private async Task LoadImages()
        {
            try
            {
                m_viewModel = new PhotosViewModel();
                if (App.SelectedSequence != null)
                {
                    await m_viewModel.GetPhotos(App.SelectedSequence.SequenceId);
                }
                else
                {
                    await m_viewModel.GetPhotos();
                }

                DataContext = m_viewModel;

                noPhotos.Visibility  = m_viewModel.NumPhotos > 0 ? Visibility.Collapsed : Visibility.Visible;
                uploadMsg.Visibility = Visibility.Collapsed;
                errorMsg.Visibility  = Visibility.Collapsed;
                double totalbytes = 0;
                if (m_viewModel.NumPhotos > 0)
                {
                    foreach (var photo in m_viewModel.PhotoList.OrderBy(r => r.TimeStamp))
                    {
                        if (App.SaveToCameraRollEnabled)
                        {
                            var upload = new UploadInfo()
                            {
                                PercentageDone = 0, IsUploaded = false, IsUploading = false
                            };
                            upload.Size      = (ulong)GetPhotoSize(photo);
                            totalbytes      += upload.Size;
                            photo.UploadInfo = upload;
                        }
                        else
                        {
                            var upload = new UploadInfo()
                            {
                                File = photo.File, PercentageDone = 0, IsUploaded = false, IsUploading = false
                            };
                            upload.Size      = (await photo.File.GetBasicPropertiesAsync()).Size;
                            totalbytes      += upload.Size;
                            upload.Path      = "\\shared\\transfers\\" + photo.File.Name;
                            photo.UploadInfo = upload;
                        }
                    }

                    countToUpload = m_viewModel.NumPhotos;
                    UpdateTotalStatus();
                    startButton.IsEnabled = true;
                    uploadMsg.Visibility  = Visibility.Visible;
                    uploadMsg.Text        = "Ready to upload " + Math.Round(totalbytes / 1024 / 1024, 1) + " Mb (" + m_viewModel.NumPhotos + " photos). Do not lock your phone while uploading.";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("ERROR: " + ex.Message);
            }
        }
예제 #7
0
        private void MyCollectionLoaded(object sender, RoutedEventArgs e)
        {
            var viewModel = new PhotosViewModel();

            DataContext = viewModel;

            scroll.ScrollTo(scroll.ItemsSource[scroll.ItemsSource.Count - 1]);
        }
예제 #8
0
        public ActionResult Photos()
        {
            var model = new PhotosViewModel {
                Photos = AwsBucket.GetImages()
            };

            return(View(model));
        }
예제 #9
0
        public MyCollection()
        {
            InitializeComponent();

            this.Loaded += new RoutedEventHandler(MyCollectionLoaded);
            var viewModel = new PhotosViewModel();

            DataContext = viewModel;
        }
예제 #10
0
        public async Task <IActionResult> Post(PhotosViewModel vm)
        {
            var post = this.unitOfWork.PostsRepository.GetById(vm.PostId);

            if (post == null)
            {
                return(BadRequest("The post does not exist."));
            }
            if (post.UserId != User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value)
            {
                return(Forbid());
            }
            var numberOfFiles = vm.Files.Count;

            if (numberOfFiles > 8)
            {
                ModelState.AddModelError("size", "Number of images can't exceed 8.");
                return(BadRequest(ModelState));
            }
            foreach (var file in vm.Files)
            {
                string type = file.ContentType.Split("/")[0];
                if (type != "image")
                {
                    ModelState.AddModelError("type", "Invalid type");
                    return(BadRequest(ModelState));
                }
                else if (file.Length > 2145728)
                {
                    ModelState.AddModelError("size", "Image size must be lower than 2MB");
                    return(BadRequest(ModelState));
                }
                else
                {
                    string currentFileName = file.FileName.Trim('"');
                    string fileExtension   = Path.GetExtension(currentFileName);
                    string newFileName     = Guid.NewGuid().ToString() + fileExtension;
                    string filePath        = Path.Combine(this.hostingEnvironment.WebRootPath, "images", "posts", newFileName);
                    string dbPath          = Path.Combine("images", "posts", newFileName);
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        file.CopyTo(stream);
                        stream.Flush();
                    }
                    PostPhoto newPhoto = new PostPhoto
                    {
                        Source = dbPath,
                        Alt    = "Post photo",
                        PostId = vm.PostId
                    };
                    this.unitOfWork.PostPhotosRepository.Add(newPhoto);
                }
            }
            await this.unitOfWork.Save();

            return(Created("PostPhotos", new { id = vm.PostId }));
        }
예제 #11
0
        private async Task LoadImages()
        {
            m_selectedFile = null;
            viewModel      = new PhotosViewModel();
            await viewModel.GetPhotos(App.SelectedSequence.SequenceId);

            noPhotos.Visibility = viewModel.NumPhotos > 0 ? Visibility.Collapsed : Visibility.Visible;
            UpdateNumPhotos();
            DataContext = viewModel;
        }
예제 #12
0
        public ActionResult Index(int page = 1)
        {
            var photos = new PhotosViewModel();

            photos.SStore = this.MyStore;
            var m = FileManagerService.GetImagesByStoreId(MyStore.Id, page, 24);

            photos.SFileManagers = new PagedList <FileManager>(m.items, m.page - 1, m.pageSize, m.totalItemCount);
            return(View(photos));
        }
예제 #13
0
        public PhotosViewModel GetPhotos(int page)
        {
            var resultModel = new PhotosViewModel();

            resultModel.SStore = this.MyStore;
            var m = FileManagerRepository.GetImagesByStoreId(MyStore.Id, page, 24);

            resultModel.SFileManagers = new PagedList <FileManager>(m.items, m.page - 1, m.pageSize, m.totalItemCount);
            resultModel.SNavigations  = NavigationRepository.GetStoreActiveNavigations(this.MyStore.Id);
            resultModel.SSettings     = this.GetStoreSettings();
            return(resultModel);
        }
        public async Task <ActionResult> ViewAlbum(int id)
        {
            _typiCodeService = new TypiCodeService(Client);
            var photos = await _typiCodeService.GetPhotosAsync(id);

            var photosViewModel = new PhotosViewModel
            {
                Photos = photos
            };

            return(View("AlbumPhotos", photosViewModel));
        }
예제 #15
0
        public ActionResult ShowPhotos(PhotosViewModel vm)
        {
            var dirs = vm.Dirs.Where(d => d.IsSelected).Select(d => d.ID).ToList();

            if (dirs.Count() == 0)
            {
                return(RedirectToAction("Index"));
            }

            ViewBag.HoldSeconds = (int)TimeSpan.Parse(vm.IntervalSpan).TotalSeconds;
            return(View(vm.BuildShow(Server.MapPath($"~/media/Photos/"))));
        }
예제 #16
0
        public async Task <IActionResult> Photos(string id, string n)
        {
            var _client = new HttpClient();

            _client.BaseAddress = new Uri(BaseUrl);
            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var api          = string.Format("api/landmark/getphotos/{0}", id);
            var httpResponse = await _client.GetAsync(api);

            if (!httpResponse.IsSuccessStatusCode)
            {
                throw new Exception("Cannot retrieve photos");
            }
            var content = await httpResponse.Content.ReadAsStringAsync();

            var tasks = JsonConvert.DeserializeObject <PhotosViewModel>(content);
            List <PhotosViewModel.Items> photos     = new List <PhotosViewModel.Items>();
            List <PhotoModel>            photoModel = new List <PhotoModel>();

            foreach (var x in tasks.response.photos.items)
            {
                var photoexist = _context.Venues.FirstOrDefault(p => p.id.Equals(x.id));
                if (photoexist == null)
                {
                    photoModel.Add(new PhotoModel {
                        id = x.id, prefix = x.prefix, suffix = x.suffix, width = x.width, height = x.height, venueid = id
                    });
                }
                photos.Add(new PhotosViewModel.Items
                {
                    id        = x.id,
                    prefix    = x.prefix,
                    suffix    = x.suffix,
                    width     = x.width,
                    height    = x.height,
                    venueid   = id,
                    venuename = n
                });
            }
            ViewBag.Photos = photos;
            var model = new PhotosViewModel()
            {
                photoList = photos
            };

            //Insert into DB
            _context.Photos.AddRange(photoModel);
            _context.SaveChanges();
            return(View(model));
        }
예제 #17
0
 private void CollectionControl_CellSelected_1(object sender, CellSelectedEventArgs e)
 {
     if (pivot.SelectedIndex == 0)
     {
         if (e.Type == CellType.Album)
         {
             var pModel = new PhotosViewModel();
             pModel.Initialize(e.SelectedItem.Data as PictureAlbum, cts.Token);
             ViewModels[0] = pModel;
             ((pivot.SelectedItem as PivotItem).Content as CollectionControl).Initialize(ViewModels[0]);
             CreateCompletedAppBar();
         }
     }
 }
        private string UploadedFile(PhotosViewModel model)
        {
            string uniqueFileName = null;

            if (model.PhotoFile != null)
            {
                string uploadsFolder = Path.Combine(webHostEnvironment.WebRootPath, "images");
                uniqueFileName = Guid.NewGuid().ToString() + "_" + model.PhotoFile.FileName;
                string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                using (var fileStream = new FileStream(filePath, FileMode.Create))
                {
                    model.PhotoFile.CopyTo(fileStream);
                }
            }
            return(uniqueFileName);
        }
예제 #19
0
        public PhotosViewModel getPhotosVM(int albumId)
        {
            List <Photo> tmp    = this.getPhotos();
            var          photos = from s in tmp
                                  select s;

            photos = photos.Where(s => s.albumId == albumId);
            PhotosViewModel PhotosVM = new PhotosViewModel();

            PhotosVM.Photos = photos.ToList();
            Album album = getAlbums().Find(x => x.id == albumId);

            PhotosVM.Title     = album.title;
            PhotosVM.UsersName = getUser(album.userId).name;
            return(PhotosVM);
        }
예제 #20
0
        public IActionResult GetPhotos([FromQuery(Name = "albumId")] int?albumId, [FromQuery(Name = "offset")] int?offset)
        {
            int userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(c => c.Type == claimTypes.Id.ToString()).Value);

            IEnumerable <Photo> photos;

            if (albumId is null)
            {
                photos = db.GetAllPhotos(userId, offset);
                List <PhotosViewModel> list = new List <PhotosViewModel>();
                foreach (var photo in photos)
                {
                    var model = new PhotosViewModel
                    {
                        Name    = photo.Name,
                        Caption = photo.Caption,
                        Created = photo.Created,
                        AlbumId = photo.AlbumId,
                        URL     = $"{PHOTO_STORAGE_PATH}/{photo.Name}"
                    };
                    list.Add(model);
                }
                return(Ok(new { response = list }));
            }
            else
            {
                photos = db.GetPhotosByAlbum(userId, (int)albumId, offset);
                List <PhotosWithAlbumModel> list = new List <PhotosWithAlbumModel>();
                foreach (var photo in photos)
                {
                    var model = new PhotosWithAlbumModel
                    {
                        Name    = photo.Name,
                        Caption = photo.Caption,
                        Created = photo.Created,
                        URL     = $"{PHOTO_STORAGE_PATH}/{photo.Name}"
                    };
                    list.Add(model);
                }
                return(Ok(new { response = list }));
            }
        }
예제 #21
0
        public JsonResult GetAllPhotos(int appId, int userId, int page = 1)
        {
            var view = new PhotosViewModel();

            var app = db.Instances.Where(i => i.Id == appId).First();

            if (app != null)
            {
                int skip = (page - 1) * app.PageSize;

                var images = photoService.GetPhotos(app.ImagePathDirectory + "/thumb/", app.PageSize, page)
                             .Skip(skip).Take(app.PageSize).ToList();

                // for this set of images, which ones has the user selected
                var userSelectedPhotos = db.SelectedPhotos.Where(s => s.UserId == userId).ToList();
                PhotosViewModel.Photo photo;
                foreach (var image in images)
                {
                    photo = new PhotosViewModel.Photo()
                    {
                        ImageName = image
                    };

                    var selected = userSelectedPhotos.Where(s => s.ImageName == image.ToLower()).FirstOrDefault();
                    if (selected != null)
                    {
                        photo.SelectedPhotoId = selected.Id;
                    }

                    view.Photos.Add(photo);
                }

                view.CurrentPage   = page;
                view.PageSize      = app.PageSize;
                view.TotalPhotos   = photoService.GetPhotos(app.ImagePathDirectory + "/thumb/", app.PageSize, page).Count();
                view.Pages         = (int)Math.Ceiling(view.TotalPhotos / (double)app.PageSize);
                view.TotalSelected = userSelectedPhotos.Count();
            }

            return(Json(view, JsonRequestBehavior.AllowGet));
        }
예제 #22
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     PhotosModel = NavigationServices.CurrentViewModel as PhotosViewModel;
     if (e.NavigationMode == NavigationMode.New && NavigationContext.QueryString.ContainsKey("id"))
     {
         string id = NavigationContext.QueryString["id"];
         if (!String.IsNullOrEmpty(id))
         {
             _isDeepLink = true;
             PhotosModel = new PhotosViewModel();
             NavigationServices.CurrentViewModel = PhotosModel;
             PhotosModel.LoadItem(id);
         }
     }
     if (PhotosModel != null)
     {
         PhotosModel.ViewType = ViewTypes.Detail;
     }
     DataContext = PhotosModel;
     base.OnNavigatedTo(e);
 }
예제 #23
0
        public ActionResult Index(Int32 id = 0)
        {
            MembershipUser user = Membership.GetUser();

            if (user == null)
            {
                return(RedirectToAction("Index", "Account"));
            }
            int currentId = (int?)user.ProviderUserKey ?? 0;

            if (id == 0)
            {
                return(RedirectToAction("Index", new { id = currentId }));
            }

            PhotosViewModel model = new PhotosViewModel
            {
                UserId   = id,
                UserName = dataManager.Users.GetFirstNameById(id) + " " +
                           dataManager.Users.GetLastNameById(id),
                Photos   = new List <PhotoViewModel>(),
                UserIsMe = id == currentId
            };

            foreach (Int32 photoId in dataManager.Photos.GetPhotoIdsByUserId(id))
            {
                model.Photos.Add(new PhotoViewModel
                {
                    Id          = photoId,
                    UserId      = id,
                    Image       = dataManager.Photos.GetImageById(photoId),
                    Comment     = dataManager.Photos.GetCommentById(photoId),
                    CreatedDate = dataManager.Photos.GetCreatedDateById(photoId)
                });
            }

            return(View(model));
        }
예제 #24
0
        public JsonResult GetUserSelectedPhotos(int appId, int userId, int page = 1)
        {
            var view = new PhotosViewModel();
            var app  = db.Instances.Where(i => i.Id == appId).First();

            if (app != null)
            {
                view.Photos = db.SelectedPhotos.Where(s => s.UserId == userId).OrderBy(s => s.ImageName)
                              .Select(s => new PhotosViewModel.Photo()
                {
                    ImageName = s.ImageName, SelectedPhotoId = s.Id
                })
                              .ToList();

                view.CurrentPage   = page;
                view.PageSize      = app.PageSize;
                view.TotalPhotos   = view.Photos.Count();
                view.Pages         = (int)Math.Ceiling(view.TotalPhotos / (double)app.PageSize);
                view.TotalSelected = view.Photos.Count();
            }

            return(Json(view, JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> AddPhoto(PhotosViewModel photo)
        {
            if (photo == null)
            {
                _logger.LogError("Photo sent from client is null.");
                return(BadRequest());
            }

            if (ModelState.ErrorCount > 0)
            {
                var errorStr = GetModelErrors(ModelState);
                _logger.LogError(errorStr);
                return(BadRequest(errorStr));
            }

            if (!ModelState.IsValid)
            {
                _logger.LogError("Invalid photo object sent from client.");
                return(BadRequest("Invalid model object"));
            }

            var uri = string.Empty;

            using (Stream readStream = photo.File.OpenReadStream())
            {
                uri = _fileStorage.UploadFile(readStream, photo.File.ContentType, photo.LotId.ToString());
            }

            if (string.IsNullOrEmpty(uri))
            {
                return(BadRequest("An error occurred when sending to the storage"));
            }

            await _photosLogic.AddPhoto(new PhotoModel { LotId = photo.LotId, Url = uri, CreatedAt = DateTime.Now });

            return(Ok(uri));
        }
예제 #26
0
        public ActionResult SearchPhotosAjax(string photoName, string userName)
        {
            UserViewModel user = null;

            if (userName != null)
            {
                user = userService.GetUserEntityByLogin(userName).ToMvcUser();
            }

            if (user == null)
            {
                user = userService.GetUserEntityByLogin(User.Identity.Name).ToMvcUser();
            }

            int pageSize             = 4;
            var photos               = photoService.GetUserPhotosByName(user.Id, photoName).Select(ph => ph.ToMvcPhoto());
            var photosPerCurrentPage = photos.Take(pageSize);

            PageInfo pageInfo = new PageInfo
            {
                PageNumber = 1,
                PageSize   = pageSize,
                TotalItems = photos.Count()
            };

            var photosModel = new PhotosViewModel
            {
                ChosenUser = user,
                Photos     = photosPerCurrentPage,
                PageInfo   = pageInfo
            };

            ViewBag.PhotoName = photoName;

            return(PartialView("_PhotosList", photosModel));
        }
예제 #27
0
        public async Task <IActionResult> AddPhotoAsync([FromForm] PhotosViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Ok(new { fileError = "Yalnız jpeg, png, bmp, gif və ya svg sonluqlu fayllar yükləyə bilərsiniz!" }));
            }

            foreach (var rphoto in model.photos)
            {
                using (var stream = rphoto.OpenReadStream())
                {
                    var publicUrl = CloudniaryService.UploadImage(rphoto.FileName, stream);

                    var photo = new Photo();
                    photo.Gallery = await UnitOfWork.GalleryRepository.GetByIDAsync(model.gallery_id);

                    photo.name = publicUrl;
                    UnitOfWork.PhotoRepository.Insert(photo);
                    await UnitOfWork.SaveAsync();
                }
            }

            return(Ok(new { addPhoto = "Photos has been added successfully!" }));
        }
예제 #28
0
        void photosCollectionControl_CellSelected(object myObject, CellSelectedEventArgs myArgs)
        {
            if (selecting)
            {
                switch (myArgs.Type)
                {
                case CellType.Album:

                    break;

                case CellType.Photo:
                    break;

                default:
                    break;
                }
                ListBox l = new ListBox();
            }
            switch (myArgs.Type)
            {
            case CellType.Album:
                PhotosCollectionViewModel = new PhotosViewModel();
                PhotosCollectionViewModel.Initialize(myArgs.SelectedItem.Data as PictureAlbum, cts.Token, false);
                photosCollectionControl.Initialize(PhotosCollectionViewModel);
                deep++;
                break;

            case CellType.Photo:
                SelectedImage = (myArgs.SelectedItem.Data as Picture);
                NavigationService.Navigate(new Uri("/PhotoViewerPage.xaml", UriKind.Relative));
                break;

            default:
                break;
            }
        }
예제 #29
0
 public PhotosPage(PhotosViewModel photosViewModel) : base()
 {
     InitializeComponent();
     BindingContext = viewModel = photosViewModel;
 }
예제 #30
0
        public Photos(IMediaAlbum album)
        {
            InitializeComponent();

            BindingContext = new PhotosViewModel(album);
        }