Exemple #1
0
        public EventSnippets UserActiveEvent(string UserID)
        {
            UserEvents activeEvent = db.UserEvents.Include(x => x.Event).Where(x => x.UserID == UserID && !x.Finished).FirstOrDefault();

            if (activeEvent == null)
            {
                return(null);
            }

            if (activeEvent.Event.End < Utilities.DateHelper.GetCurrentTime())
            {
                activeEvent.Finished = true;
                db.SaveChanges();
                return(null);
            }

            EventSnippets result = db.UserEvents.Include(x => x.Event).Include(x => x.Event.EventSnippets).Where(x => x.UserID == UserID && !x.Finished)
                                   .SelectMany(x => x.Event.EventSnippets.Where(y => y.OrderNumber == x.Event.EventSnippets.Max(t => t.OrderNumber))).FirstOrDefault();

            //if()

            //EventSnippets result = activeEvent.Event.EventSnippets.SelectMany(x => x.Event.EventSnippets.Where(y => y.OrderNumber == x.Event.EventSnippets.Max(t => t.OrderNumber))).FirstOrDefault();

            return(result);
        }
Exemple #2
0
        //id == orderNumber
        public ActionResult Game(int id)
        {
            string userID = User.Identity.GetUserId();

            var userActiveEvent = _userService.UserActiveEvent(userID);
            var validateEvent   = _eventService.GetEventById(id);

            //Event doesnt exist , its finished or it is not started yet
            if (validateEvent == null || validateEvent.End < DateHelper.GetCurrentTime() || validateEvent.Start > DateHelper.GetCurrentTime())
            {
                return(RedirectToAction("Start"));
            }

            //Has no active events start a new one
            if (userActiveEvent == null)
            {
                EventSnippets firstSnippet = _userService.BeginEvent(User.Identity.GetUserId(), validateEvent.ID);

                //Already participated and finished
                if (firstSnippet == null)
                {
                    TempData["EventFinished"] = true;
                    return(RedirectToAction("Result"));
                }
                _snippetService.CreateInitialAnswer(userID, firstSnippet.EventID, firstSnippet.SnippetID);
                userActiveEvent         = _userService.UserActiveEvent(userID);
                ViewBag.lastOrderNumber = userActiveEvent.OrderNumber;
                firstSnippet.Event      = validateEvent;
                return(View(firstSnippet));
                //return view with first snippet
            }

            //Has active event but wants to start another one
            if (userActiveEvent.EventID != validateEvent.ID)
            {
                // should redirect to lobby of the event
                TempData["RedirectToLobbyMsg"] = true;
                return(RedirectToAction("Lobby", new { id = userActiveEvent.EventID }));
            }

            int lastAnsweredOrderNumber = _snippetService.GetLastAnsweredSnippetOrderNumber(userID, userActiveEvent.EventID);

            if (++lastAnsweredOrderNumber > userActiveEvent.OrderNumber)
            {
                _eventService.FinishEventForUser(userActiveEvent.EventID, userID);
                TempData["EventFinished"] = true;
                return(RedirectToAction("Result"));
            }


            var model = _snippetService.GetSnippetWithOrderNumber(lastAnsweredOrderNumber, userActiveEvent.EventID);

            _snippetService.CreateInitialAnswer(userID, userActiveEvent.EventID, model.SnippetID);
            ViewBag.lastOrderNumber = userActiveEvent.OrderNumber;

            model.Event = validateEvent;

            return(View(model));
        }
Exemple #3
0
        public bool AddOrUpdateEvent(Event ev, List <Int32> IDs)
        {
            int res;

            List <EventSnippets> snippetEvents = new List <EventSnippets>();

            for (int i = 0; i < IDs.Count; i++)
            {
                EventSnippets snippetEvent = new EventSnippets
                {
                    SnippetID   = IDs[i],
                    OrderNumber = i + 1
                };
                snippetEvents.Add(snippetEvent);
            }


            if (ev.ID > 0)
            {
                Event eventToUpdate = db.Events.Where(x => x.ID == ev.ID).Include(x => x.EventSnippets).FirstOrDefault();
                db.EventSnippets.RemoveRange(eventToUpdate.EventSnippets);
                res = db.SaveChanges();
                eventToUpdate.Name                   = ev.Name;
                eventToUpdate.Description            = ev.Description;
                eventToUpdate.Start                  = ev.Start;
                eventToUpdate.End                    = ev.End;
                snippetEvents.ForEach(x => x.EventID = ev.ID);
                eventToUpdate.EventSnippets          = snippetEvents;
                res = db.SaveChanges();
            }
            else
            {
                ev.EventSnippets = snippetEvents;
                db.Events.Add(ev);
                res = db.SaveChanges();
            }

            return(res > 0);
        }