public async Task <ViewModels.ApplicationInstance> UpdateInstanceAsync(Guid id, ViewModels.ApplicationInstanceForm form, CancellationToken ct) { var instanceToUpdate = await _context.ApplicationInstances .Include(ai => ai.Team) .SingleOrDefaultAsync(v => v.Id == id, ct); if (instanceToUpdate == null) { throw new EntityNotFoundException <ApplicationInstance>(); } if (!(await _authorizationService.AuthorizeAsync(_user, null, new ExerciseAdminRequirement(instanceToUpdate.Team.ExerciseId))).Succeeded) { throw new ForbiddenException(); } Mapper.Map(form, instanceToUpdate); _context.ApplicationInstances.Update(instanceToUpdate); await _context.SaveChangesAsync(ct); var instance = await _context.ApplicationInstances .ProjectTo <ViewModels.ApplicationInstance>() .SingleOrDefaultAsync(i => i.Id == instanceToUpdate.Id, ct); return(instance); }
public async Task <ViewModels.ApplicationInstance> CreateInstanceAsync(Guid teamId, ViewModels.ApplicationInstanceForm form, CancellationToken ct) { var team = await _context.Teams.Where(e => e.Id == teamId).SingleOrDefaultAsync(ct); if (team == null) { throw new EntityNotFoundException <Team>(); } if (!(await _authorizationService.AuthorizeAsync(_user, null, new ExerciseAdminRequirement(team.ExerciseId))).Succeeded) { throw new ForbiddenException(); } var instanceEntity = Mapper.Map <ApplicationInstanceEntity>(form); _context.ApplicationInstances.Add(instanceEntity); await _context.SaveChangesAsync(ct); var instance = await _context.ApplicationInstances .ProjectTo <ViewModels.ApplicationInstance>() .SingleOrDefaultAsync(i => i.Id == instanceEntity.Id, ct); return(instance); }