/// <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;
 }
Esempio n. 3
0
 /// <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;
 }