예제 #1
0
        public async Task Update_BadModelState()
        {
            var ctl = CreateTagsController();

            ctl.ModelState.AddModelError("", "error");

            var request = new EditTagRequest();
            var result  = await ctl.Update(request);

            Assert.IsInstanceOf <BadRequestObjectResult>(result);
        }
예제 #2
0
        public async Task Update_OK()
        {
            var ctl = CreateTagsController();

            var request = new EditTagRequest
            {
                NewName = "fubao",
                TagId   = 996
            };
            var result = await ctl.Update(request);

            Assert.IsInstanceOf <OkResult>(result);
        }
        public async Task <IActionResult> Edit([FromBody] EditTagRequest request, [FromRoute] int accountId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var response = await _tagService.EditAsync(request, accountId);

            if (!response.IsValid)
            {
                return(BadRequest(response.Message));
            }
            return(Ok(response));
        }
예제 #4
0
        public async Task <BaseResponse> EditAsync(EditTagRequest request, int accountId)
        {
            var tag = await _tagRepository.GetAsync(tag => tag.Id == request.Id && tag.AccountId == accountId);

            if (tag == null)
            {
                return(new BaseResponse("Tag is not found"));
            }

            tag.Title         = request.Title;
            tag.Description   = request.Description;
            tag.PlannedBudget = request.PlannedBudget;
            _tagRepository.Update(tag);
            await _unitOfWork.SaveChangesAsync();

            return(new BaseResponse());
        }
예제 #5
0
        public async Task <ActionResult <EditTagResult> > EditTag([FromBody] EditTagRequest request)
        {
            if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.WxUsers))
            {
                return(Unauthorized());
            }

            List <WxUserTag> tags = null;

            var(success, token, _) = await _wxManager.GetAccessTokenAsync(request.SiteId);

            if (success)
            {
                await _wxManager.UpdateUserTag(token, request.TagId, request.TagName);

                tags = await _wxManager.GetUserTagsAsync(token);
            }

            return(new EditTagResult
            {
                Tags = tags
            });
        }
예제 #6
0
        public async Task <IActionResult> EditTag([FromRoute(Name = "tag_id")] Int32 tagId, [FromBody] EditTagRequest request)
        {
            // validate input
            if (!ModelState.IsValid)
            {
                return(HttpResult.BadRequest(ModelState));
            }

            // locate tag
            var foundTag = await _bagsContext.Tags
                           .WithSafeIncludes()
                           .Where(tag => tag.Id == tagId)
                           .SingleOrDefaultAsync();

            if (foundTag == null)
            {
                return(HttpResult.NotFound());
            }

            // verify there are changes
            if (foundTag.TagCategoryId == request.CategoryId && foundTag.Name == request.Name)
            {
                return(HttpResult.Ok(foundTag.ToSafeExpandedWireFormat()));
            }

            // locate the new category
            var newCategory = await _bagsContext.TagCategories
                              .Where(category => category.Id == request.CategoryId)
                              .SingleOrDefaultAsync();

            if (newCategory == null)
            {
                return(HttpResult.BadRequest($"Category {request.CategoryId} does not exist."));
            }

            // verify no conflict on unique constraint
            var duplicateTag = await _bagsContext.Tags
                               .WithSafeIncludes()
                               .Where(tag => tag.TagCategoryId == request.CategoryId && tag.Name == request.Name)
                               .SingleOrDefaultAsync();

            if (duplicateTag != null)
            {
                return(HttpResult.Conflict(duplicateTag.ToSafeExpandedWireFormat()));
            }

            // change the category/name
            foundTag.TagCategory = newCategory;
            foundTag.Name        = request.Name;
            await _bagsContext.SaveChangesAsync();

            return(HttpResult.Ok(foundTag.ToSafeExpandedWireFormat()));
        }