コード例 #1
0
        internal static EventDetailsTDO GetProcessedPhotosReporting(Event ev, FotoShoutDbContext db)
        {
            EventDetailsTDO     evDetails = new EventDetailsTDO();
            IEnumerable <Photo> photos    = ev.Photos.Where(p => p.Status > (byte)PhotoStatus.Selected).OrderBy(p => p.Filename);

            if (!photos.Any())
            {
                return(evDetails);
            }

            HashSet <dynamic> photosDetails = new HashSet <dynamic>();

            foreach (var photo in photos)
            {
                dynamic tdo = new ExpandoObject();
                tdo.PhotoId  = photo.PhotoId;
                tdo.Filename = photo.Filename;
                tdo.Guests   = PhotoAnnotationService.GetGuestsInfo(photo, false);
                photosDetails.Add(tdo);
            }

            if (photosDetails.Any())
            {
                evDetails.EventOption   = ev.EventOption;
                evDetails.PhotosDetails = photosDetails;
            }

            return(evDetails);
        }
コード例 #2
0
        internal static IEnumerable <PhotoDetailsTDO> GetProcessedPhotosDetailing(Event ev, string created, int page, int pageSize, FotoShoutDbContext db)
        {
            Func <Photo, Boolean> func;

            if (string.IsNullOrEmpty(created))
            {
                func = p => (p.Status == (byte)PhotoStatus.Submitted || p.Status == (byte)PhotoStatus.PendingPublish || p.Status == (byte)PhotoStatus.Published);
            }
            else
            {
                created = DateTime.Parse(created).ToShortDateString();
                func    = p => (p.Created.ToShortDateString().Equals(created, StringComparison.InvariantCultureIgnoreCase) && (p.Status == (byte)PhotoStatus.Submitted || p.Status == (byte)PhotoStatus.PendingPublish || p.Status == (byte)PhotoStatus.Published));
            }
            IEnumerable <Photo> photos = ev.Photos.Where(func).OrderBy(p => p.Filename);

            if (page > 0 && pageSize > 0 && (photos.Count() > pageSize))
            {
                photos = photos.Skip((page - 1) * pageSize).Take(pageSize);
            }

            IEnumerable <PhotoDetailsTDO> photosDetails = (from p in photos
                                                           join e in db.EventBroadcasts on p.PhotoId equals e.PhotoId into pe
                                                           from subset in pe.DefaultIfEmpty()
                                                           select new PhotoDetailsTDO {
                PhotoId = p.PhotoId,
                Filename = p.Filename,
                Status = p.Status,
                Submitted = p.Submitted,
                SubmittedBy = p.SubmittedBy,
                Thumbnail = string.IsNullOrEmpty(p.Thumbnail) ? "" : AppConfigs.VirtualRoot + p.Thumbnail,
                Error = p.Error,
                Thumbnails = (subset == null) ? string.Empty : subset.Thumbnails,
                PermaLinks = (subset == null) ? string.Empty : subset.PermaLinks
            }).ToList();

            if (!photosDetails.Any())
            {
                return(photosDetails);
            }

            foreach (Photo photo in photos)
            {
                PhotoDetailsTDO tdo = photosDetails.Where(p => p.PhotoId == photo.PhotoId).Single();
                tdo.Guests = PhotoAnnotationService.GetGuestTDOs(photo, true);
            }

            return(photosDetails);
        }
コード例 #3
0
        internal static bool AnnotatePhoto(Photo photo, PhotoAnnotation photoAnnotation, FotoShoutDbContext db)
        {
            // Updating photo rating
            photo.Rating = photoAnnotation.Rating;

            // Adding the list of guests to the photo
            Event ev = photo.Event;
            ICollection <GuestPhoto> gps  = photo.GuestPhotos;
            ICollection <GuestTDO>   tdos = photoAnnotation.Guests;

            foreach (GuestTDO tdo in tdos)
            {
                Guest guest = !string.IsNullOrEmpty(tdo.Email) ? GetGuestByEmail(ev.EventId, tdo.Email, db) : GetGuestById(ev.EventId, tdo.GuestId, db);
                if (guest == null)
                {
                    guest = PhotoAnnotationService.GenerateGuest(tdo, photo.Event.EventOption);
                    ev.Guests.Add(guest);
                }
                else
                {
                    PhotoAnnotationService.UpdateGuest(guest, tdo, photo.Event.EventOption);
                }
                GuestPhoto guestPhoto = gps.Where(gp => gp.Guest.GuestId == guest.GuestId).SingleOrDefault();
                if (guestPhoto == null)
                {
                    guestPhoto = new GuestPhoto {
                        Id = Guid.NewGuid(), Event_EventId = photo.Event.EventId, Photo = photo, Guest = guest, AuthorizePublish = tdo.AuthorizePublish
                    };
                    gps.Add(guestPhoto);
                }
                else
                {
                    guestPhoto.AuthorizePublish = tdo.AuthorizePublish;
                }
            }
            photo.Error  = "";
            photo.Status = (byte)PhotoStatus.Submitted;

            return(true);
        }
コード例 #4
0
        internal static IEnumerable <dynamic> GetGuestsInfo(Photo photo, bool signature)
        {
            EventOption evo = (photo.Event != null) ? photo.Event.EventOption : null;

            if (evo == null)
            {
                throw new PhotoAnnotationException(string.Format("The {0} event is not associated with any event option.", photo.Event.EventName));
            }

            IEnumerable <GuestPhoto> gps  = (from gp in photo.GuestPhotos select gp);
            HashSet <dynamic>        tdos = new HashSet <dynamic>();

            if (gps.Any())
            {
                foreach (GuestPhoto gp in gps)
                {
                    dynamic tdo = PhotoAnnotationService.GetGuestInfo(gp.Guest, evo, signature);
                    tdo.AuthorizePublish = gp.AuthorizePublish;
                    tdos.Add(tdo);
                }
            }
            return(tdos);
        }
コード例 #5
0
        internal static IEnumerable <PhotoTDO> GetProcessedPhotos(Event ev, string created, int page, int pageSize, FotoShoutDbContext db)
        {
            Func <Photo, Boolean> func;

            if (string.IsNullOrEmpty(created))
            {
                func = p => (p.Status == (byte)PhotoStatus.Submitted || p.Status == (byte)PhotoStatus.PendingPublish || p.Status == (byte)PhotoStatus.Published);
            }
            else
            {
                created = DateTime.Parse(created).ToShortDateString();
                func    = p => (p.Created.ToShortDateString().Equals(created, StringComparison.InvariantCultureIgnoreCase) && (p.Status == (byte)PhotoStatus.Submitted || p.Status == (byte)PhotoStatus.PendingPublish || p.Status == (byte)PhotoStatus.Published));
            }
            IEnumerable <Photo> photos = ev.Photos.Where(func).OrderBy(p => p.Created);

            if (page > 0 && pageSize > 0 && (photos.Count() > pageSize))
            {
                photos = photos.Skip((page - 1) * pageSize).Take(pageSize);
            }

            HashSet <PhotoTDO> tdos = new HashSet <PhotoTDO>();

            if (!photos.Any())
            {
                return(tdos);
            }

            foreach (Photo photo in photos)
            {
                PhotoTDO tdo = EventPhotosService.GenerateTDO(ev, photo);
                tdo.Guests = PhotoAnnotationService.GetGuestTDOs(photo, true);
                tdos.Add(tdo);
            }

            return(tdos);
        }