//New Section of Quiz Authoring public ActionResult AuthorContent(string id) { try { if (!string.IsNullOrEmpty(id)) { List <TblQuiz> objQuiz = new List <TblQuiz>(); objQuiz = quizRepository.GetQuizByID(Convert.ToInt32(id)); JavaScriptSerializer json_serializer = new JavaScriptSerializer(); json_serializer.MaxJsonLength = int.MaxValue; objQuiz[0].hdnEditData = json_serializer.Serialize(objQuiz[0]); return(View(objQuiz[0])); } else { TblQuiz objQuiz = new TblQuiz(); return(View(objQuiz)); } } catch (Exception ex) { newException.AddException(ex); } return(View()); //return View(objQuiz[0]); }
public ActionResult AddQuiz() { try { TblQuiz objQuiz = new TblQuiz(); return(View("AddNewQuiz", objQuiz)); } catch (Exception ex) { newException.AddException(ex); return(View("AddNewQuiz")); } }
public int UpdateQuiz(TblQuiz obj) { int status = 0; try { status = CreateQuiz(obj); } catch (Exception ex) { newException.AddException(ex); throw ex; } return(status); }
public int CaptureScore(TblQuiz objQuiz, int userId, int score, int attempt) { int status = 0; try { db.parameters.Clear(); db.AddParameter("@QuizId", SqlDbType.Int, objQuiz.QuizId); db.AddParameter("@UserId", SqlDbType.Int, userId); db.AddParameter("@Score", SqlDbType.Int, score); db.AddParameter("@Attempt", SqlDbType.Int, attempt); db.AddParameter("@completedTime", SqlDbType.Text, objQuiz.completeTime); status = db.ExecuteQuery("sp_QuizScoreAdd"); } catch (Exception ex) { newException.AddException(ex); throw ex; } return(status); }
public ActionResult SubmitInitialAssessment(TblQuiz objQuiz) { List <TblQuiz> lstAllQuiz = new List <TblQuiz>(); try { int UserId = Convert.ToInt32(Session["Enquiry"]); JavaScriptSerializer json_serializer = new JavaScriptSerializer(); List <QueOptions> lstQueOptions = new List <QueOptions>(); object[] objQueResponse = (object[])json_serializer.DeserializeObject(objQuiz.hdnResponseData); int attempt = 1; if (objQuiz.completeTime == "0" || string.IsNullOrEmpty(objQuiz.completeTime)) { var durationInSeconds = Convert.ToInt32(objQuiz.Duration) * 60; TimeSpan t = TimeSpan.FromSeconds(durationInSeconds); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } else { var cTime = objQuiz.completeTime; int index1 = cTime.IndexOf(":"); int index2 = cTime.IndexOf("Minutes"); int index3 = cTime.IndexOf(","); int index4 = cTime.IndexOf("Seconds"); var cMin = cTime.Substring(index1 + 1, (index2 - (index1 + 2))); var cSec = cTime.Substring(index3 + 1, (index4 - (index3 + 2))); var remainingTime = (Convert.ToInt32(cMin) * 60) + Convert.ToInt32(cSec); remainingTime = Convert.ToInt32(objQuiz.Duration * 60) - remainingTime; TimeSpan t = TimeSpan.FromSeconds(remainingTime); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } foreach (var item in objQueResponse) { QuizResponse quizResponse = new QuizResponse(); quizResponse.QuizId = objQuiz.QuizId; quizResponse.UserId = UserId; quizResponse.Attempt = attempt; foreach (Dictionary <string, object> newItem in (object[])item) { var questionId = newItem["questionId"]; quizResponse.QuestionId = Convert.ToInt32(newItem["questionId"]); quizResponse.QuestionFeedback = Convert.ToString(newItem["queFeedback"]); if (string.IsNullOrEmpty(quizResponse.OptionIds)) { quizResponse.OptionIds = Convert.ToString(newItem["optionId"]); } else { quizResponse.OptionIds += "," + Convert.ToString(newItem["optionId"]); } } QueOptions newQueOption = new QueOptions(); newQueOption.QuestionId = quizResponse.QuestionId; newQueOption.OptionsIds = quizResponse.OptionIds; lstQueOptions.Add(newQueOption); var result = quizRepository.CaptureResponses(quizResponse); } lstAllQuiz = quizRepository.GetQuizForLaunch(objQuiz.QuizId, UserId); int noOfQues = 0; var score = 0; foreach (var question in lstAllQuiz[0].TblQuestions) { if (question.QuestionTypeId == 1) { noOfQues++; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { foreach (var que in lstQueOptions) { if (que.QuestionId == question.QuestionId) { if (option.OptionId == Convert.ToInt32(que.OptionsIds)) { score++; } } } } } } if (question.QuestionTypeId == 2) { noOfQues++; int correctCount = 0; int[] Ids = new int[question.TblQuestionOptions.Count]; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { Ids[correctCount] = option.OptionId; correctCount++; } } foreach (var item in lstQueOptions) { if (item.QuestionId == question.QuestionId) { var optionIds = item.OptionsIds.Split(','); if (correctCount == optionIds.Length) { var correct = 0; foreach (var option in optionIds) { foreach (var id in Ids) { if (id == Convert.ToInt32(option)) { correct++; } } } if (correctCount == correct) { score++; } } } } } } if (noOfQues == 0) { score = 0; } var scoreResult = quizRepository.CaptureScore(objQuiz, UserId, score, attempt); // newException.AddDummyException("Responses Saved Successfully"); TempData["Message"] = "Responses Saved Successfully"; //return View("InitialAssessment", lstAllQuiz[0]); return(RedirectToAction("Result")); } catch (Exception ex) { newException.AddException(ex); TempData["Issue"] = "Issue Occured"; return(View("InitialAssessment", lstAllQuiz[0])); } //return RedirectToAction("Result"); }
public void CreateQuizJSON(TblQuiz objQuiz, int rows) { try { JavaScriptSerializer json_serializer = new JavaScriptSerializer(); json_serializer.MaxJsonLength = int.MaxValue; object[] objTblQue = (object[])json_serializer.DeserializeObject(objQuiz.hdnData); var QuizData = quizRepository.GetQuizByID(rows); var ques = QuizData[0].TblQuestions; List <int> queIds = new List <int>(); foreach (var que in ques) { queIds.Add(que.QuestionId); } int index = 0; foreach (Dictionary <string, object> item in objQuiz.questionObject) { item["QuestionId"] = Convert.ToString(queIds[index]); index++; } SCORMJSON jsonData = new SCORMJSON(); ConfigData config = new ConfigData(); config.scormType = 1.2; jsonData.config = config; QuizData quiz = new QuizData(); quiz.title = "Quiz"; quiz.nameLabel = "Name"; quiz.name = objQuiz.QuizName; quiz.descLabel = "Description"; quiz.description = objQuiz.QuizDescription; quiz.timeLabel = "Time remaining: "; quiz.duration = objQuiz.Duration == 0 ? null : objQuiz.Duration; quiz.passingScore = 80;//This need to be change quiz.minScore = 0; quiz.maxScore = 100; quiz.multipleAttempts = false; quiz.timeoutMessage = "Exam time ended."; jsonData.quiz = quiz; ReviewQuizData reviewQuiz = new ReviewQuizData(); reviewQuiz.title = "Review Quiz"; reviewQuiz.nameLabel = "Name:"; reviewQuiz.name = objQuiz.QuizName; reviewQuiz.descLabel = "Description:"; reviewQuiz.description = objQuiz.QuizDescription; reviewQuiz.scoreLabel = "Score:"; jsonData.reviewQuiz = reviewQuiz; List <QuestionsData> lstQuestions = new List <QuestionsData>(); foreach (Dictionary <string, object> item in objQuiz.questionObject) { QuestionsData que = new QuestionsData(); que.questionText = Convert.ToString(item["QuestionText"]); if (Convert.ToInt32(item["QuestionTypeId"]) == 1) { que.type = "mcq"; que.instructionText = "Options"; que.randomOptions = Convert.ToBoolean(item["isRandomOption"]); List <OptionsData> lstOptions = new List <OptionsData>(); var optionsCount = (object[])item["Options"]; int[] arrAnswers = new int[optionsCount.Length]; int counter = 0; foreach (Dictionary <string, object> itemNew1 in (object[])item["Options"]) { OptionsData ops = new OptionsData(); ops.text = Convert.ToString(itemNew1["OptionText"]); ops.feedback = Convert.ToString(itemNew1["OptionFeedback"]); arrAnswers[counter] = Convert.ToInt32(itemNew1["CorrectOption"]); lstOptions.Add(ops); counter++; } que.answer = arrAnswers; que.points = 1; que.options = lstOptions; } if (Convert.ToInt32(item["QuestionTypeId"]) == 2) { que.type = "mrq"; que.instructionText = "Options"; que.randomOptions = Convert.ToBoolean(item["isRandomOption"]); List <OptionsData> lstOptions = new List <OptionsData>(); var optionsCount = (object[])item["Options"]; int[] arrAnswers = new int[optionsCount.Length]; int counter = 0; foreach (Dictionary <string, object> itemNew1 in (object[])item["Options"]) { OptionsData ops = new OptionsData(); ops.text = Convert.ToString(itemNew1["OptionText"]); arrAnswers[counter] = Convert.ToInt32(itemNew1["CorrectOption"]); lstOptions.Add(ops); counter++; } que.answer = arrAnswers; que.points = 1; que.options = lstOptions; CorrectFeedbackData correctFeedback = new CorrectFeedbackData(); correctFeedback.text = Convert.ToString(item["CorrectFeedback"]); que.correctFeedback = correctFeedback; IncorrectFeedbackData inCorrectFeedback = new IncorrectFeedbackData(); inCorrectFeedback.text = Convert.ToString(item["InCorrectFeedback"]); que.incorrectFeedback = inCorrectFeedback; } if (Convert.ToInt32(item["QuestionTypeId"]) == 3) { que.type = "para"; que.placeholderText = "Write your answer here"; que.answer = null; que.points = 1; CorrectFeedbackData correctFeedback = new CorrectFeedbackData(); correctFeedback.text = Convert.ToString(item["CorrectFeedback"]); que.correctFeedback = correctFeedback; IncorrectFeedbackData inCorrectFeedback = new IncorrectFeedbackData(); inCorrectFeedback.text = Convert.ToString(item["InCorrectFeedback"]); que.incorrectFeedback = inCorrectFeedback; } if (Convert.ToInt32(item["QuestionTypeId"]) == 4) { que.type = "video"; string base64String = string.Empty; if (!string.IsNullOrEmpty(Convert.ToString(item["mediaFile"]))) { base64String = Convert.ToString(item["mediaFile"]); byte[] newBytes = Convert.FromBase64String(base64String); MemoryStream ms = new MemoryStream(newBytes, 0, newBytes.Length); ms.Write(newBytes, 0, newBytes.Length); string fileName = Convert.ToString(item["qTypeId"]); string DestinationPath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; DestinationPath = DestinationPath + "\\" + objQuiz.QuizName + "\\data\\media"; FileStream file = new FileStream(DestinationPath + "\\" + fileName, FileMode.Create, FileAccess.Write); ms.WriteTo(file); file.Close(); ms.Close(); que.path = "data//media//" + fileName; } else { string fileName = Convert.ToString(item["qTypeId"]); var extn = fileName.Split('.'); int count = extn.Length; fileName = Convert.ToString(item["QuestionId"]) + "." + extn[count - 1]; string DestinationPath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; DestinationPath = DestinationPath + "\\" + objQuiz.QuizName + "\\data\\media"; string path = System.Configuration.ConfigurationManager.AppSettings["QuizMediaPath"]; System.IO.File.Move(path + "\\" + fileName, DestinationPath + "\\" + fileName); que.path = "data//media//" + fileName; } } if (Convert.ToInt32(item["QuestionTypeId"]) == 5) { que.type = "audio"; string base64String = string.Empty; if (!string.IsNullOrEmpty(Convert.ToString(item["mediaFile"]))) { base64String = Convert.ToString(item["mediaFile"]); byte[] newBytes = Convert.FromBase64String(base64String); MemoryStream ms = new MemoryStream(newBytes, 0, newBytes.Length); ms.Write(newBytes, 0, newBytes.Length); string fileName = Convert.ToString(item["qTypeId"]); string DestinationPath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; DestinationPath = DestinationPath + "\\" + objQuiz.QuizName + "\\data\\media"; FileStream file = new FileStream(DestinationPath + "\\" + fileName, FileMode.Create, FileAccess.Write); ms.WriteTo(file); file.Close(); ms.Close(); que.path = "data//media//" + fileName; } else { string fileName = Convert.ToString(item["qTypeId"]); var extn = fileName.Split('.'); int count = extn.Length; fileName = Convert.ToString(item["QuestionId"]) + "." + extn[count - 1]; string DestinationPath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; DestinationPath = DestinationPath + "\\" + objQuiz.QuizName + "\\data\\media"; string path = System.Configuration.ConfigurationManager.AppSettings["QuizMediaPath"]; System.IO.File.Move(path + "\\" + fileName, DestinationPath + "\\" + fileName); que.path = "data//media//" + fileName; } } lstQuestions.Add(que); } jsonData.questions = lstQuestions; string jsonFilePath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; jsonFilePath = jsonFilePath + "\\" + objQuiz.QuizName + "\\data\\json\\"; var json = new JavaScriptSerializer().Serialize(jsonData); System.IO.File.WriteAllText(jsonFilePath + "quizdata.json", json); } catch (Exception ex) { newException.AddException(ex); } }
public FileResult CreateScormCourse(TblQuiz objQuiz, int rows) { string coursePath = string.Empty; try { string SourcePath = System.Configuration.ConfigurationManager.AppSettings["ScormSourcePath"]; string DestinationPath = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; DestinationPath = DestinationPath + "\\" + objQuiz.QuizName; //Delete existing package if (Directory.Exists(DestinationPath)) { Directory.Delete(DestinationPath, true); } //create new folders for package foreach (string dirPath in Directory.GetDirectories(SourcePath, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath)); } //Copy all the files & Replaces any files with the same name foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories)) { System.IO.File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true); } //replace SCORM files to root folder SourcePath = DestinationPath + "\\compliance\\SCORM12"; foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories)) { System.IO.File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true); } //Delete compliance folder as it is not necessary for the package SourcePath = DestinationPath + "\\compliance"; if (Directory.Exists(SourcePath)) { Directory.Delete(SourcePath, true); } //Do changes in imsmanifest.xml XmlDocument xmlDoc = new XmlDocument(); string filePath = DestinationPath + "\\imsmanifest.xml"; xmlDoc.Load(filePath); XmlNodeList xmlNodeList = xmlDoc.DocumentElement.ChildNodes; foreach (XmlNode xNode in xmlNodeList) { if (xNode.Name == "organizations") { XmlNodeList innerNode = xNode.ChildNodes; foreach (XmlNode xNode1 in innerNode) { if (xNode1.Name == "organization") { xNode1["title"].InnerText = objQuiz.QuizName; XmlNodeList innerNodeNew = xNode1.ChildNodes; foreach (XmlNode xNode2 in innerNodeNew) { if (xNode2.Name == "item") { xNode2["title"].InnerText = objQuiz.QuizName; } } } } } } xmlDoc.Save(filePath); //create JSON file CreateQuizJSON(objQuiz, rows); string FolderPathToZip = System.Configuration.ConfigurationManager.AppSettings["ScormDestinationPath"]; //ZIP the folder and return path string startPath = FolderPathToZip + "\\" + objQuiz.QuizName; string zipPath = FolderPathToZip + "\\course.zip"; var baseOutputStream = new MemoryStream(); ZipOutputStream zipOutput = new ZipOutputStream(baseOutputStream); zipOutput.IsStreamOwner = false; zipOutput.SetLevel(3); byte[] buffer = new byte[4096]; SharpZipLibHelper.ZipFolder(startPath, zipOutput); zipOutput.Finish(); zipOutput.Close(); /* Set position to 0 so that cient start reading of the stream from the begining */ baseOutputStream.Position = 0; return(new FileStreamResult(baseOutputStream, "application/x-zip-compressed") { FileDownloadName = objQuiz.QuizName + ".zip" }); } catch (Exception ex) { //newException.AddDummyException("11111"); newException.AddException(ex); } return(null); }
public ActionResult AddQuiz(TblQuiz objQuiz, string submit) { JavaScriptSerializer json_serializer = new JavaScriptSerializer(); json_serializer.MaxJsonLength = int.MaxValue; object[] objTblQue = (object[])json_serializer.DeserializeObject(objQuiz.hdnData); objQuiz.questionObject = objTblQue; try { if (ModelState.IsValid) { TblUser sessionUser = (TblUser)Session["UserSession"]; if (sessionUser != null) { objQuiz.TenantId = sessionUser.TenantId; int rows = 0; if (objQuiz.QuizId == 0) { rows = quizRepository.CreateQuiz(objQuiz); } else { rows = quizRepository.UpdateQuiz(objQuiz); } if (rows > 0) { TempData["QuizMessage"] = "Quiz Saved Successfully"; if (submit == "Exit") { return(View("AuthorContent", objQuiz)); } if (submit == "Save") { return(CreateScormCourse(objQuiz, rows)); } //return RedirectToAction("Index"); //if (submit == "Save") //{ // return RedirectToAction("EditQuiz", new { id = rows }); //} } else if (rows == 0) { TempData["ErrorMessage"] = "There is some problem while saving Quiz"; return(View("AuthorContent", objQuiz)); } else if (rows == -2) { TempData["ErrorMessage"] = "Quiz Not Saved"; return(View("AuthorContent", objQuiz)); } else { return(View("AuthorContent", objQuiz)); } } } return(View("AuthorContent", objQuiz)); } catch (Exception ex) { //newException.AddDummyException("11111"); newException.AddException(ex); return(View("AuthorContent")); } }
public ActionResult SubmitQuiz(TblQuiz objQuiz) { JavaScriptSerializer json_serializer = new JavaScriptSerializer(); TblUser sessionUser = (TblUser)Session["UserSession"]; if (sessionUser == null) { //newException.AddDummyException("In - 333 "); CommonFunctions common = new CommonFunctions(); var password = common.GetEncodePassword("123456"); sessionUser = ur.IsValidUser("*****@*****.**", password, Request.Url.Host); } if (sessionUser.RoleId == 2) { int result = quizRepository.DeleteResponse(objQuiz.QuizId, sessionUser.UserId, 1); } List <QueOptions> lstQueOptions = new List <QueOptions>(); object[] objQueResponse = (object[])json_serializer.DeserializeObject(objQuiz.hdnResponseData); var attempt = quizRepository.GetQuizAttemptByUserID(objQuiz.QuizId, sessionUser.UserId); attempt = attempt + 1; if (objQuiz.completeTime == "0" || string.IsNullOrEmpty(objQuiz.completeTime)) { var durationInSeconds = Convert.ToInt32(objQuiz.Duration) * 60; TimeSpan t = TimeSpan.FromSeconds(durationInSeconds); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } else { var cTime = objQuiz.completeTime; int index1 = cTime.IndexOf(":"); int index2 = cTime.IndexOf("Minutes"); int index3 = cTime.IndexOf(","); int index4 = cTime.IndexOf("Seconds"); var cMin = cTime.Substring(index1 + 1, (index2 - (index1 + 2))); var cSec = cTime.Substring(index3 + 1, (index4 - (index3 + 2))); var remainingTime = (Convert.ToInt32(cMin) * 60) + Convert.ToInt32(cSec); remainingTime = Convert.ToInt32(objQuiz.Duration * 60) - remainingTime; TimeSpan t = TimeSpan.FromSeconds(remainingTime); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } foreach (var item in objQueResponse) { QuizResponse quizResponse = new QuizResponse(); quizResponse.QuizId = objQuiz.QuizId; quizResponse.UserId = sessionUser.UserId; quizResponse.Attempt = attempt; foreach (Dictionary <string, object> newItem in (object[])item) { var questionId = newItem["questionId"]; quizResponse.QuestionId = Convert.ToInt32(newItem["questionId"]); quizResponse.QuestionFeedback = Convert.ToString(newItem["queFeedback"]); if (string.IsNullOrEmpty(quizResponse.OptionIds)) { quizResponse.OptionIds = Convert.ToString(newItem["optionId"]); } else { quizResponse.OptionIds += "," + Convert.ToString(newItem["optionId"]); } } QueOptions newQueOption = new QueOptions(); newQueOption.QuestionId = quizResponse.QuestionId; newQueOption.OptionsIds = quizResponse.OptionIds; lstQueOptions.Add(newQueOption); var result = quizRepository.CaptureResponses(quizResponse); } List <TblQuiz> lstAllQuiz = new List <TblQuiz>(); lstAllQuiz = quizRepository.GetQuizForLaunch(objQuiz.QuizId, sessionUser.UserId); int noOfQues = 0; var score = 0; foreach (var question in lstAllQuiz[0].TblQuestions) { if (question.QuestionTypeId == 1) { noOfQues++; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { foreach (var que in lstQueOptions) { if (que.QuestionId == question.QuestionId) { if (option.OptionId == Convert.ToInt32(que.OptionsIds)) { score++; } } } } } } if (question.QuestionTypeId == 2) { noOfQues++; int correctCount = 0; int[] Ids = new int[question.TblQuestionOptions.Count]; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { Ids[correctCount] = option.OptionId; correctCount++; } } foreach (var item in lstQueOptions) { if (item.QuestionId == question.QuestionId) { var optionIds = item.OptionsIds.Split(','); if (correctCount == optionIds.Length) { var correct = 0; foreach (var option in optionIds) { foreach (var id in Ids) { if (id == Convert.ToInt32(option)) { correct++; } } } if (correctCount == correct) { score++; } } } } } } if (noOfQues == 0) { score = 0; } var scoreResult = quizRepository.CaptureScore(objQuiz, sessionUser.UserId, score, attempt); var emailBody = "Thank you for taking Quiz."; if (noOfQues > 0) { emailBody = "Thank you for taking Quiz. </br> Your score is " + ((score * 100) / noOfQues) + "% <br />"; } //var emailBody = "Thank you for taking Quiz. </br> Your score is " + ((score * 100) / noOfQues) + "% <br />"; var emailSubject = "Quiz Result"; tblEmails objEmail = new tblEmails(); objEmail.EmailTo = sessionUser.EmailId; objEmail.EmailSubject = emailSubject; objEmail.EmailBody = emailBody; if (sessionUser.TenantId != 6) { var emailResult = ur.InsertEmail(objEmail); } newException.AddDummyException("Responses Saved Successfully"); TempData["Message"] = "Responses Saved Successfully"; return(RedirectToAction("ReviewQuiz", new { @QuizId = objQuiz.QuizId })); }
public int CreateQuiz(TblQuiz obj) { int status = 0; try { int quizId = 0; List <TblQuiz> lstQuiz = new List <TblQuiz>(); if (obj.QuizId != 0) { lstQuiz = GetQuizByID(obj.QuizId); } if (obj.QuizId > 0) { db.parameters.Clear(); db.AddParameter("@QuizId", SqlDbType.Int, obj.QuizId); db.AddParameter("@QuizName", SqlDbType.NText, obj.QuizName); db.AddParameter("@QuizDescription", SqlDbType.NText, obj.QuizDescription); db.AddParameter("@Duration", SqlDbType.Int, obj.Duration); status = db.ExecuteQuery("sp_QuizUpdateDelete"); quizId = obj.QuizId; } else { db.parameters.Clear(); db.AddParameter("@OldQuizId", SqlDbType.Int, obj.QuizId); db.AddParameter("@QuizName", SqlDbType.NText, obj.QuizName); db.AddParameter("@QuizDescription", SqlDbType.NText, obj.QuizDescription); db.AddParameter("@Duration", SqlDbType.Int, obj.Duration); db.AddParameter("@tenantId", SqlDbType.Int, obj.TenantId); db.AddParameter("@QuizId", SqlDbType.Int, ParameterDirection.Output); status = db.ExecuteQuery("sp_QuizAdd"); if (Convert.ToInt32(db.parameters[5].Value) > 0) { quizId = Convert.ToInt32(db.parameters[5].Value); } } if (quizId > 0) { foreach (Dictionary <string, object> item in obj.questionObject) { int queId = 0; db.parameters.Clear(); var oldQuestionId = 0; if (obj.QuizId != 0) { if (!string.IsNullOrEmpty(Convert.ToString(item["QuestionId"]))) { oldQuestionId = Convert.ToInt32(item["QuestionId"]); } var isExist = false; if (lstQuiz.Count > 0) { foreach (var question in lstQuiz[0].TblQuestions) { if (oldQuestionId == question.QuestionId) { isExist = true; break; } } } if (!isExist) { oldQuestionId = 0; } } string fileName = string.Empty; var path = ConfigurationManager.AppSettings["QuizMediaPath"].ToString(); if (oldQuestionId == 0) { if (Convert.ToInt32(item["QuestionTypeId"]) == 4 || Convert.ToInt32(item["QuestionTypeId"]) == 5) { string base64String = Convert.ToString(item["mediaFile"]); byte[] newBytes = Convert.FromBase64String(base64String); MemoryStream ms = new MemoryStream(newBytes, 0, newBytes.Length); ms.Write(newBytes, 0, newBytes.Length); fileName = Convert.ToString(item["qTypeId"]); FileStream file = new FileStream(path + "\\" + fileName, FileMode.Create, FileAccess.Write); ms.WriteTo(file); file.Close(); ms.Close(); } } db.AddParameter("@OldQuestionId", SqlDbType.Int, oldQuestionId); db.AddParameter("@QuizId", SqlDbType.Int, quizId); db.AddParameter("@QuestionTypeId", SqlDbType.Int, Convert.ToInt32(item["QuestionTypeId"])); db.AddParameter("@QuestionText", SqlDbType.NText, item["QuestionText"]); db.AddParameter("@CorrectFeedback", SqlDbType.NText, item["CorrectFeedback"]); db.AddParameter("@InCorrectFeedback", SqlDbType.NText, item["InCorrectFeedback"]); db.AddParameter("@isRandomOption", SqlDbType.Bit, Convert.ToBoolean(item["isRandomOption"])); db.AddParameter("@MediaURL", SqlDbType.NText, fileName); db.AddParameter("@MediaName", SqlDbType.NText, item["qTypeId"]); db.AddParameter("@QuestionId", SqlDbType.Int, ParameterDirection.Output); queId = db.ExecuteQuery("sp_QuestionAdd"); if (Convert.ToInt32(db.parameters[9].Value) > 0) { queId = Convert.ToInt32(db.parameters[9].Value); if (Convert.ToInt32(item["QuestionTypeId"]) == 4 || Convert.ToInt32(item["QuestionTypeId"]) == 5) { string newFile = string.Empty; if (Convert.ToInt32(item["QuestionTypeId"]) == 4) { if (oldQuestionId != 0) { fileName = oldQuestionId + ".mp4"; } newFile = queId + ".mp4"; } if (Convert.ToInt32(item["QuestionTypeId"]) == 5) { if (oldQuestionId != 0) { fileName = oldQuestionId + ".mp3"; } newFile = queId + ".mp3"; } if (File.Exists(path + "\\" + fileName)) { File.Copy(path + "\\" + fileName, path + "\\" + newFile, true); //File.Delete(path + "\\" + fileName); } } if (Convert.ToInt32(item["QuestionTypeId"]) == 1 || Convert.ToInt32(item["QuestionTypeId"]) == 2) { foreach (Dictionary <string, object> itemNew1 in (object[])item["Options"]) { int optionId = 0; db.parameters.Clear(); var OldOptionId = Convert.ToInt32(itemNew1["OptionId"]); db.AddParameter("@OldOptionId", SqlDbType.Int, OldOptionId); db.AddParameter("@QuestionId", SqlDbType.Int, queId); db.AddParameter("@OptionText", SqlDbType.NText, itemNew1["OptionText"]); db.AddParameter("@CorrectOption", SqlDbType.Bit, Convert.ToBoolean(itemNew1["CorrectOption"])); db.AddParameter("@OptionFeedback", SqlDbType.NText, itemNew1["OptionFeedback"]); //db.AddParameter("@Dinesh", SqlDbType.NText, itemNew1["OptionFeedback"]); db.AddParameter("@OptionId", SqlDbType.Int, ParameterDirection.Output); optionId = db.ExecuteQuery("sp_OptionAdd"); } } } } if (lstQuiz != null) { if (lstQuiz.Count > 0) { foreach (var question in lstQuiz[0].TblQuestions) { db.parameters.Clear(); db.AddParameter("@QuestionId", SqlDbType.Int, question.QuestionId); status = db.ExecuteQuery("sp_QuizDataDelete"); } } } } if (quizId > 0) { status = quizId; } } catch (Exception ex) { newException.AddException(ex); //throw ex; status = -2; } return(status); }