public HttpResponseMessage PostAnswerToIssue(AnswerIssue answer, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string authKey) { HttpResponseMessage responseMessage; User sqlUser; if (!ValidateCredentials.AuthKeyIsValid(db, authKey, out sqlUser) || answer.Text.Length > 300) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid information."); return(responseMessage); } MongoCollection <UsersProjects> usersInProjects = mongoDb.GetCollection <UsersProjects>(MongoCollections.UsersInProjects); // todo projects need to be recognized by id // the relation table has to save the id and use it in further queries MongoCollection <OpenIssue> issuesCollection = mongoDb.GetCollection <OpenIssue>(MongoCollections.Issues); var issue = issuesCollection.AsQueryable <OpenIssue>().FirstOrDefault(x => x.Id == new ObjectId(answer.IssueId)); if (issue == null) { responseMessage = this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No such issue."); return(responseMessage); } issue.Answers.Add(answer); issuesCollection.Save(issue); List <AnswerIssue> entries = GetEntries(issue); return(responseMessage = this.Request.CreateResponse(HttpStatusCode.OK, new { Entries = entries })); }
private static List <AnswerIssue> GetEntries(OpenIssue issue) { List <AnswerIssue> entries = new List <AnswerIssue>(); AnswerIssue question = new AnswerIssue() { Time = issue.DatePosted, Username = issue.ByUser, Text = issue.Text }; entries.Add(question); entries.AddRange(issue.Answers); return(entries); }