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); }
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); }
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); }
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); }
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); }