Ejemplo n.º 1
0
    public async Task <LabExecution> CreateLabExecutionAsync(LabExecution labExecution, bool updateExisting, CancellationToken cancellationToken)
    {
        // Update existing one?
        LabExecutionEntity labExecutionEntity;

        if (updateExisting && (labExecutionEntity = await _dbContext.LabExecutions.FindAsync(new object[] { labExecution.GroupId, labExecution.LabId }, cancellationToken)) != null)
        {
            labExecutionEntity.PreStart = labExecution.PreStart;
            labExecutionEntity.Start    = labExecution.Start;
            labExecutionEntity.End      = labExecution.End;
        }
        else
        {
            // Create new labExecution
            labExecutionEntity = _dbContext.LabExecutions.Add(new LabExecutionEntity
            {
                GroupId  = labExecution.GroupId,
                LabId    = labExecution.LabId,
                PreStart = labExecution.PreStart,
                Start    = labExecution.Start,
                End      = labExecution.End
            }).Entity;
        }

        // Apply changes
        await _dbContext.SaveChangesAsync(cancellationToken);

        return(_mapper.Map <LabExecution>(labExecutionEntity));
    }
Ejemplo n.º 2
0
        public async Task <Slot> CreateSlotAsync(Slot slot, CancellationToken cancellationToken = default)
        {
            // Create new Slot
            var slotEntity = _dbContext.Slots.Add(new SlotEntity
            {
                Name   = slot.Name,
                Groups = new List <GroupEntity>()
            }).Entity;

            // Apply changes
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <Slot>(slotEntity));
        }
Ejemplo n.º 3
0
        public async Task <Lab> CreateLabAsync(Lab lab, CancellationToken cancellationToken = default)
        {
            // Create new lab
            var labEntity = _dbContext.Labs.Add(new LabEntity
            {
                Name          = lab.Name,
                ApiCode       = lab.ApiCode,
                ServerBaseUrl = lab.ServerBaseUrl,
                MaxPoints     = lab.MaxPoints,
                MaxFlagPoints = lab.MaxFlagPoints,
                Exercises     = new List <ExerciseEntity>(),
                Flags         = new List <FlagEntity>(),
                Executions    = new List <LabExecutionEntity>()
            }).Entity;

            // Apply changes
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <Lab>(labEntity));
        }
Ejemplo n.º 4
0
        private async Task AddOrUpdateConfigItem <TValue>(string key, TValue value, CancellationToken cancellationToken)
        {
            // Write updated config to database
            string cacheKey = "config-" + key;
            var    config   = await _dbContext.ConfigurationItems.FindAsync(new object[] { key }, cancellationToken);

            if (config == null)
            {
                await _dbContext.ConfigurationItems.AddAsync(new ConfigurationItemEntity { Key = key, Value = value.ToString() }, cancellationToken);
            }
            else
            {
                config.Value = value.ToString();
            }
            await _dbContext.SaveChangesAsync(cancellationToken);

            // Update cache
            _cache.Set(cacheKey, value.ToString());
        }
Ejemplo n.º 5
0
    public async Task <Exercise> CreateExerciseAsync(Exercise exercise, CancellationToken cancellationToken)
    {
        // Create new exercise
        var exerciseEntity = _dbContext.Exercises.Add(new ExerciseEntity
        {
            LabId               = exercise.LabId,
            ExerciseNumber      = exercise.ExerciseNumber,
            Name                = exercise.Name,
            IsMandatory         = exercise.IsMandatory,
            IsPreStartAvailable = exercise.IsPreStartAvailable,
            BasePoints          = exercise.BasePoints,
            PenaltyPoints       = exercise.PenaltyPoints,
            Submissions         = new List <ExerciseSubmissionEntity>()
        }).Entity;

        // Apply changes
        await _dbContext.SaveChangesAsync(cancellationToken);

        return(_mapper.Map <Exercise>(exerciseEntity));
    }
Ejemplo n.º 6
0
        public async Task <Flag> CreateFlagAsync(Flag flag, CancellationToken cancellationToken = default)
        {
            // Create new Flag
            var flagEntity = _dbContext.Flags.Add(new FlagEntity
            {
                Code        = flag.Code,
                Description = flag.Description,
                BasePoints  = flag.BasePoints,
                IsBounty    = flag.IsBounty,
                LabId       = flag.LabId,
                Submissions = new List <FlagSubmissionEntity>()
            }).Entity;

            // Apply changes
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <Flag>(flagEntity));
        }
Ejemplo n.º 7
0
        public async Task <User> CreateUserAsync(User user, CancellationToken cancellationToken = default)
        {
            // Create new user
            var userEntity = _dbContext.Users.Add(new UserEntity
            {
                DisplayName         = user.DisplayName,
                MoodleUserId        = user.MoodleUserId,
                MoodleName          = user.MoodleName,
                IsAdmin             = user.IsAdmin,
                IsTutor             = user.IsTutor,
                GroupFindingCode    = user.GroupFindingCode,
                ExerciseSubmissions = new List <ExerciseSubmissionEntity>(),
                FlagSubmissions     = new List <FlagSubmissionEntity>()
            }).Entity;

            // Apply changes
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <User>(userEntity));
        }