public async Task <IActionResult> Update(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            EventModerator moder = await _context.EventModerators.Where(c => !c.IsDeleted && c.ModeratorId == _userManager.GetUserId(User) && c.EventId == id).Include(c => c.Event).FirstOrDefaultAsync();

            if (moder == null)
            {
                return(NotFound());
            }
            Event @event = await _context.Events.Where(e => !e.IsDeleted && e.Id == id).FirstOrDefaultAsync();

            if (@event == null)
            {
                return(NotFound());
            }

            _context.IncludeCategoryEvent(false);

            List <Category> ctg = _context.Categories.Where(c => !c.IsDeleted && c.Activeted).ToList();

            ViewBag.Categories = ctg;

            return(View(@event));
        }
        public async Task <IActionResult> Status(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            EventModerator moder = await _context.EventModerators.Where(c => !c.IsDeleted && c.ModeratorId == _userManager.GetUserId(User) && c.EventId == id).Include(c => c.Event).FirstOrDefaultAsync();

            if (moder == null)
            {
                return(NotFound());
            }
            Event @event = await _context.Events.FindAsync(id);

            if (@event == null)
            {
                return(NotFound());
            }

            _context.IncludeCategoryEvent(false);
            _context.IncludeModeratorsEvent(true);

            foreach (EventCategory item in @event.EventCategories)
            {
                item.Activeted = [email protected];
            }
            foreach (EventModerator item in @event.EventModerators)
            {
                item.Activeted = [email protected];
            }
            @event.Activeted = [email protected];
            await _context.SaveChangesAsync();

            return(Json(new
            {
                suc = true,
                status = @event.Activeted
            }));
        }
        public async Task <IActionResult> Update(int?id, Event @event, int[] Categories)
        {
            List <Category> ctg = _context.Categories.Where(c => !c.IsDeleted && c.Activeted).ToList();

            ViewBag.Categories = ctg;

            if (id == null)
            {
                return(NotFound());
            }

            EventModerator moder = await _context.EventModerators.Where(c => !c.IsDeleted && c.ModeratorId == _userManager.GetUserId(User) && c.EventId == id).Include(c => c.Event).FirstOrDefaultAsync();

            if (moder == null)
            {
                return(NotFound());
            }
            Event eventDb = await _context.Events.Where(e => !e.IsDeleted && e.Id == id).FirstOrDefaultAsync();

            _context.IncludeCategoryEvent(false);
            if (@event == null)
            {
                return(NotFound());
            }

            if (id == null)
            {
                return(NotFound());
            }
            if (Helpers.Helper.CheckLengthArray(Categories, ModelState))
            {
                return(View(eventDb));
            }


            if (!ModelState.IsValid)
            {
                return(View(eventDb));
            }

            if (@event.Title != eventDb.Title)
            {
                bool IsExist = _context.Events.Where(e => !e.IsDeleted).Any(e => e.Title.ToLower() == @event.Title.ToLower());
                if (IsExist)
                {
                    ModelState.AddModelError("Name", "This course name already exist!!!");
                    return(View(eventDb));
                }
            }

            if (@event.Photo != null)
            {
                if ([email protected](ModelState))
                {
                    return(View(eventDb));
                }
                string folder   = Path.Combine("site", "img", "event");
                string fileName = await @event.Photo.SaveImage(_env.WebRootPath, folder);

                eventDb.Image = fileName;
            }



            List <EventCategory> eventCategories = new List <EventCategory>();

            foreach (int categoryId in Categories)
            {
                eventCategories.Add(new EventCategory
                {
                    CategoryId = categoryId,
                    EventId    = @event.Id,
                    Activeted  = @event.Activeted
                });
            }


            eventDb.Title           = @event.Title;
            eventDb.StartTime       = @event.StartTime;
            eventDb.EndTime         = @event.EndTime;
            eventDb.Description     = @event.Description;
            eventDb.Venue           = @event.Venue;
            eventDb.EventCategories = eventCategories;
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }