public async Task <bool> AddWorkAsync(AddWorkRequest request) { var contest = await _dbContext.Contests .Include(x => x.Users) .FirstOrDefaultAsync(x => x.Id == int.Parse(request.ContestId)); if (contest.IsOpen || contest.Users.Any(x => x.UserId == request.UserId)) { await _dbContext.AddAsync(new Work { UserId = request.UserId, ContestId = int.Parse(request.ContestId), Description = request.Description, Title = request.Title, State = ModelState.Active, Source = request.Source, WorkStatus = WorkState.Unmarked }); await _dbContext.SaveChangesAsync(); return(true); } return(false); }
public async Task <ActionResult> AddWork(AddWorkRequest work) { try { work.UserId = _contextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; var result = await _contestService.AddWorkAsync(work); return(Result.Ok(result)); } catch (Exception ex) { return(Result.Error(ex)); } }