Esempio n. 1
0
        /// <summary>
        /// Método que vai buscar à base de dados as fotografias, atualiza o url das thumbnails e retorna numa lista as mesmas.
        /// </summary>
        /// <param name="id">Id da galeria em questão</param>
        /// <param name="page">Número da página</param>
        /// <param name="justCheckbox"></param>
        /// <returns>Retorna uma lista de fotografias com o url das thumbnails atualizadas</returns>
        public async Task <IActionResult> Thumbnails(string id, int page = 0, bool justCheckbox = false)
        {
            if (String.IsNullOrEmpty(id))
            {
                return(Json(new { success = false, error = "O ID da galeria não é válido." }));
            }

            var photosPerRequest = _appSettings.PhotosPerRequest;
            int skipNum          = (page - 1) * photosPerRequest;

            List <Fotografia> fotos = await _context.Fotografias
                                      .Include(f => f.ContaOnedrive)
                                      .Where(f => f.GaleriaFK.Equals(id))
                                      .Skip(skipNum).Take(photosPerRequest)
                                      .ToListAsync();

            // Caso já não exista mais fotos
            if (fotos.Count() == 0)
            {
                return(Json(new { noMorePhotos = true }));
            }

            // Refrescar o url das thumbnails
            await _onedrive.RefreshPhotoUrlsAsync(fotos);

            var response = new ThumbnailsViewModel
            {
                Fotos = fotos,
                Index = skipNum
            };

            ViewData["JustCheckbox"] = justCheckbox;

            return(PartialView("PartialViews/_ListPhotos", response));
        }
        public async Task <IActionResult> Thumbnails(string ID, string Password, int Page = 0)
        {
            if (String.IsNullOrEmpty(ID))
            {
                return(Json(new { success = false, error = "Não foi possível encontrar as fotografias." }));
            }

            var photosPerRequest = _appSettings.PhotosPerRequest;
            int skipNum          = (Page - 1) * photosPerRequest;

            var partilhavel = await _context.Partilhaveis
                              .Include(p => p.Partilhaveis_Fotografias).ThenInclude(pf => pf.Fotografia).ThenInclude(f => f.ContaOnedrive)
                              .Where(p => p.ID.Equals(ID))
                              .FirstOrDefaultAsync();

            if (partilhavel == null)
            {
                return(Json(new { success = false, error = "Não foi possível encontrar as fotografias." }));
            }

            if (String.IsNullOrEmpty(Password) || !partilhavel.Password.Equals(Password))
            {
                return(Json(new { success = false, error = "Não foi possível encontrar as fotografias." }));
            }

            // Caso não existam fotos
            if (partilhavel.Partilhaveis_Fotografias.Count() == 0)
            {
                return(Json(new { noMorePhotos = true }));
            }

            // Lista de fotografias do partilhavel
            List <Fotografia> fotos = partilhavel.Partilhaveis_Fotografias
                                      .Select(pf => pf.Fotografia)
                                      .Skip(skipNum).Take(photosPerRequest)
                                      .ToList();

            // Caso já não exista mais fotos
            if (fotos.Count() == 0)
            {
                return(Json(new { noMorePhotos = true }));
            }

            // Refrescar os thumbnails
            await _onedrive.RefreshPhotoUrlsAsync(fotos);

            var response = new ThumbnailsViewModel
            {
                Fotos = fotos,
                Index = skipNum
            };

            return(PartialView("PartialViews/_ListPhotos", response));
        }