예제 #1
0
        // DELETE api/Events/1
        public HttpResponseMessage DeleteEvent(int id)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            if (EventPhotosService.IsEventType(ev, EventPhotosService.EVENTTYPE_NEW))
            {
                if (EventsController.ClearEventRelationships(ev, db))
                {
                    db.Events.Remove(ev);

                    try {
                        db.SaveChanges();
                    }
                    catch (DbUpdateConcurrencyException ex) {
                        FotoShoutUtils.Log.LogManager.Error(_logger, ex.ToString());
                        this.GenerateException(HttpStatusCode.NotFound, ex.Message);
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, ev));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Format(Errors.ERROR_EVENT_CLEARREL, ev.EventName)));
                }
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Format(Errors.ERROR_EVENT_DELETE_ANNOTATED, ev.EventName)));
            }
        }
예제 #2
0
 private void UpdateTDO(EventTDO tdo, Event ev)
 {
     tdo.EventId          = ev.EventId;
     tdo.Created          = ev.Created;
     tdo.CreatedBy        = ev.CreatedBy;
     tdo.EventVirtualPath = ev.EventVirtualPath;
     tdo.Thumbnail        = AppConfigs.VirtualRoot + EventPhotosService.GetThumbnailUrl(ev.EventId, ev.EventFolder, ev.EventVirtualPath, db);
 }
예제 #3
0
        // GET api/Events
        public IEnumerable <EventTDO> GetEvents(string eventType = "")
        {
            EventStatus        evType = EventPhotosService.GetEventStatus(eventType);
            HashSet <EventTDO> tdos   = new HashSet <EventTDO>();

            try {
                IEnumerable <Event> events = (evType != EventStatus.Undefined) ?
                                             db.Events.Where(ev => ev.User.Id == CurrentUser.Id && ev.EventStatus == (byte)evType).Include(e => e.EventOption).OrderBy(ev => ev.EventName).ToList() :
                                             db.Events.Where(ev => ev.User.Id == CurrentUser.Id).Include(e => e.EventOption).OrderBy(ev => ev.EventName).ToList();
                if (events.Any())
                {
                    foreach (Event ev in events)
                    {
                        string error = DirectoryUtils.GenerateDirectories(ev.EventFolder);
                        if (!string.IsNullOrEmpty(error))
                        {
                            this.GenerateException(HttpStatusCode.InternalServerError, error, _logger);
                        }
                        FotoShoutApi.Services.IO.DirectoryService.GenerateVirtualPath(ev.EventFolder);

                        if (evType != EventStatus.Undefined || EventPhotosService.IsEventType(ev, eventType))
                        {
                            EventTDO tdo = new EventTDO {
                                EventId          = ev.EventId,
                                EventName        = ev.EventName,
                                EventDescription = ev.EventDescription,
                                EventDate        = ev.EventDate,
                                EventLocation    = ev.EventLocation,
                                EventFolder      = ev.EventFolder,
                                EventVirtualPath = ev.EventVirtualPath,
                                Created          = ev.Created,
                                CreatedBy        = ev.CreatedBy,
                                EventOptionId    = ev.EventOption.EventOptionId,
                                EventStatus      = ev.EventStatus,
                                PublishAlbum     = ev.PublishAlbum
                            };

                            try {
                                string relativeThumbnail = EventPhotosService.GetThumbnailUrl(tdo.EventId, tdo.EventFolder, tdo.EventVirtualPath, db);
                                tdo.Thumbnail = string.IsNullOrEmpty(relativeThumbnail) ? "" : AppConfigs.VirtualRoot + relativeThumbnail;
                            }
                            catch (ObjectNotFoundException) {
                                tdo.Thumbnail = "";
                            }
                            tdos.Add(tdo);
                        }
                    }
                }
            }
            catch (Exception ex) {
                FotoShoutUtils.Log.LogManager.Error(_logger, ex.ToString());
                this.GenerateException(HttpStatusCode.InternalServerError, ex.Message);
            }

            return(tdos);
        }
예제 #4
0
        public IEnumerable <PhotoTDO> GetUnclaimedPhotos(int id, int page = 0, int pageSize = 12)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetUnclaimedPhotos(ev, page, pageSize));
            }
            catch (Exception ex) {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #5
0
        public int GetNumUnclaimedPhotos(int id)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetNumUnclaimedPhotos(ev));
            }
            catch (Exception ex) {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #6
0
        public IEnumerable <PhotoTDO> GetPublishedPhotosByGuest(int id, string name)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db, true, true);

            try {
                return(EventPhotosService.GetPublishedPhotosByGuest(ev, name, db));
            }
            catch (Exception ex) {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString()));
            }
        }
예제 #7
0
        public IEnumerable <PhotoTDO> GetSubmittedPhotosByGuest(int id, string name)
        {
            LogManager.Info(EventPhotosController._logger, string.Format("Getting submitted photos of the event {0} by {1} ...", id, name));
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db, true, true);

            try {
                return(EventPhotosService.GetSubmittedPhotosByGuest(ev, name, db));
            }
            catch (Exception ex) {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString()));
            }
        }
예제 #8
0
        public IEnumerable <PhotoTDO> GetPhotos(int id, int page = 0, int pageSize = 12)
        {
            LogManager.Info(EventPhotosController._logger, string.Format("Getting photos of the event {0}...", id));
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db, false, false);

            try {
                return(EventPhotosService.GetPhotos(ev));
            }
            catch (Exception ex) {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #9
0
        public string GetThumbnailUrl(int id)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(AppConfigs.VirtualRoot + EventPhotosService.GetThumbnailUrl(ev.EventId, ev.EventFolder, ev.EventVirtualPath, db));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString()));
            }
        }
예제 #10
0
        public int GetNumProcessedPhotos(int id, string name, string created = null)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db, true, true);

            try {
                return(EventPhotosService.GetNumProcessedPhotosByGuest(ev, name, created));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #11
0
        public IEnumerable <PhotoGroupTDO> GetProcessedPhotoGroupsByDate(int id)
        {
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetProcessedPhotoGroupsByDate(ev, db));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString()));
            }
        }
예제 #12
0
        public IEnumerable <PhotoTDO> GetUnauthorizedPhotos(int id)
        {
            LogManager.Info(EventPhotosController._logger, string.Format("Getting unauthorized photos of the event {0}...", id));
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetUnauthorizedPhotos(ev, db));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString()));
            }
        }
예제 #13
0
        public EventDetailsTDO GetProcessedPhotosReporting(int id)
        {
            LogManager.Info(EventPhotosController._logger, string.Format("Getting reporting processed photos of the event {0}...", id));
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetProcessedPhotosReporting(ev, db));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #14
0
        public IEnumerable <PhotoDetailsTDO> GetProcessedPhotosDetailing(int id, string created = null, int page = 0, int pageSize = 12)
        {
            LogManager.Info(EventPhotosController._logger, string.Format("Getting details of the processed photos of the event {0}...", id));
            Event ev = EventsController.GetEvent(id, CurrentUser.Id, Request, db);

            try {
                return(EventPhotosService.GetProcessedPhotosDetailing(ev, created, page, pageSize, db));
            }
            catch (Exception ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }
예제 #15
0
        public HttpResponseMessage SelectPhoto(int id, string filename)
        {
            Event ev    = EventsController.GetEvent(id, CurrentUser.Id, Request, db);
            Photo photo = GetPhotoFromId(id)
                          .Where(p => p.Filename.Equals(filename, StringComparison.InvariantCultureIgnoreCase)).SingleOrDefault();

            if (photo == null)
            {
                string folder    = ev.EventFolder.EndsWith(Path.DirectorySeparatorChar.ToString()) ? ev.EventFolder : (ev.EventFolder + Path.DirectorySeparatorChar);
                string thumbnail = File.Exists(folder + Constants.STR_THUMB + "/" + filename) ? (ev.EventVirtualPath + "/" + Constants.STR_THUMB + "/" + filename) : "";
                photo = new Photo {
                    PhotoId   = Guid.NewGuid(),
                    Folder    = ev.EventFolder,
                    Filename  = filename,
                    Image     = ev.EventVirtualPath + '/' + filename,
                    Thumbnail = thumbnail,
                    Created   = File.GetCreationTime(folder + filename),
                    Event     = ev
                };
                ev.Photos.Add(photo);
            }
            else if (photo.Status == (byte)PhotoStatus.Selected)
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict, string.Format("The {0} photo is editing by someone else.", filename)));
            }

            photo.Status = (byte)PhotoStatus.Selected;

            try {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex) {
                LogManager.Error(EventPhotosController._logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.ToString()));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, EventPhotosService.GenerateTDO(ev, photo)));
        }