/// <summary> /// Insert a Comprehension Paragraph with its questions /// </summary> /// <param name="paragraph"></param> /// <param name="questionIDs"></param> /// <returns></returns> public Message Insert(LOT_ComprehensionParagraph paragraph, string[] questionIDs) { Message msg = null; DbTransaction trans = null; try { dbContext.Connection.Open(); trans = dbContext.Connection.BeginTransaction(); dbContext.Transaction = trans; //Insert new paragraph and get its ID paragraph.CreateDate = DateTime.Now; paragraph.UpdateDate = DateTime.Now; dbContext.LOT_ComprehensionParagraphs.InsertOnSubmit(paragraph); dbContext.SubmitChanges(); int paragraphIDInserted = paragraph.ID; if (questionIDs != null) { foreach (string questionID in questionIDs) { //Get question from db LOT_Question questionDB = dbContext.LOT_Questions.Single(p => p.DeleteFlag == false && p.ID == int.Parse(questionID)); questionDB.ParagraphID = paragraphIDInserted; questionDB.UpdateDate = DateTime.Now; questionDB.UpdatedBy = paragraph.UpdatedBy; //Submit changes to db dbContext.SubmitChanges(); } } msg = new Message(MessageConstants.I0001, MessageType.Info, "Comprehension paragraph \"" + CommonFunc.SubStringRoundWord(CommonFunc.RemoveAllHtmlWithNoTagsAllowed(paragraph.ParagraphContent), Constants.QUESTION_CONTENT_LENGTH_SHOWED_IN_MESSAGE) + "\"", "added"); trans.Commit(); } catch { if (trans != null) { trans.Rollback(); } // Show system error msg = new Message(MessageConstants.E0007, MessageType.Error); } return msg; }
/// <summary> /// Update a paragraph with it questions /// </summary> /// <param name="paragraphUI"></param> /// <param name="questionIDs"></param> /// <returns></returns> public Message Update(LOT_ComprehensionParagraph paragraphUI, string[] questionIDs) { Message msg = null; DbTransaction trans = null; try { dbContext.Connection.Open(); trans = dbContext.Connection.BeginTransaction(); dbContext.Transaction = trans; LOT_ComprehensionParagraph paragraphDB = GetByID(paragraphUI.ID); //Set the updated information paragraphDB.ParagraphContent = paragraphUI.ParagraphContent; paragraphDB.UpdatedBy = paragraphUI.UpdatedBy; paragraphDB.UpdateDate = DateTime.Now; //Submit changes to db dbContext.SubmitChanges(); List<LOT_Question> currentQuestionsInDB = dbContext.LOT_Questions .Where(p => p.DeleteFlag == false && p.ParagraphID == paragraphDB.ID).ToList(); //Free all questions of the paragraph: set their paragraph id to null foreach (LOT_Question question in currentQuestionsInDB) { if (questionIDs == null || !questionIDs.Contains(question.ID.ToString())) { //Set updated information question.UpdateDate = DateTime.Now; question.UpdatedBy = paragraphDB.UpdatedBy; question.ParagraphID = null; //Submit changes to db dbContext.SubmitChanges(); } } //Update question list of the paragraph if (questionIDs != null) { foreach (string questionID in questionIDs) { //Get question from db LOT_Question questionDB = dbContext.LOT_Questions .Where(c => c.ID == int.Parse(questionID)).FirstOrDefault<LOT_Question>(); //Set the undated information questionDB.UpdateDate = DateTime.Now; questionDB.UpdatedBy = paragraphUI.UpdatedBy; questionDB.ParagraphID = paragraphDB.ID; //Submit changes to db dbContext.SubmitChanges(); } } string shortContent = CommonFunc.SubStringRoundWord(CommonFunc.RemoveAllHtmlWithNoTagsAllowed(paragraphDB.ParagraphContent), Constants.QUESTION_CONTENT_LENGTH_SHOWED_IN_MESSAGE); msg = new Message(MessageConstants.I0001, MessageType.Info, "Comprehension Paragraph \"" + CommonFunc.RemoveAllHtmlWithNoTagsAllowed(shortContent) + "\"", "updated"); trans.Commit(); } catch { if (trans != null) { trans.Rollback(); } // Show system error msg = new Message(MessageConstants.E0007, MessageType.Error); } return msg; }
/// <summary> /// Delete a paragraph /// </summary> /// <param name="paragraph"></param> /// <returns></returns> public bool DeleteParagraph(LOT_ComprehensionParagraph paragraph) { bool result = false; ComprehensionParagraphDao paragraphDao = new ComprehensionParagraphDao(); if (paragraph != null) { // Get current info in dbContext LOT_ComprehensionParagraph paragraphDb = dbContext.LOT_ComprehensionParagraphs .Single(p => p.DeleteFlag == false && p.ID == paragraph.ID); if (paragraphDb != null) { bool isUsed = paragraphDao.IsUsed(paragraphDb.ID); if (!isUsed) { // Set delete info paragraphDb.DeleteFlag = true; paragraphDb.UpdateDate = DateTime.Now; paragraphDb.UpdatedBy = paragraph.UpdatedBy; // Submit changes to dbContext dbContext.SubmitChanges(); //Free the all question of paragraph, set their paragraph id to null List<LOT_Question> arrQuestion = dbContext.LOT_Questions .Where(p => p.ParagraphID == paragraph.ID) .ToList<LOT_Question>(); foreach (LOT_Question question in arrQuestion) { question.ParagraphID = null; question.UpdatedBy = paragraphDb.UpdatedBy; question.UpdateDate = DateTime.Now; dbContext.SubmitChanges(); } result = true; } } } return result; }