public (List <List <int> > answers, MCQPaperDTO paper) GetMcqPaper(string code) { MCQPaper paper = PaperRepo.GetByPaperCode(code); if (paper == null) { return(null, null); } List <List <int> > answerstobenoted = new List <List <int> >(); MCQPaperDTO paperdto = new MCQPaperDTO(); paperdto = Mapper.Map(paper, paperdto); foreach (var que in paper.Questions) { que.MCQOptions.Shuffle(); List <int> add = new List <int>(); foreach (var opt in que.MCQOptions) { add.Add(opt.MCQOptionId); } answerstobenoted.Add(add); paperdto.Questions.Add(Mapper.Map <MCQQuestion, MCQQuestionDTO>(que)); } paperdto.Questions.ForEach(que => que.TrueAnswer = -1); return(answerstobenoted, paperdto); }
public async Task <MCQPaper> Create(MCQPaper paper) { List <MCQOption> temp = new List <MCQOption>(); foreach (var que in paper.Questions) { temp.Add(que.TrueAnswer); que.TrueAnswer = null; } using (var transaction = await AppDbContext.Database.BeginTransactionAsync()) { try { AppDbContext.Add(paper); AppDbContext.SaveChanges(); var i = 0; foreach (var que in paper.Questions) { que.TrueAnswer = temp[i++]; } AppDbContext.MCQPapers.Attach(paper); AppDbContext.SaveChanges(); await transaction.CommitAsync(); } catch (Exception) { await transaction.RollbackAsync(); } } return(paper); }
public string CreateMCQPaper(MCQPaperDTO paper) { string code = CodeGenerator.GetSharableCode(EPaperType.MCQ); MCQPaper mcqPaper = Mapper.Map <MCQPaperDTO, MCQPaper>(paper); mcqPaper.PaperCode = code; foreach (var que in paper.Questions) { mcqPaper.Questions.Add(Mapper.Map <MCQQuestionDTO, MCQQuestion>(que)); } McqPaperRepo.Create(mcqPaper); string linktosend = $"https://localhost:44394/Teacher/PaperDetails/{code}"; EmailService.SendMailForPaper(code, linktosend, paper.PaperTitle, paper.CreatedDate.ToString(), paper.DeadLine.ToString(), paper.TeacherEmailId); //sends mail regarding paper update return(code); }
public MCQPaper GetByPaperCode(string paperCode) { MCQPaper ans = null; using (var transaction = AppDbContext.Database.BeginTransaction()) { try { ans = AppDbContext.MCQPapers .FirstOrDefault(paper => paper.PaperCode == paperCode); if (ans == null) { transaction.Commit(); return(null); } ans.Questions = AppDbContext.MCQQuestions .Include(que => que.TrueAnswer) .Where(que => que.MCQPaper.PaperCode == paperCode) .ToList(); foreach (var que in ans.Questions) { que.TrueAnswer = que.MCQOptions[0]; que.MCQOptions = AppDbContext.MCQOptions .Where(opt => opt.MCQQuestionId == que.QuestionId) .ToList(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); } } return(ans ?? new MCQPaper()); }