private async Task <Poll> UpdatePoll(Poll poll, QuestionnaireUpdate questionnaire) { try { var result = _context.Poll.Update(poll); if (null == poll.PollPropId) { if ((bool)questionnaire.IsPublic) { await AddPollPropByPollId(result.Entity.Id, new PollProp { IsPublic = questionnaire.IsPublic }); } } else { if (null != questionnaire.IsPublic) { poll.PollProp.IsPublic = questionnaire.IsPublic; } } result.State = EntityState.Modified; await _context.SaveChangesAsync(); return(result.Entity); } catch (JsonSerializationException) { return(null); } }
public async Task <Poll> UpdatePollByUserId(long userId, QuestionnaireUpdate questionnaire) { var result = await _context.Poll .Include(p => p.PollProp) .Where(p => p.User.Id == userId) .Where(p => p.Id == questionnaire.Id) .AsNoTracking() .SingleOrDefaultAsync(); if (null == result) { return(null); } try { result.Content = JsonConvert.SerializeObject(questionnaire.Content); } catch (JsonSerializationException) { return(null); } return(await UpdatePoll(result, questionnaire)); }
public async Task <ActionResult> UpdatePoll([FromBody] QuestionnaireUpdate questionnaire) { var result = PollExtensions.ToQuestionnaireResponse(await _service.UpdatePollByUserId( long.Parse(User.GetSubjectId()), questionnaire)); if (null == result) { return(BadRequest(new ResponseState(null))); } await _service.DeleteAnswersByPollId(questionnaire.Id); return(Ok(new ResponseState(result))); }