Exemple #1
0
        public ActionResult Create()
        {
            PhotoFlickr photoPost = new PhotoFlickr();

            // preluam lista de categorii din metoda GetAllCategories()
            photoPost.Categories = GetAllCategories();

            // Preluam ID-ul utilizatorului curent
            photoPost.UserId = User.Identity.GetUserId();


            return(View(photoPost));
        }
Exemple #2
0
        // GET: PhotoFlickr/Details/5
        public ActionResult Details(int id)
        {
            PhotoFlickr photoFlickr = db.Photos.Find(id);

            ViewBag.afisareButoane = false;
            if (User.IsInRole("Editor") || User.IsInRole("Administrator"))
            {
                ViewBag.afisareButoane = true;
            }

            ViewBag.esteAdmin        = User.IsInRole("Administrator");
            ViewBag.utilizatorCurent = User.Identity.GetUserId();


            return(View(photoFlickr));
        }
Exemple #3
0
        public ActionResult Delete(int id)
        {
            PhotoFlickr photoFlickr = db.Photos.Find(id);

            if (photoFlickr.UserId == User.Identity.GetUserId() ||
                User.IsInRole("Administrator"))
            {
                db.Photos.Remove(photoFlickr);
                db.SaveChanges();
                TempData["message"] = "Articolul a fost sters!";
                return(RedirectToAction("Index"));
            }
            else
            {
                TempData["message"] = "Nu aveti dreptul sa stergeti un articol care nu va apartine!";
                return(RedirectToAction("Index"));
            }
        }
Exemple #4
0
        public ActionResult Edit(int id)
        {
            PhotoFlickr photoFlickr = db.Photos.Find(id);

            ViewBag.Photo          = photoFlickr;
            photoFlickr.Categories = GetAllCategories();

            if (photoFlickr.UserId == User.Identity.GetUserId() ||
                User.IsInRole("Administrator"))
            {
                return(View(photoFlickr));
            }
            else
            {
                TempData["message"] = "Nu aveti dreptul sa faceti modificari asupra unui articol care nu va apartine!";
                return(RedirectToAction("Index"));
            }
        }
Exemple #5
0
        public ActionResult Edit(int id, PhotoFlickr requestPhoto)
        {
            requestPhoto.Categories = GetAllCategories();

            try
            {
                if (ModelState.IsValid)
                {
                    PhotoFlickr photoFlickr = db.Photos.Find(id);
                    if (photoFlickr.UserId == User.Identity.GetUserId() ||
                        User.IsInRole("Administrator"))
                    {
                        if (TryUpdateModel(photoFlickr))
                        {
                            photoFlickr.Title = requestPhoto.Title;
                            // Protect content from XSS
                            requestPhoto.Description = Sanitizer.GetSafeHtmlFragment(requestPhoto.Description);
                            photoFlickr.Description  = requestPhoto.Description;
                            photoFlickr.Date         = requestPhoto.Date;
                            photoFlickr.CategoryId   = requestPhoto.CategoryId;
                            photoFlickr.Comment      = requestPhoto.Comment;
                            photoFlickr.Photo        = requestPhoto.Photo;
                            photoFlickr.Title        = photoFlickr.Title;
                            db.SaveChanges();
                            TempData["message"] = "Postarea a fost modificata!";
                        }
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["message"] = "Nu aveti dreptul sa faceti modificari asupra unui articol care nu va apartine!";
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    return(View(requestPhoto));
                }
            }
            catch (Exception e)
            {
                return(View(requestPhoto));
            }
        }
Exemple #6
0
 public ActionResult Create(PhotoFlickr photoFlickr)
 {
     photoFlickr.Categories = GetAllCategories();
     try
     {
         if (ModelState.IsValid)
         {
             // Protect content from XSS
             photoFlickr.Description = Sanitizer.GetSafeHtmlFragment(photoFlickr.Description);
             db.Photos.Add(photoFlickr);
             db.SaveChanges();
             TempData["message"] = "Poza a fost adaugata!";
             return(RedirectToAction("Index"));
         }
         else
         {
             return(View(photoFlickr));
         }
     }
     catch (Exception e)
     {
         return(View(photoFlickr));
     }
 }
        public void UploadSchema(IEnumerable <CollectionFlickr> toUpload)
        {
            if (_cachedList == null)
            {
                if (File.Exists(GetCahceFilePath()) == false)
                {
                    IEnumerable <CollectionFlickr> downloadSchemaFromFlickr = DownloadSchemaFromFlickr();

                    _cachedList = new BindingList <CollectionFlickr>(downloadSchemaFromFlickr.ToList());
                }
                else
                {
                    _cachedList = JsonConvert.DeserializeObject <BindingList <CollectionFlickr> >(File.ReadAllText(GetCahceFilePath()));
                }

                BindEvents();
            }

            foreach (CollectionFlickr localCollection in toUpload)
            {
                if (_cachedList.Any(a => a.Title == localCollection.Title) == false)
                {
                    Collection addedCollection = _flickrApi.CollectionsCreate(localCollection.Title, string.Empty);

                    _cachedList.Add(
                        new CollectionFlickr(SaveCachedData)
                    {
                        Id    = addedCollection.CollectionId,
                        Title = localCollection.Title
                    }
                        );

                    _log.InfoFormat("Created not existing collection [{0}].", addedCollection.Title);
                }

                var cachedCollection = _cachedList.Single(s => s.Title == localCollection.Title);

                foreach (AlbumFlickr localAlbum in localCollection.AlbumsFlickr)
                {
                    if (cachedCollection.AlbumsFlickr.Any(a => a.Title == localAlbum.Title) == false)
                    {
                        if (localAlbum.PhotoList.Count == 0)
                        {
                            continue;
                        }

                        // first sent photo because it is not possible to create album without it
                        PhotoFlickr photoFlickr = localAlbum.PhotoList.First();
                        photoFlickr.Id = _flickrApi.UploadPicture(photoFlickr.FilePath, photoFlickr.Title, string.Empty,
                                                                  string.Format("\"#Collection={0}\" \"#Album={1}\"", localCollection.Title, localAlbum.Title),
                                                                  false, false, false);

                        Photoset addedPhotoset = _flickrApi.PhotosetsCreate(localAlbum.Title, photoFlickr.Id);

                        cachedCollection.AlbumsFlickr.Add(
                            new AlbumFlickr(SaveCachedData)
                        {
                            Id    = addedPhotoset.PhotosetId,
                            Title = localAlbum.Title
                        });

                        _flickrApi.CollectionsEditSets(cachedCollection.Id,
                                                       cachedCollection.AlbumsFlickr.Select(s => s.Id).ToList());

                        _log.InfoFormat("Added album [{0}] to collection [{1}].", localAlbum.Title, localCollection.Title);
                    }

                    var flickrPhotoset = cachedCollection.AlbumsFlickr.Single(s => s.Title == localAlbum.Title);

                    AlbumFlickr cachedAlbum = _cachedList
                                              .Single(s => s.Title == localCollection.Title)
                                              .AlbumsFlickr.Single(s => s.Title == localAlbum.Title);

                    List <PhotoFlickr> photosOnFlickr = cachedAlbum.PhotoList.ToList();
                    _log.DebugFormat("Got photos from album: [{0}]", localAlbum.Title);

                    List <PhotoFlickr> photosToUpload = localAlbum.PhotoList.Except(photosOnFlickr).ToList();

                    _log.DebugFormat("Photos to upload count: [{0}]", photosToUpload.Count());

                    UploadInternal(flickrPhotoset.Id, localCollection.Title, localAlbum.Title, photosToUpload, uploadedPhoto => cachedAlbum.PhotoList.Add(uploadedPhoto));
                }
            }
        }
Exemple #8
0
        public void Upload(Func <bool> cancellationPending, Flickr flickrInstance, IEnumerable <CollectionFlickr> toUpload, IEnumerable <CollectionFlickr> flickrSchema)
        {
            Dictionary <string, CollectionFlickr> dictionaryFlickrSchema = flickrSchema.ToDictionary(k => k.Title, v => v);

            foreach (CollectionFlickr collectionToUpload in toUpload)
            {
                if (string.IsNullOrEmpty(collectionToUpload.Id))
                {
                    if (collectionToUpload.AlbumsFlickr.Count > 0)
                    {
                        _log.DebugFormat("Creating new collection: [{0}]", collectionToUpload.Title);

                        Collection createdCollection = flickrInstance.CollectionsCreate(collectionToUpload.Title, string.Empty);

                        collectionToUpload.Id = createdCollection.CollectionId;
                        dictionaryFlickrSchema.Add(
                            collectionToUpload.Title,
                            new CollectionFlickr
                        {
                            Id           = createdCollection.CollectionId,
                            Title        = collectionToUpload.Title,
                            AlbumsFlickr = new BindingList <AlbumFlickr>()
                        });
                    }
                    else
                    {
                        _log.WarnFormat("Collection [{0}] is empty. Please verify what's going on...", collectionToUpload.Title);
                        continue;
                    }
                }

                CollectionFlickr collectionOnFlickr = dictionaryFlickrSchema[collectionToUpload.Title];

                foreach (AlbumFlickr notSyncedAlbum in collectionToUpload.AlbumsFlickr)
                {
                    if (string.IsNullOrEmpty(notSyncedAlbum.Id))
                    {
                        if (notSyncedAlbum.PhotoList.Count > 0)
                        {
                            _log.DebugFormat("Creating new album: [{0}]", notSyncedAlbum.Title);

                            // first we send a picture because without that is it not possible to create an album
                            PhotoFlickr photoFlickr = notSyncedAlbum.PhotoList.First();
                            photoFlickr.Id = flickrInstance.UploadPicture(photoFlickr.FilePath, photoFlickr.Title, string.Empty,
                                                                          string.Format("\"#Collection={0}\" \"#Album={1}\"", collectionToUpload.Title, notSyncedAlbum.Title),
                                                                          false, false, false);

                            string albumId = flickrInstance.PhotosetsCreate(notSyncedAlbum.Title, photoFlickr.Id).PhotosetId;
                            notSyncedAlbum.Id = albumId;
                            collectionOnFlickr.AlbumsFlickr.Add(new AlbumFlickr
                            {
                                Id        = albumId,
                                Title     = notSyncedAlbum.Title,
                                PhotoList = new BindingList <PhotoFlickr>
                                {
                                    photoFlickr
                                }
                            });

                            flickrInstance.CollectionsEditSets(collectionOnFlickr.Id,
                                                               collectionOnFlickr.AlbumsFlickr.Select(s => s.Id).ToList());

                            // after add we can say that is syncronized so we delete it from synchronization list
                            notSyncedAlbum.PhotoList.Remove(photoFlickr);
                        }
                        else
                        {
                            _log.WarnFormat("Album [{0}] is empty. Please verify what's going on...", notSyncedAlbum.Title);
                            continue;
                        }
                    }

                    AlbumFlickr albumFlickr = collectionOnFlickr.AlbumsFlickr.Single(s => s.Id == notSyncedAlbum.Id);

                    Parallel.ForEach(notSyncedAlbum.PhotoList, new ParallelOptions
                    {
                        MaxDegreeOfParallelism = _uploadThreadsCount
                    },
                                     () => new List <PhotoFlickr>(),
                                     (photoFlickr, state, arg3) =>
                    {
                        if (state.IsStopped)
                        {
                            return(arg3);
                        }

                        int retryCount = 0;

                        while (retryCount < 3)
                        {
                            try
                            {
                                if (cancellationPending())
                                {
                                    state.Stop();
                                    return(arg3);
                                }

                                photoFlickr.Id = flickrInstance.UploadPicture(photoFlickr.FilePath, photoFlickr.Title, string.Empty,
                                                                              string.Format("\"#Collection={0}\" \"#Album={1}\"", collectionToUpload.Title, notSyncedAlbum.Title),
                                                                              false,
                                                                              false, false);

                                flickrInstance.PhotosetsAddPhoto(notSyncedAlbum.Id, photoFlickr.Id);
                                arg3.Add(photoFlickr);

                                _log.DebugFormat("Uploaded photo [{0}] to album [{1}].", photoFlickr.Title, albumFlickr.Title);

                                break;
                            }
                            catch (Exception ex)
                            {
                                retryCount++;
                                _log.Warn("Uploading failed. Retrying...", ex);
                            }
                        }

                        return(arg3);
                    },
                                     set =>
                    {
                        if (set != null)
                        {
                            set.ForEach(albumFlickr.PhotoList.Add);
                        }
                    }
                                     );

                    if (cancellationPending())
                    {
                        return;
                    }
                }
            }
        }