예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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());
        }