/// <summary> /// Adds a new article /// </summary> /// <param name="data"></param> /// <returns></returns> public BlogArticle AddNewArticle(Dictionary<String, Object> data) { BlogArticle blogArticle; Int32 articleId, userId; String title = (data["title"]).ToString(); String description = (data["description"]).ToString(); String articleData = (data["data"]).ToString(); String userName = (data["userName"]).ToString(); DateTime createDate = Convert.ToDateTime(data["createDate"]); blogArticle = new BlogArticle { Title = title, Description = description, Data = articleData, CreateDate = createDate, UserName = userName }; using (TransactionScope scope = new TransactionScope()) { SqlCommand command = GetCommand(OperationType.AddNewArticle); command.Parameters.Add(GetParameter("@title", title, DbType.String)); command.Parameters.Add(GetParameter("@description", description, DbType.String)); command.Parameters.Add(GetParameter("@data", articleData, DbType.String)); command.Parameters.Add(GetParameter("@createDate", createDate, DbType.DateTime)); //get our new article's id now articleId = Convert.ToInt32(command.ExecuteScalar()); CloseConnection(command.Connection); blogArticle.ID = articleId; //now lets get the user id command = GetCommand(OperationType.GetUserIdByUserName); command.Parameters.Add(GetParameter("@userName", userName, DbType.String)); userId = Convert.ToInt32(command.ExecuteScalar()); CloseConnection(command.Connection); blogArticle.UserID = userId; //new add a new record into the Article-User relationship table command = GetCommand(OperationType.AddArticleUserRelation); command.Parameters.Add(GetParameter("@userId", userId, DbType.Int32)); command.Parameters.Add(GetParameter("@articleId", articleId, DbType.Int32)); command.ExecuteNonQuery(); //we got this far so this means everything is good to go CloseConnection(command.Connection); //add the new article Id to the data dictionary data.Add("articleId", articleId); //now lets update the tags blogArticle.Tags = SetArticleTags(data); //Finally complete the transaction scope.Complete(); } return blogArticle; }
/// <summary> /// Get the article data by the article id /// </summary> /// <param name="id"></param> /// <returns></returns> public BlogArticle GetArticle(Int32 id) { BlogArticle article = new BlogArticle(); operationParams.Clear(); operationParams.Add("id", id); article = dataController.ExecuteOperation(OperationType.ReadArticleById, operationParams) as BlogArticle; return article; }
/// <summary> /// Adds a new article /// </summary> /// <param name="article"></param> /// <returns></returns> public BlogArticle AddNewArticle(BlogArticle article) { BlogArticle blogArticle; if (article == null) throw new ArgumentNullException("article"); operationParams.Clear(); operationParams.Add("title", article.Title); operationParams.Add("description", article.Description); operationParams.Add("data", article.Data); operationParams.Add("createDate", DateTime.Now); operationParams.Add("userName", article.UserName); operationParams.Add("tags", article.Tags); blogArticle = dataController.ExecuteOperation(OperationType.AddNewArticle, operationParams) as BlogArticle; return blogArticle; }
/// <summary> /// Updates the specified article /// </summary> /// <param name="article"></param> /// <returns></returns> public Int32 UpdateArticle(BlogArticle article) { Int32 retVal; operationParams.Clear(); operationParams.Add("articleId", article.ID); operationParams.Add("title", article.Title); operationParams.Add("description", article.Description); operationParams.Add("data", article.Data); operationParams.Add("tags", article.Tags); retVal = Convert.ToInt32(dataController.ExecuteOperation(OperationType.UpdateArticleById, operationParams)); return retVal; }
/// <summary> /// Read article by its ID /// </summary> /// <param name="data"></param> /// <returns></returns> public BlogArticle ReadArticleById(Dictionary<String, Object> data) { BlogArticle articleModel; SqlDataReader dataReader; BlogArticle returnData = new BlogArticle(); SqlCommand command = GetCommand(OperationType.ReadArticleById); Int32 id = Convert.ToInt32(data["id"]); command.Parameters.Add(GetParameter("@articleId", id, DbType.Int32)); dataReader = command.ExecuteReader(); while (dataReader.Read()) { articleModel = GetBlogArticle((Int32)dataReader["ID"], Convert.ToInt32(dataReader["UserId"]), dataReader["UserName"].ToString(), dataReader["Article_Title"].ToString(), dataReader["Article_Description"].ToString(), dataReader["Article_Data"].ToString(), Convert.ToDateTime(dataReader["Create_Date"]), String.Join(",", GetArticleTags(id).ToArray())); returnData = articleModel; } CloseConnection(command.Connection); return returnData; }
/// <summary> /// Updates an article /// </summary> /// <param name="article"></param> public void PutArticle(BlogArticle article) { blogArticleRepository.UpdateArticle(article); }
/// <summary> /// Adds a new article /// </summary> /// <param name="article"></param> public BlogArticle PostArticle(BlogArticle article) { return blogArticleRepository.AddNewArticle(article); }