/// <summary> /// ユーザのKptの登録を完了する /// </summary> /// <param name="boardId">ボードID</param> /// <param name="userName">ユーザ名</param> /// <param name="type">Kpt種別</param> /// <param name="kptList">Kptリスト</param> public async Task CommitKptListByUserAsync(int boardId, string userName, KptType type, List <Kpt> kptList) { // Kpt リストを登録する await this.AddKptListAsync(boardId, type, kptList); // ユーザステータスを更新する switch (type) { case KptType.Keep: await UpsertUserAsync(boardId, userName, UserStatusEnum.KeepDone); break; case KptType.Problem: await UpsertUserAsync(boardId, userName, UserStatusEnum.ProblemDone); break; case KptType.Try: await UpsertUserAsync(boardId, userName, UserStatusEnum.TryDone); break; default: break; } }
/// <summary> /// ボードのKptの登録を締め切る /// </summary> /// <param name="boardId">ボードID</param> /// <param name="userName">ユーザ名</param> /// <param name="type">Kpt種別</param> /// <param name="kptList">Kptリスト</param> public async Task CloseCommitKptListAsync(int boardId, string boardName, KptType type) { var boardEntity = this.GetBoardEntity(boardId); // ボードのステータスを更新する switch (type) { case KptType.Keep: await UpdateBoardAsync(boardId, boardName, true, boardEntity.IsProblemDone, boardEntity.IsTryDone); break; case KptType.Problem: await UpdateBoardAsync(boardId, boardName, boardEntity.IsKeepDone, true, boardEntity.IsTryDone); break; case KptType.Try: await UpdateBoardAsync(boardId, boardName, boardEntity.IsKeepDone, boardEntity.IsProblemDone, true); break; default: break; } }
public KptEntity(int boardId, KptType type, string userName, string title, string comment) { PartitionKey = string.Format("{0}_{1}", boardId.ToString(), Enum.GetName(typeof(KptType), type)); RowKey = userName + "_" + title; this.UserName = userName; this.Title = title; this.Comment = comment; }
/// <summary> /// Kptを追加する /// </summary> /// <param name="boardId">ボードID</param> /// <param name="type">Kpt種別</param> /// <param name="kptList">Kptのリスト</param> public async Task AddKptListAsync(int boardId, KptType type, List <Kpt> kptList) { CloudTable table = this.Client.GetTableReference(TblKpt); foreach (var kptItem in kptList) { var emp = new KptEntity(boardId, type, kptItem.UserName, kptItem.Title, kptItem.Comment); TableOperation insertOp = TableOperation.InsertOrReplace(emp); await table.ExecuteAsync(insertOp); } }
/// <summary> /// Kptを削除する /// </summary> /// <param name="boardId">ボードID</param> /// <param name="type">Kpt種別</param> /// <param name="kptItem">削除アイテム</param> public async Task DelKptAsync(int boardId, KptType type, Kpt kptItem) { CloudTable table = this.Client.GetTableReference(TblKpt); var emp = new KptEntity(boardId, type, kptItem.UserName, kptItem.Title, kptItem.Comment) { ETag = "*" }; TableOperation deleteOp = TableOperation.Delete(emp); await table.ExecuteAsync(deleteOp); }
/// <summary> /// Kptテーブルの内容をクリアする /// </summary> /// <param name="type">Kpt種別</param> public async Task ClearKptTableAsync(int boardId, KptType type) { CloudTable table = this.Client.GetTableReference(TblKpt); TableQuery <KptEntity> getQuery = new TableQuery <KptEntity>().Where(TableQuery.GenerateFilterCondition(PartitonKey, QueryComparisons.Equal, this.GetKptTableKey(boardId, type))); TableContinuationToken continuationToken = null; var items = new List <KptEntity>(table.ExecuteQuerySegmentedAsync <KptEntity>(getQuery, continuationToken).Result); foreach (var item in items) { TableOperation deleteOperation = TableOperation.Delete(item); await table.ExecuteAsync(deleteOperation); } }
/// <summary> /// Kptリストを取得する /// </summary> /// <param name="boardId">ボードID</param> /// <param name="type">Kptの種別</param> /// <returns>Kptリスト</returns> public List <Kpt> GetKptList(int boardId, KptType type) { CloudTable table = this.Client.GetTableReference(TblKpt); TableQuery <KptEntity> query = new TableQuery <KptEntity>().Where(TableQuery.GenerateFilterCondition(PartitonKey, QueryComparisons.Equal, this.GetKptTableKey(boardId, type))); TableContinuationToken continuationToken = null; var items = new List <KptEntity>(table.ExecuteQuerySegmentedAsync <KptEntity>(query, continuationToken).Result); var result = new List <Kpt>(); foreach (var item in items) { var kpt = new Kpt() { Type = type, UserName = item.UserName, Title = item.Title, Comment = item.Comment }; result.Add(kpt); } return(result); }
/// <summary> /// KptテーブルKeyを取得する /// </summary> /// <param name="boardId">ボードID</param> /// <param name="type">Kpt種別</param> /// <returns></returns> private string GetKptTableKey(int boardId, KptType type) { return(string.Format("{0}_{1}", boardId.ToString(), Enum.GetName(typeof(KptType), type))); }