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;
        }
Esempio n. 2
0
        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());
        }