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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }