public async Task <IActionResult> Patch(string Id, [FromBody] QuestionSetView set) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } QuestionSet questionSet = await db.QuestionSets.GetWithQuestionsAsync(Id); if (questionSet == null) { return(NotFound(Id)); } questionSet.Title = set.Title; questionSet.Image = set.Image; questionSet.Desc = set.Desc; db.QuestionSets.Update(questionSet); await db.SaveAsync(); var user = await userManager.GetUserAsync(User); QuestionSetView view = await QuestionToView(user.UserName, questionSet); return(Ok(view)); }
public async Task <IActionResult> Move(string Id, string moveFolderId) { QuestionSet questionSet = await db.QuestionSets.GetWithQuestionsAsync(Id); if (questionSet == null) { return(NotFound(Id)); } Folder folder = await db.Folders.GetAsync(moveFolderId); if (moveFolderId != "root" && folder == null) { return(BadRequest($"Not found folder {moveFolderId}")); } questionSet.FolderId = folder?.Id; db.QuestionSets.Update(questionSet); await db.SaveAsync(); var user = await userManager.GetUserAsync(User); QuestionSetView view = await QuestionToView(user.UserName, questionSet); return(Ok(view)); }
public async Task <IActionResult> Post([FromBody] QuestionSetView set) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await userManager.GetUserAsync(User); var folderId = (await db.Folders.FirstOrDefaultAsync(f => f.Id == set.FolderId))?.Id; if (set.FolderId != "root" && folderId == null) { return(BadRequest($"Not found folder {set.FolderId}")); } set.FolderId = folderId; QuestionSet questionSet = new QuestionSet(user, set.Title, DateTime.Now, set.FolderId, set.Image, set.Desc); await db.QuestionSets.AddAsync(questionSet); await db.SaveChangesAsync(); QuestionSetView view = new QuestionSetView(questionSet, await GetBreadcrumbsAsync(questionSet.Id)); return(Ok(view)); }
public async Task <IActionResult> Patch(string Id, [FromBody] QuestionSetView set) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } QuestionSet questionSet = await db.QuestionSets .Include(q => q.ApplicationUser) .Include(q => q.Questions) .FirstOrDefaultAsync(q => q.Id == Id); if (questionSet == null) { return(NotFound(Id)); } Folder folder = await db.Folders.FirstOrDefaultAsync(f => f.Id == set.FolderId); if (set.FolderId != "root" && folder == null) { return(BadRequest($"Not found folder {set.FolderId}")); } //Опасная зона set.FolderId = folder?.Id; questionSet.Update(set); db.QuestionSets.Update(questionSet); await db.SaveChangesAsync(); QuestionSetView view = new QuestionSetView(questionSet, await GetBreadcrumbsAsync(questionSet.Id)); return(Ok(view)); }
public async Task <IActionResult> Get(string Id) { var user = await userManager.GetUserAsync(User); QuestionSet set = await db.QuestionSets.GetWithQuestionsNoTrackAsync(Id); if (set == null) { return(NotFound(Id)); } QuestionSetView view = await QuestionToView(user.UserName, set); return(Ok(view)); }
/// <summary> /// Mapper QuestionSet to QuestionSetView, with questions /// </summary> /// <param name="userName"></param> /// <param name="questionSet"></param> /// <returns></returns> private async Task <QuestionSetView> QuestionToView(string userName, QuestionSet questionSet) { var mapper = new MapperConfiguration(cfg => { cfg.CreateMap <QuestionSet, QuestionSetView>() .ForMember("Owner", opt => opt.UseValue <string>(userName)); }).CreateMapper(); QuestionSetView view = mapper.Map <QuestionSet, QuestionSetView>(questionSet); view.Breadcrumbs = await GetBreadcrumbsAsync(view.Id); view.Questions = view.Questions.OrderBy(q => q.Order).ToList(); return(view); }
public async Task <IActionResult> Get(string Id) { QuestionSet set = await db.QuestionSets .AsNoTracking() .Include(q => q.ApplicationUser) .Include(q => q.Questions) .FirstOrDefaultAsync(q => q.Id == Id); if (set == null) { return(NotFound(Id)); } //set.Questions = set.Questions.OrderBy(q => q.Order).ToList(); QuestionSetView view = new QuestionSetView(set, await GetBreadcrumbsAsync(Id)); return(Ok(view)); }
public async Task <IActionResult> Post([FromBody] QuestionSetView set) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await userManager.GetUserAsync(User); var folderId = (await db.Folders.GetAsync(set.FolderId))?.Id; if (set.FolderId != "root" && folderId == null) { return(BadRequest($"Not found folder {set.FolderId}")); } set.FolderId = folderId; QuestionSet questionSet = new QuestionSet() { Id = Guid.NewGuid().ToString(), AppUserId = user.Id, Created = DateTime.Now, FolderId = set.FolderId, Image = set.Image, Desc = set.Desc, Title = set.Title, Questions = new List <Question>() }; await db.QuestionSets.AddAsync(questionSet); await db.SaveAsync(); QuestionSetView view = await QuestionToView(user.UserName, questionSet); return(CreatedAtAction("Get", new { id = view.Id }, view)); }