private void ProcessResult(ProcessResult processResult, TournamentTask task, TournamentTaskAssignment assignee)
        {
            if (processResult.State == ProcessState.Completed && processResult.Status == BuildStatus.Complete)
            {
                assignee.Attempts       += 1;
                assignee.LastAttemptedAt = DateTime.Now;
                bool isEqual = storageManager.CompareFiles(task.InputFilePath, processResult.OutputFilePath);
                assignee.IsPassed = isEqual;
                taskRepository.Update(task);
            }
            else if (processResult.State == ProcessState.Error)
            {
                var errorType = processResultHelper.GetErrorType(processResult.Error);

                if (errorType == ProceesResultErrorType.Unknown || errorType == ProceesResultErrorType.Internal)
                {
                    return;
                }

                assignee.Attempts       += 1;
                assignee.LastAttemptedAt = DateTime.Now;
                assignee.IsPassed        = false;
                taskRepository.Update(task);
            }
        }
        public IActionResult OnPostAddTask(int?id)
        {
            if (!id.HasValue)
            {
                return(NotFound());
            }

            var tournament = tournamentRepository.GetTournament(id.Value);

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

            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            var user   = userRepository.Get(userId);

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

            TournamentTask task = new TournamentTask
            {
                Tournament = tournament,
                DueDate    = tournament.DueDate,
                Owner      = user,
                Name       = "Draft " + DateTime.Now.ToShortDateString(),
                CreatedAt  = DateTime.Now,
            };

            taskRepository.Add(task);

            return(LocalRedirect($"/Lecturer/Tasks/Edit/{task.TournamentTaskId}"));
        }
 private void InitBaseFields(TournamentTask task)
 {
     Id               = task.TournamentTaskId;
     Name             = task.Name;
     LecturerFullName = task.Owner.FirstName + " " + task.Owner.SecondName;
     Desc             = task.Desc;
     DueDate          = task.DueDate;
     CreatedAt        = task.CreatedAt;
     MaxAttempts      = task.MaxAttempt;
     InputFilePath    = task.InputFilePath;
     Langs            = task.SupportedLanguages;
 }
        public StudentTaskDetailsViewModel(TournamentTask task, string userId)
        {
            InitBaseFields(task);

            if (task.Assignees != null)
            {
                var assignee = task.Assignees.FirstOrDefault(x => x.User.Id == userId);
                if (assignee != null)
                {
                    Passed      = assignee.IsPassed;
                    Attempts    = assignee.Attempts;
                    LastAttempt = assignee.LastAttemptedAt;
                }
            }
        }
 public void Plan(GameSettings settings , params object[] worldStates)
 {
     var participants = Json.Read<List<TournamentParticipant>>("participants.json");
     var list = new List<TournamentTask>();
     int counter = 0;
     foreach(var e in participants)
         for (int i = 0; i<worldStates.Length;i++)
         {
             var state = worldStates[i];
             var task = new TournamentTask
             {
                 Id = i.ToString() + "-" + e.Id,
                 Participants = new List<TournamentParticipant> { e },
                 GameSettings = settings,
                 WorldState = JObject.FromObject(state)
             };
             list.Add(task);
         }
     Json.Write("tournament.json", list);
 }
Example #6
0
        public void Plan(GameSettings settings, int[] counts, object[] worldStates, int seed)
        {
            var groups       = GetGroups(seed, counts);
            var list         = new List <TournamentTask>();
            var gr           = new List <TournamentTask[, ]>();
            int stateCounter = 0;

            foreach (var e in groups)
            {
                var currentGr = new TournamentTask[e.Count, e.Count];
                gr.Add(currentGr);

                for (int first = 0; first < e.Count - 1; first++)
                {
                    for (int second = first + 1; second < e.Count; second++)
                    {
                        var p1    = e[first];
                        var p2    = e[second];
                        var state = worldStates[stateCounter];
                        var task  = new TournamentTask
                        {
                            Id           = stateCounter + "-" + p1.Id + "-" + p2.Id,
                            GameSettings = settings,
                            WorldState   = JObject.FromObject(state),
                            Participants = new List <TournamentParticipant>
                            {
                                p1,
                                p2
                            }
                        };
                        currentGr[first, second] = task;
                        list.Add(task);
                        stateCounter = (stateCounter + 1) % worldStates.Length;
                    }
                }
            }
            Json.Write("tournament.json", list);
            Json.Write("groups.json", gr);
        }
 public StudentTaskDetailsViewModel(TournamentTask task) => InitBaseFields(task);