public void TagEditModel_commits_add_property_at_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); Tag committed = null; var commitCB = new Action <Tag>(t => committed = t); Tag reverted = null; var revertCB = new Action <Tag>(t => reverted = t); var editModel = new TagEditModel(viewModel, commitCB, revertCB); editModel.CreatePropertyCommand.Execute(null); // ACT editModel.CommitCommand.Execute(null); // ASSERT Assert.Equal(model, committed); Assert.Null(reverted); Assert.Equal(2, editModel.Properties.Count()); Assert.Equal(2, viewModel.Properties.Count()); Assert.Equal(2, model.Facet.Properties.Count()); Assert.Equal("new property", editModel.Properties.ElementAt(1).Name); Assert.Equal("new property", viewModel.Properties.ElementAt(1).Name); Assert.Equal("new property", model.Facet.Properties.ElementAt(1).Name); }
public void TagEditModel_commits_remove_property_to_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); Tag committed = null; var commitCB = new Action <Tag>(t => committed = t); Tag reverted = null; var revertCB = new Action <Tag>(t => reverted = t); var editModel = new TagEditModel(viewModel, commitCB, revertCB); editModel.RemovePropertyCommand.Execute(editModel.Properties.Single()); // ACT editModel.CommitCommand.Execute(null); // ASSERT Assert.Equal(model, committed); Assert.Null(reverted); Assert.Empty(editModel.Properties); Assert.Empty(viewModel.Properties); Assert.Empty(model.Facet.Properties); }
/// <summary> /// 插入单个标签,如果该标签已存在,则抛出异常 /// </summary> public async Task <Tag> CreateAsync(TagEditModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (string.IsNullOrWhiteSpace(model.Name)) { throw new ModelException(nameof(model.Name), "标签名称不能为空"); } model.Name = model.Name.Trim(); using (var work = this.dbFactory.StartWork()) { Tag oldTag = await work.Tag.GetByNameAsync(model.Name); if (oldTag != null) { throw new ModelException(nameof(model.Name), "该标签名称已存在"); } else { Tag tag = new Tag { Id = GuidHelper.CreateSequential(), Name = model.Name, IsBest = model.IsBest, IsSystem = true }; await work.Tag.InsertAsync(tag); return(tag); } } }
public void TagEditModel_reverts_remove_property_at_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); Tag reverted = null; var revertCB = new Action <Tag>(t => reverted = t); var editModel = new TagEditModel(viewModel, delegate { }, revertCB); editModel.CreatePropertyCommand.Execute(null); // ACT editModel.RollbackCommand.Execute(null); editModel.CommitCommand.Execute(null); // ASSERT Assert.Equal(model, reverted); Assert.Single(editModel.Properties); Assert.Single(viewModel.Properties); Assert.Single(model.Facet.Properties); }
public void TagEditModel_reverts_change_from_ViewModel() { // ARRANGE var p2 = new FacetProperty("p2"); var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); Tag reverted = null; var revertCB = new Action <Tag>(t => reverted = t); var editModel = new TagEditModel(viewModel, delegate { }, revertCB); editModel.Name = "changed"; // ACT editModel.RollbackCommand.Execute(null); editModel.CommitCommand.Execute(null); // ASSERT Assert.Equal(model, reverted); Assert.Equal("tag", editModel.Name); Assert.Equal("tag", viewModel.Name); Assert.Equal("tag", model.Name); }
public JsonResult SaveTag(TagEditModel model) { try { if (isValid(model) && ModelState.IsValid) { if (model.TagId > 0) { Tag tag = _dataManager.Tag.GetTags().ToList().SingleOrDefault(x => x.TagId == model.TagId); tag.Name = model.Name; tag.Description = model.Description; tag.UrlSlug = model.UrlSlug; _dataManager.Tag.Save(); return(Json(tag)); } else { Tag tag = new Tag { Name = model.Name, Description = model.Description, UrlSlug = model.UrlSlug }; _dataManager.Tag.InsertTag(tag); _dataManager.Tag.Save(); return(Json(tag)); } } } catch (DataException) { ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return(Json(false)); }
public async Task <ActionResult> Edit(Guid id) { Tag tag = await this.tagService.SingleByIdAsync(id); TagEditModel model = ObjectMapper.Map <Tag, TagEditModel>(tag); return(View(model)); }
/// <summary> /// Maps a TagEditModel into a specific Tag /// </summary> /// <param name="item"></param> /// <param name="tag"></param> /// <returns></returns> public static Tag MapToModel(this TagEditModel item, Tag tag) { tag.Id = item.Id; tag.VanityId = item.VanityId; tag.Name = item.Name; tag.Slug = item.Slug; return(tag); }
public IHttpActionResult Edit(TagEditModel model) { return(Command <EditTagCommand>( cmd => { cmd.Model = model; }, cmd => Ok(cmd.Model.Id))); }
public void Edit(TagEditModel model) { var entity = tagRepository.Get(model.Id); entity.Name = model.Name; entity.IsValid = model.IsValid; tagRepository.Update(entity); }
public static IEnumerable <object[]> GetTestedInstances() { var tag = new TagEditModel( new TagViewModel(new Tag("tag", new Facet("facet", new FacetProperty("p")))), delegate { }); yield return(new object[] { (Action <string>)(s => tag.Name = s), tag }); yield return(new object[] { (Action <string>)(s => tag.Properties.Single().Name = s), tag.Properties.Single() }); }
public async Task <IActionResult> CreateAsync(TagEditModel tagEditModel) { if (!ModelState.IsValid) { SetupMessages("Tags", PageType.Create, panelTitle: "Create a new tag"); return(View("CreateEdit", tagEditModel)); } return(await SaveAsync(tagEditModel, nameof(TagController.Create))); }
/// <summary> /// Maps a TagEditModel into a Tag /// </summary> /// <param name="item"></param> /// <returns></returns> public static Tag MapToModel(this TagEditModel item) { return(new Tag { Id = item.Id, VanityId = item.VanityId, Name = item.Name, Slug = item.Slug, }); }
public void Create(TagEditModel model) { var entity = Mapper.Map <Tag>(model); entity.CreatedByUserId = UserHelper.GetCurrentUserId(); entity.CreatedDateTime = DateTime.Now; entity.IsValid = true; tagRepository.Insert(entity); model.Id = entity.Id; }
public void TagEditModel_mirrors_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); var editModel = new TagEditModel(viewModel, delegate { }, delegate { }); // ASSERT Assert.Equal("tag", editModel.Name); Assert.Single(editModel.Properties); }
private async Task <IActionResult> SaveAsync(TagEditModel tagEditModel, string sender) { var returnValue = await _tagService.Save(tagEditModel); if (!returnValue.IsError) { TempData[MessageConstants.SuccessMessage] = returnValue.Message; return(RedirectToAction(nameof(TagController.Index))); } else { TempData[MessageConstants.DangerMessage] = returnValue.Message; return(RedirectToAction(sender)); } }
public ActionResult EditTags(TagEditModel model) { if (ModelState.IsValid) { if (tagServices.EditTag(model)) { return(RedirectToAction("Tags")); } return(HttpNotFound()); } else { return(View(model)); } }
public bool EditTag(TagEditModel model) { try { var entity = unitOfWork.TagRepo.Get(x => x.Id.Equals(model.TagId)).FirstOrDefault(); entity.TagName = model.TagName; entity.TagType = model.TagType; entity.IsActive = model.IsActive; unitOfWork.TagRepo.Update(entity); return(unitOfWork.Save() > 0); } catch (Exception) { throw; } }
private bool isValid(TagEditModel tag) { if (tag.Name == null || (tag.Name.Length < 4 && tag.Name.Length > 15)) { return(false); } if (tag.Description == null || (tag.Description.Length < 5 && tag.Description.Length > 40)) { return(false); } if (tag.UrlSlug == null) { return(false); } return(true); }
public async Task <IActionResult> EditAsync(TagEditModel tagEditModel) { if (!ModelState.IsValid) { SetupMessages("Tags", PageType.Edit, panelTitle: "Edit an existing tag"); return(View("CreateEdit", tagEditModel)); } var tagToUpdate = await _tagService.SetupEditModel(tagEditModel.VanityId); if (await TryUpdateModelAsync(tagToUpdate)) { return(await SaveAsync(tagEditModel, nameof(TagController.EditAsync))); } TempData[MessageConstants.WarningMessage] = "The model could not be updated."; return(RedirectToAction(nameof(TagController.EditAsync), tagEditModel)); }
public void TagEditModel_delays_remove_property_at_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); var editModel = new TagEditModel(viewModel, delegate { }, delegate { }); // ACT editModel.RemovePropertyCommand.Execute(editModel.Properties.Single()); // ASSERT Assert.Empty(editModel.Properties); Assert.Single(viewModel.Properties); Assert.Single(model.Facet.Properties); }
public void TagEditModel_delays_change_at_ViewModel() { // ARRANGE var p2 = new FacetProperty("p2"); var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); var editModel = new TagEditModel(viewModel, delegate { }, delegate { }); // ACT editModel.Name = "changed"; // ASSERT Assert.Equal("changed", editModel.Name); Assert.Equal("tag", viewModel.Name); Assert.Equal("tag", model.Name); }
public void TagEditModel_delays_add_property_at_ViewModel() { // ARRANGE var model = new Tag("tag", new Facet("facet", new FacetProperty("p"))); var viewModel = new TagViewModel(model); var editModel = new TagEditModel(viewModel, delegate { }, delegate { }); // ACT editModel.CreatePropertyCommand.Execute(null); // ASSERT Assert.Equal(2, editModel.Properties.Count()); Assert.Equal("new property", editModel.Properties.ElementAt(1).Name); Assert.Single(viewModel.Properties); Assert.Single(model.Facet.Properties); }
public ActionResult EditTopic(long topicId = 0) { TagEditModel tagEditModel = null; //创建 if (topicId == 0) { tagEditModel = new TagEditModel(); //标签分组下拉框 SelectList topicGroups = GetTagGroupSelectList(0, TenantTypeIds.Instance().Microblog()); ViewData["topicGroups"] = topicGroups; ViewData["editTopicTitle"] = "创建话题"; pageResourceManager.InsertTitlePart("创建话题"); }//编辑 else { Tag tag = tagService.Get(topicId); tagEditModel = tag.AsTagEditModel(); //话题分组下拉框 SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId); ViewData["topicGroups"] = topicGroups; //取相关微博 string users = tagEditModel.RelatedObjectIds.TrimStart(',').TrimEnd(','); if (!string.IsNullOrEmpty(users)) { IEnumerable <long> seletedUserIds = tagEditModel.RelatedObjectIds.TrimStart(',').TrimEnd(',').Split(',').Select(t => Convert.ToInt64(t)); ViewData["seletedUserIds"] = seletedUserIds; } ViewData["editTopicTitle"] = "编辑话题"; pageResourceManager.InsertTitlePart("编辑话题"); } return(View(tagEditModel)); }
/// <summary> /// 修改标签 /// </summary> public async Task <Tag> ModifyAsync(TagEditModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (string.IsNullOrWhiteSpace(model.Name)) { throw new ModelException(nameof(model.Name), "标签名称不能为空"); } if (model.Id == null) { throw new Exception("标签ID不能为空"); } model.Name = model.Name.Trim(); using (var work = this.dbFactory.StartWork()) { Tag dbTag = await work.Tag.SingleByIdAsync(model.Id.Value); if (dbTag == null) { throw new ModelException(nameof(model.Name), "该标签不存在,或已被删除"); } if (dbTag.Id != model.Id) { throw new ModelException(nameof(model.Name), "该标签名称已被占用"); } else { dbTag.IsBest = model.IsBest; dbTag.Name = model.Name; await work.Tag.UpdateAsync(dbTag); return(dbTag); } } }
public async Task <ReturnValue> Save(TagEditModel tagEditModel) { logger.LogDebug("CmsService > Save(TagEditModel: {0})", tagEditModel.ToString()); var returnValue = new ReturnValue($"Tag '{tagEditModel.Name}' saved."); try { if (tagEditModel.IsNew) { logger.LogDebug("New tag"); var tag = tagEditModel.MapToModel(); tag.WebsiteId = Instance.Id; await unitOfWork.Tags.Insert(tag); } else { logger.LogDebug("Update tag"); var tag = tagEditModel.MapToModel(await unitOfWork.Tags.GetByIdAsync(tagEditModel.VanityId)); tag.WebsiteId = Instance.Id; _unitOfWork.Tags.Update(tag); } await _unitOfWork.Save(); logger.LogDebug("Tag saved"); } catch (Exception ex) { logger.LogError(ex, ex.Message); returnValue.SetErrorMessage("An error has occurred while saving the tag"); } return(returnValue); }
public async Task <ActionResult> Create(TagEditModel model) { if (ModelState.IsValid) { try { Tag tag = await tagService.CreateAsync(model); return(this.Json(AjaxResult.CreateByContext(tag))); } catch (ModelException ex) { return(this.Json(ex.ToAjaxResult())); } catch (Exception ex) { return(this.Json(AjaxResult.CreateByMessage(ex.Message, false))); } } else { return(this.Json(ModelState.ToAjaxResult())); } }
public ActionResult EditTopic(TagEditModel tagEditModel) { System.IO.Stream stream = null; //是否创建 bool isCreate = tagEditModel.TagId == 0; if (isCreate) { ViewData["editTopicTitle"] = "创建话题"; } else { ViewData["editTopicTitle"] = "编辑话题"; } TagService tagService = new TagService(tagEditModel.TenantTypeId); IEnumerable <long> userIds = Request.Form.Gets <long>("RelatedObjectIds"); //是特色标签 if (tagEditModel.IsFeatured) { HttpPostedFileBase tagLogo = Request.Files["tagLogo"]; string fileName = tagLogo == null ? "" : tagLogo.FileName; if (string.IsNullOrEmpty(fileName) && string.IsNullOrEmpty(tagEditModel.FeaturedImage)) { //标签分组下拉框 SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId); ViewData["topicGroups"] = topicGroups; //取到用户设置的相关标签 ViewData["seletedUserIds"] = userIds; ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "图片不能为空"); return(View(tagEditModel)); } else if (!string.IsNullOrEmpty(fileName)) { //校验附件的扩展名 ILogoSettingsManager logoSettingsManager = DIContainer.Resolve <ILogoSettingsManager>(); if (!logoSettingsManager.Get().ValidateFileExtensions(fileName)) { //标签分组下拉框 SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId); ViewData["topicGroups"] = topicGroups; //取到用户设置的相关标签 ViewData["seletedUserIds"] = userIds; ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "只允许上传后缀名为 .gif .jpg .jpeg .png 的文件"); return(View(tagEditModel)); } //校验附件的大小 TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Tag()); if (!tenantLogoSettings.ValidateFileLength(tagLogo.ContentLength)) { //标签分组下拉框 SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId); ViewData["topicGroups"] = topicGroups; //取到用户设置的相关标签 ViewData["seletedUserIds"] = userIds; ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}KB", tenantLogoSettings.MaxLogoLength)); return(View(tagEditModel)); } stream = tagLogo.InputStream; tagEditModel.FeaturedImage = fileName; } } //获取相关微博 IEnumerable <long> seletedUserIds = userIds; //创建 if (isCreate) { Tag tag = tagEditModel.AsTag(); tagService.Create(tag, stream); //添加到分组 if (tagEditModel.TopicGroupId > 0) { tagService.BatchAddGroupsToTag(new List <long>() { tagEditModel.TopicGroupId }, tagEditModel.TagName); } }//更新 else { Tag tag = tagEditModel.AsTag(); tagService.Update(tag, stream); //添加到分组 if (tagEditModel.TopicGroupId > 0) { tagService.BatchAddGroupsToTag(new List <long>() { tagEditModel.TopicGroupId }, tagEditModel.TagName); } } return(RedirectToAction("ManageMicroblogTopics")); }
public ActionResult Create() { TagEditModel model = new TagEditModel(); return(View(model)); }