Дипломная работа: Автоматизация процесса контроля знаний учащихся ГОУ СОШ №31

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
93
{
public TestManagementLogic(IStorage storage, IMapper mapper) :
base(storage, mapper)
{ }
public async Task<IEnumerable<TestDTO>> GetTests()
{
IEnumerable<Test> tests = await storage.GetRepository<Test>().Get(item =>
item.IsDeleted == false);
return
mapper.Map<IEnumerable<TestDTO>>(tests).OrderByDescending(item => item.Id);
}
public async Task<IEnumerable<TestDTO>> GetTestsByIdUser(int idUser)
{
IEnumerable<Test> tests = await storage.GetRepository<Test>().Get(item =>
item.IdUser == idUser &&
item.IsDeleted == false);
return
mapper.Map<IEnumerable<TestDTO>>(tests).OrderByDescending(item => item.Id);
}
public async Task<TestDTO> GetTestById(int id)
{
Test test = await storage.GetRepository<Test>().FindById(id);
if (test == null)
throw new ArgumentNullException(nameof(test));
return mapper.Map<TestDTO>(test);
}
public async Task<int> GetExistQuestionCountByIdTest(int idTest)
{
List<Question> questions = await
storage.MixedRepository.GetExistQuestionByIdTest(idTest);
return questions.Count();
}
public async Task<bool> CreateTest(TestDTO testDTO)
{
94
if (testDTO == null)
throw new ArgumentNullException(nameof(testDTO));
using (var transaction = storage.BeginTransaction())
{
try
{
Test test = mapper.Map<Test>(testDTO);
await storage.GetRepository<Test>().Create(test);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception(ex.Message);
}
}
return true;
}
public async Task<bool> UpdateTest(TestDTO testDTO)
{
if (testDTO == null)
throw new ArgumentNullException(nameof(testDTO));
using (var transaction = storage.BeginTransaction())
{
try
{
Test test = mapper.Map<Test>(testDTO);
await storage.GetRepository<Test>().Update(test);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception(ex.Message);
}
}
return true;
}
95
public async Task<bool> DeleteTest(int id)
{
if (id == 0)
throw new ArgumentNullException(nameof(id));
Test test = await storage.GetRepository<Test>().FindById(id);
if (test == null)
throw new ArgumentNullException(nameof(test));
using (var transaction = storage.BeginTransaction())
{
try
{
test.IsDeleted = true;
await storage.GetRepository<Test>().Update(test);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception(ex.Message);
}
}
return true;
}
}
}
using AutoMapper;
using KCS.DataAccess.Interfaces;
using KCS.DataAccess.Model.Tables;
using KCS.DTO;
using KCS.Logic.Interfaces;
using KCS.Logic.Logics.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace KCS.Logic.Logic
{
96
public class UserTestManagementLogic : ManagementLogic,
IUserTestManagementLogic
{
public UserTestManagementLogic(IStorage storage, IMapper mapper) :
base(storage, mapper)
{ }
public async Task<IEnumerable<TestDTO>> GetUserTests()
{
IEnumerable<Test> tests = await storage.GetRepository<Test>().Get(item =>
item.IsAvailable == true &&
item.IsDeleted == false);
return mapper.Map<IEnumerable<TestDTO>>(tests);
}
public async Task<int> StartExecuteTest(int idTest, int idUser)
{
if (idTest == 0)
throw new ArgumentNullException(nameof(idTest));
if (idUser == 0)
throw new ArgumentNullException(nameof(idUser));
List<Question> questions = await
storage.MixedRepository.GetExistQuestionByIdTest(idTest);
if (questions.Count() == 0)
return 0;
IEnumerable<UserTest> userTests = await
storage.GetRepository<UserTest>().Get(item =>
item.IdTest == idTest &&
item.IdUser == idUser);
if (userTests.Where(item => item.EndDate == null).Count() == 0)
{
using (var transaction = storage.BeginTransaction())
{
try
{
UserTest userTest = new UserTest
{
IdUser = idUser,
97
IdTest = idTest,
AttemptNumber = userTests.Count() + 1,
StartDate = DateTime.Now,
EndDate = null
};
await storage.GetRepository<UserTest>().Create(userTest);
transaction.Commit();
return userTest.Id;
}
catch (Exception ex)
{
transaction.Rollback();
throw new Exception(ex.Message);
}
}
}
return userTests.Where(item => item.EndDate ==
null).OrderByDescending(item => item.Id).FirstOrDefault().Id;
}
public async Task<QuestionAnswerDTO> GetRunTestQuestion(int idUserTest)
{
IEnumerable<UserQuestion> userQuestions = await
storage.GetRepository<UserQuestion>().Get(item =>
item.IdUserTest == idUserTest);
IEnumerable<UserQuestion> userQuestionsNotAnswer =
userQuestions.Where(item => item.Result == null);
if(userQuestionsNotAnswer.Count() != 0)
{
UserQuestion userQuestionNotAnswer =
userQuestionsNotAnswer.FirstOrDefault();
return await
GetQuestionAnswerByIdUserQuestion(userQuestionNotAnswer.Id);
}
List<Question> availableQuestions = await
storage.MixedRepository.GetAvailableQuestionsByIdUserTest(idUserTest);
UserTest userTest = await
storage.GetRepository<UserTest>().FindById(idUserTest);
Test test = await storage.GetRepository<Test>().FindById(userTest.IdTest);
Источник: https://baza.diplomsite.ru/previewfile/2098