public async Task <ActionResult> Create(CreatePageViewModel vm) { var user = GetUser(); var req = new CreateRefListRequest() { PublishingStatus = PublishingStatusKind.Draft, }; Mapper.Map <CreatePageViewModel, CreateRefListRequest>(vm, req); var result = await _refListHandler.CreateRefListAsync(user.Id, req); return(RedirectToAction("Edit", new { id = result.Id })); }
/// <summary> /// refListを作成します。 /// </summary> public async Task <RefList> CreateRefListAsync(long userId, CreateRefListRequest request) { /// DisplayOrderの設定 if (request.Refs != null) { var i = 0; foreach (var r in request.Refs) { r.DisplayOrder = i; ++i; } } var user = await _userHandler.GetUserAsync(userId); _refsContext.Users.Attach(user); var linkCount = request.Refs == null ? 0 : request.Refs.Count(r => r.Kind == RefKind.Link); var refList = new RefList() { Author = user, Title = request.Title, Comment = request.Comment, PublishingStatus = request.PublishingStatus, PublishedDate = request.PublishingStatus == PublishingStatusKind.Draft ? (DateTime?)null : DateTime.Now, Refs = request.Refs, Statistics = new RefListStatistics() { LinkCount = linkCount, }, }; _refsContext.RefLists.Add(refList); await _refsContext.SaveChangesAsync(); await SetTagUsesAsync(refList, request.TagUses, false); refList.Refs = refList.Refs.OrderBy(r => r.DisplayOrder).ToArray(); return(refList); }