// retrieves event and related EventUserPhotos, UserIdToVote, UserIdToVoterName to represent to whom logged in user voted.
        public async Task <IActionResult> Details(int?eventId)
        {
            if (eventId == null)
            {
                return(NotFound());
            }

            var prevEvent = await _context.Events.FirstOrDefaultAsync(e => e.EventId == eventId);

            IEnumerable <EventUserPhotos> evtUserPhoto = _context.EventUserPhotos.Include(e => e.User).Where(e => e.EventId == eventId);

            var userIdToVote = evtUserPhoto.FirstOrDefault(ev => ev.UserId == User.Identity.Name)?.UserIdToVote;

            // just gets user's first name
            string userIdToVoteName = _context.Users.SingleOrDefault(u => u.UserId == userIdToVote)?.FirstName;

            if (prevEvent == null)
            {
                return(NotFound());
            }
            EventPhotoModel epModel = new EventPhotoModel {
                Events = prevEvent, EventUserPhotos = evtUserPhoto, UserIdToVote = userIdToVote, UserIdToVoteName = userIdToVoteName
            };

            return(View(epModel));
        }
        public IActionResult EditEvent(int eventId)
        {
            Events selectedEvent = _context.Events.SingleOrDefault(e => e.EventId == eventId);
            IEnumerable <EventUserPhotos> selectedUserPhotos = _context.EventUserPhotos.Include(e => e.User).Where(e => e.EventId == eventId).AsQueryable <EventUserPhotos>();
            EventPhotoModel editingModel = new EventPhotoModel {
                Events = selectedEvent, EventUserPhotos = selectedUserPhotos
            };

            return(View(editingModel));
        }
        public ViewResult CurrentEvent()
        {
            Events curEvent = _context.Events.SingleOrDefault(e => e.IsClosed == false);

            if (curEvent == null)
            {
                return(View(new EventPhotoModel()));
            }
            IEnumerable <EventUserPhotos> evtUserPhoto = _context.EventUserPhotos.Include(e => e.User).Where(e => e.EventId == curEvent.EventId);
            var    userIdToVote     = evtUserPhoto?.FirstOrDefault(ev => ev.UserId == User.Identity.Name)?.UserIdToVote;
            string userIdToVoteName = _context.Users.SingleOrDefault(u => u.UserId == userIdToVote)?.FirstName;

            EventPhotoModel epModel = new EventPhotoModel {
                Events = curEvent, EventUserPhotos = evtUserPhoto, UserIdToVote = userIdToVote, UserIdToVoteName = userIdToVoteName
            };

            return(View(epModel));
        }
 public IActionResult EditEvent(IFormFile introPicture, EventPhotoModel editingEvent)
 {
     if (ModelState.IsValid)
     {
         // save new event
         if (editingEvent.Events.EventId == 0)
         {
             _context.Events.Add(editingEvent.Events);
         }
         else
         {
             // replace existing data to new input data
             Events savingEvent = _context.Events.SingleOrDefault(e => e.EventId == editingEvent.Events.EventId);
             if (savingEvent != null)
             {
                 savingEvent.EventName = editingEvent.Events.EventName;
                 savingEvent.EventRule = editingEvent.Events.EventRule;
                 savingEvent.IsClosed  = editingEvent.Events.IsClosed;
                 savingEvent.StartDate = editingEvent.Events.StartDate;
                 savingEvent.EndDate   = editingEvent.Events.EndDate;
                 if (introPicture != null && introPicture.Length > 0)
                 {
                     // when change to new Intro picture
                     using (MemoryStream ms = new MemoryStream())
                     {
                         introPicture.CopyTo(ms);
                         byte[] imageBytes = ms.ToArray();
                         savingEvent.IntroImage = imageBytes;
                     }
                 }
             }
         }
         _context.SaveChanges();
         // TempData is used in _AdminLayout to show what have chagned
         TempData["actionresult"] = $"{editingEvent.Events.EventName} has been saved";
         return(RedirectToAction("Index"));
     }
     else
     {
         var returnData = _context.Events.FirstOrDefault(e => e.EventId == editingEvent.Events.EventId);
         return(View(returnData));
     }
 }