public void SetMark(EditathonCode code, [FromBody] MarkPostData body) { var e = code.Get(q => q.FetchMany(_ => _.Articles).ThenFetch(a => a.Marks)); var user = _identity.GetUserInfo(); var article = e.Articles.SingleOrDefault(a => a.Name == body.Title); if (article == null) { throw NotFound(); } var mark = article.Marks.SingleOrDefault(m => m.User == user.Username); if (mark == null) { mark = new Mark { Article = article, User = user.Username, }; article.Marks.Add(mark); } mark.Marks = JObject.Parse(body.Marks); mark.Comment = body.Comment; }
public HttpResponseMessage SetMark(string code, [FromBody] MarkPostData body) { _auditContext.Operation = OperationType.SetMark; var user = _identity.GetUserInfo(); if (user == null) { return(Unauthorized()); } var e = Session.Query <Editathon>() .FetchMany(_ => _.Articles).ThenFetch(a => a.Marks) .Fetch(_ => _.Jury) .SingleOrDefault(i => i.Code == code); if (e == null) { return(NotFound()); } if (!e.Jury.Contains(user.Username)) { return(Forbidden()); } var article = e.Articles.SingleOrDefault(a => a.Name == body.Title); if (article == null) { return(NotFound()); } var mark = article.Marks.SingleOrDefault(m => m.User == user.Username); if (mark == null) { mark = new Mark { Article = article, User = user.Username, }; article.Marks.Add(mark); } mark.Marks = JObject.Parse(body.Marks); mark.Comment = body.Comment; return(Ok()); }