示例#1
0
        public IActionResult Index()
        {
            var model = new ContestViewModel();

            model.Contests = _contestRepository.GetAllContests().OrderByDescending(d => d.Date).ToList();
            return(View(model));
        }
示例#2
0
        //[ValidateAntiForgeryToken]
        public IActionResult CreateContest()
        {
            var viewModel = new ContestViewModel();


            return(View(viewModel));
        }
示例#3
0
        public IActionResult Delete([FromForm] ContestViewModel contest)
        {
            //delete the user assigned to this contest from user contest
            var listOfParticipant = _userContestRepository.GetAll().Where(part => part.ContestId == contest.ContestId).ToList();

            foreach (var item in listOfParticipant)
            {
                _userContestRepository.Delete(item);
            }

            //delete submission
            var listOfSubmission = _submisionContestRepository.GetAll().Where(subm => subm.ContestId == contest.ContestId).ToList();

            foreach (var item in listOfSubmission)
            {
                _submisionContestRepository.Delete(item);
            }

            //delete problem assigned to a contest
            var listOfProblems = _problemContestRepository.GetAll().Where(prob => prob.ContestId == contest.ContestId).ToList();

            foreach (var item in listOfProblems)
            {
                _problemContestRepository.Delete(item);
            }


            _contestRepository.Delete(contest.ContestId);
            _contestRepository.Save();
            return(RedirectToAction(nameof(Index)));
        }
示例#4
0
        public IActionResult AddFish(ContestViewModel model)
        {
            var fish = new Fish();

            fish.ParticipantId = model.ParticipantId;
            fish.Length        = model.Fish.Length;
            _fishRepository.Add(fish);
            _fishRepository.Commit();
            return(RedirectToAction("Contest", "Home", new { id = model.Id }));
        }
示例#5
0
        public IActionResult AddParticipant(ContestViewModel model)
        {
            var participant = new Participant();

            participant.ContestId = model.Id;
            participant.Name      = model.Participant.Name;
            _participantRepository.Add(participant);
            _participantRepository.Commit();

            return(RedirectToAction("Contest", "Home", new { id = model.Id }));
        }
示例#6
0
        public ActionResult <Contest> Post([FromBody] ContestViewModel contest)
        {
            var newContest = new Contest {
                Id = contest.Id, Description = contest.Description, IsOpen = true
            };

            rocketDbContext.Contests.Add(newContest);
            rocketDbContext.SaveChanges();

            return(CreatedAtAction(nameof(Post), new { id = newContest.Id }, newContest));
        }
示例#7
0
        public ActionResult Create()
        {
            var questions = _context.Questions.ToList();

            var viewModel = new ContestViewModel()
            {
                SelectedQuestions = new List <KeyValuePair <Question, bool> >(),
                SelectedQuestion  = string.Empty,
                Questions         = questions
            };

            return(View("ContestForm", viewModel));
        }
示例#8
0
        //[ValidateAntiForgeryToken]
        public IActionResult CreateContest(ContestViewModel model)
        {
            if (ModelState.IsValid)
            {
                var newContest = new Contest();
                newContest.Date = model.Date;
                newContest.Name = model.ContestName;
                newContest      = _contestRepository.Add(newContest);
                _contestRepository.Commit();

                return(RedirectToAction("Index", "Home", new { id = newContest.Id }));  //Redirect till tävlingen
            }

            return(View(model));
        }
示例#9
0
        public ActionResult RemoveQuestion(ContestViewModel viewModel)
        {
            if (!string.IsNullOrEmpty(viewModel.SelectedQuestion))
            {
                KeyValuePair <Question, bool> selected = viewModel.SelectedQuestions.First(q => q.Key.Name == viewModel.SelectedQuestion);

                if (selected.Key != null)
                {
                    viewModel.Questions.Add(selected.Key);
                    viewModel.SelectedQuestions.Remove(selected);
                }
                viewModel.SelectedQuestion = string.Empty;
                ModelState.Clear();
            }
            return(View("ContestForm", viewModel));
        }
示例#10
0
        public ActionResult Edit(int id)
        {
            var contest = _context.Contests.Include(cq => cq.ContestQuestions).ThenInclude(cq => cq.Question).SingleOrDefault(c => c.Id == id);

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

            var selectedQuestions = new List <KeyValuePair <Question, bool> >();

            bool warning = false;

            foreach (var item in contest.ContestQuestions)
            {
                Question q = _context.Questions.SingleOrDefault(q => q.Id == item.QuestionId);

                var answerExists = _context.ContestQuestionUsers
                                   .Include(cqu => cqu.ContestQuestion)
                                   .Where(cqu => cqu.ContestQuestion.ContestId == id)
                                   .Where(cqu => cqu.ContestQuestion.QuestionId == q.Id)
                                   .Any();

                if (answerExists)
                {
                    warning = true;
                }

                //hodnota true znamená, že otázka už má záznam o odpovedi -> teda nebude možné ju vymazať
                selectedQuestions.Add(new KeyValuePair <Question, bool>(q, answerExists));
            }

            //otazky ktore nie su este v sutazi -> vsetky - zvolene
            var notSelectedQuestions = _context.Questions.Where(q => !contest.ContestQuestions.Select(cq => cq.QuestionId).Any(cqID => q.Id == cqID)).ToList();

            var viewModel = new ContestViewModel()
            {
                ContestId         = contest.Id,
                ContestName       = contest.Name,
                Warning           = warning,
                SelectedQuestions = selectedQuestions,
                SelectedQuestion  = string.Empty,
                Questions         = notSelectedQuestions
            };

            return(View("ContestForm", viewModel));
        }
示例#11
0
        //[ValidateAntiForgeryToken]
        public IActionResult Contest(Guid id)
        {
            var theContest   = _contestRepository.GetContestById(id);
            var participants = GetParticipantsByContestId(id);
            var fishes       = _fishRepository.GetAllFishes();
            var viewModel    = new ContestViewModel
            {
                Id           = theContest.Id,
                ContestName  = theContest.Name,
                Date         = theContest.Date,
                Species      = theContest.Species,
                Participants = participants,
                Fishes       = fishes.ToList()
            };

            return(View(viewModel));
        }
示例#12
0
        public IActionResult Edit([FromForm] ContestViewModel contest)
        {
            var contestToEdit = _contestRepository.GetItem(contest.ContestId);

            if (contestToEdit == null)
            {
                return(BadRequest("Nothing to edit"));
            }

            contestToEdit.Title     = contest.Title;
            contestToEdit.Content   = contest.Content;
            contestToEdit.StartDate = contest.StartDate;
            contestToEdit.EndDate   = contest.EndDate;

            _contestRepository.Update(contestToEdit);
            _contestRepository.Save();

            return(RedirectToAction(nameof(Index)));
        }
示例#13
0
        public ActionResult Create(ContestViewModel viewModel)
        {
            var contest = new Contest();

            if (viewModel.ContestId != 0)
            {
                contest = _context.Contests.Include(cq => cq.ContestQuestions).SingleOrDefault(c => c.Id == viewModel.ContestId);
                _context.ContestQuestions.RemoveRange(contest.ContestQuestions);
            }

            contest.ContestQuestions = new List <ContestQuestion>();

            contest.Name = viewModel.ContestName;

            var questions = _context.Questions.ToList();

            int questionNumber = 1;

            for (int i = 0; i < viewModel.SelectedQuestions.Count; i++)
            {
                for (int j = 0; j < questions.Count; j++)
                {
                    if (questions[j].Id == viewModel.SelectedQuestions[i].Key.Id)
                    {
                        contest.ContestQuestions.Add(new ContestQuestion()
                        {
                            Contest = contest, Question = questions[j], QuestionNumber = questionNumber
                        });
                        questionNumber++;
                    }
                }
            }

            if (viewModel.ContestId == 0)
            {
                _context.Contests.Add(contest);
            }

            _context.SaveChanges();

            return(RedirectToAction("Index"));
        }
示例#14
0
        public ActionResult AddQuestion(ContestViewModel viewModel)
        {
            if (!string.IsNullOrEmpty(viewModel.SelectedQuestion))
            {
                Question selected = viewModel.Questions.FirstOrDefault(q => q.Name == viewModel.SelectedQuestion);

                if (selected != null)
                {
                    if (viewModel.SelectedQuestions == null)
                    {
                        viewModel.SelectedQuestions = new List <KeyValuePair <Question, bool> >();
                    }

                    viewModel.SelectedQuestions.Add(new KeyValuePair <Question, bool>(selected, false));
                    viewModel.Questions.Remove(selected);
                }
                viewModel.SelectedQuestion = string.Empty;
                ModelState.Clear();
            }
            return(View("ContestForm", viewModel));
        }
        public ActionResult Add(ContestViewModel model)
        {
            var loggedUserId = User.Identity.GetUserId();
            var user = this.Data.Users.All().FirstOrDefault(u => u.Id == loggedUserId);

            if (user != null)
            {
                if (model == null)
                {
                    return View(model);
                }

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

                var newContest = new Contest()
                {
                    Title = model.Title,
                    Description = model.Description,
                    CreatorId = loggedUserId,
                    CreatedOn = DateTime.Now,
                    ClosesOn = model.ClosesOn,
                    NumberOfAllowedParticipants = model.NumberOfAllowedParticipants,
                    ParticipationStrategy = model.ParticipationStrategy,
                    DeadlineStrategy = model.DeadlineStrategy,
                    RewardStrategy = model.RewardStrategy,
                    VotingStrategy = model.VotingStrategy
                };

                user.CreatedContests.Add(newContest);
                this.Data.SaveChanges();
                this.TempData["SuccessMessage"] = "Contest successfully created!";

                return RedirectToAction("MyContests", "Home");
            }

            return View();
        }
示例#16
0
        public ActionResult DeleteUserAnswers(Contest contest, ContestViewModel viewModel)
        {
            var contestId = 0;

            if (contest.Id == 0)
            {
                contestId = viewModel.ContestId;
            }
            else
            {
                contestId = contest.Id;
            }

            var contextQuestionUsersDb = _context.ContestQuestionUsers
                                         .Include(cqu => cqu.ContestQuestion)
                                         .Where(cqu => cqu.ContestQuestion.ContestId == contestId)
                                         .ToList();

            _context.RemoveRange(contextQuestionUsersDb);
            _context.SaveChanges();

            return(RedirectToAction("Index"));
        }
示例#17
0
        public IActionResult Add([FromForm] ContestViewModel contest)
        {
            if (ModelState.IsValid)
            {
                var contestModel = new Contest
                {
                    ContestId     = Guid.NewGuid(),
                    Content       = contest.Content,
                    StartDate     = contest.StartDate,
                    EndDate       = contest.EndDate,
                    StatusContest = ContestStatus.UnderConstruction.ToString(),
                    Title         = contest.Title,
                };
                _contestRepository.Create(contestModel);
                _contestRepository.Save();

                //send mail to all the registered user with the contest
                //InformUsersNewContest(contest.Title);

                return(RedirectToAction(nameof(Index)));
            }
            return(View());
        }
        public ActionResult AddContest(ContestViewModel contest)
        {
            var loggedUserId = User.Identity.GetUserId();
            var user = this.Data.Users.All().FirstOrDefault(u => u.Id == loggedUserId);
            if (user != null)
            {
                if (!ModelState.IsValid)
                {
                    return View(contest);
                }

                if (contest == null)
                {
                    return View(contest);
                }

                var newContest = new Contest()
                {
                    Title = contest.Title,
                    Description = contest.Description,
                    CreatorId = loggedUserId,
                    CreatenOn = DateTime.Now,
                    ClosesOn = contest.ClosesOn,
                    NumberOfAllowedParticipants = contest.NumberOfAllowedParticipants,
                    ParticipationStrategy = contest.ParticipationStrategy,
                    DeadlineStrategy = contest.DeadlineStrategy,
                    RewardStrategy = contest.RewardStrategy,
                    VotingStrategy = contest.VotingStrategy,
                };

                user.CreatedContests.Add(newContest);
                this.Data.SaveChanges();
            }

            TempData["contest"] = contest.Title;
            return View();
        }
        public ActionResult Delete(ContestViewModel model)
        {
            Contest contest = this.Data.Contests.GetById(model.Id);

            if (contest == null)
            {
                return HttpNotFound();
            }

            if (contest.Owner != this.UserProfile)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "You cannot delete a contest which is not yours.");
            }

            this.Data.Contests.Delete(contest);

            this.Data.SaveChanges();

            return RedirectToAction("Index", "Contests", new { id = model.Id });
        }
        public ActionResult Update(ContestViewModel model)
        {
            var contest = this.Data.Contests.GetById(model.Id);

            if (ModelState.IsValid)
            {
                if (contest == null)
                {
                    return this.HttpNotFound();
                }

                if (contest.OwnerId != this.UserProfile.Id)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "You cannot edit a contest which is not yours.");
                }

                contest.Title = model.Title;
                contest.Description = model.Description;
                contest.IsClosedForSubmissions = model.IsClosedForSubmissions;
                contest.IsClosedForVoting = model.IsClosedForVoting;

                this.Data.SaveChanges();

                return this.RedirectToAction("Details", new { id = contest.Id });
            }

            return View("Edit", model);
        }
 public ContestsController(IContest repo)
 {
     this._repo = repo;
     this.vm    = new ContestViewModel(_repo);
 }