public async Task <bool> MarkWorkAsync(MarkWorkRequest request) { var currentUserExistingMark = await _dbContext.Marks.FirstOrDefaultAsync(x => x.WorkId == int.Parse(request.WorkId) && x.CriteriaId == int.Parse(request.CriteriaId) && x.State == ModelState.Active && (x.IdCode == request.IdCode || x.UserId == request.UserId)); var currentUserType = (await _dbContext.Users.FirstOrDefaultAsync(x => x.Id == request.UserId))?.UserType; if (currentUserExistingMark == null) { await _dbContext.AddAsync(new Mark { CreationDate = DateTime.Now, CriteriaId = int.Parse(request.CriteriaId), IdCode = request.IdCode, UserType = currentUserType, State = ModelState.Active, Value = byte.Parse(request.Mark), WorkId = int.Parse(request.WorkId), UserId = request.UserId }); await _dbContext.SaveChangesAsync(); } else { currentUserExistingMark.Value = byte.Parse(request.Mark); } return(true); }
public async Task <ActionResult> MarkWorkAsync(MarkWorkRequest request) { try { if (_contextAccessor.HttpContext.User.IsAuthenticated()) { request.UserId = _contextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; } else { request.UserId = null; } request.IdCode = _contextAccessor.HttpContext.Request.Cookies[".AspNetCore.Identity.Application"]; var result = await _contestService.MarkWorkAsync(request); return(Result.Ok(result)); } catch (Exception ex) { return(Result.Error(ex)); } }