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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
88
14) Автоматизация контроля результатов обучения учащихся [Электронный
ресурс] /
URL:http://www.knowledge.allbest.ru/pedagogics/3c0b65625a3bd78b5c53b8952130
6d37_0.html (дата обращения: 18.05.2020).
15) Официальный сайт ГОУ СОШ №31 [Офиц. сайт]. URL:http://www.s31.ru
(дата обращения: 18.05.2020).
16) Анализ технологий и систем управления электронным обучением
[Электронный ресурс] / URL:http://www.textarchive.ru/c-2334344-pall.html (дата
обращения: 18.05.2020).
89
Приложения
Листинг основных программных модулей
using System.Threading.Tasks;
using KCS.UI.Web.Controllers.Shared;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using KCS.DTO.Account;
using KCS.Identity.Managers;
using KCS.UI.Web.Models.Account;
namespace KCS.UI.Web.Controllers
{
[Authorize]
public class AccountController : GenericController
{
public AccountController(UserManager userManager,
SignInManager<UserDTO> signInManager)
{
this.userManager = userManager;
this.signInManager = signInManager;
}
private readonly UserManager userManager;
private readonly SignInManager<UserDTO> signInManager;
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login(string returnUrl = null)
{
// Очищаем существующий внешний файл cookie, чтобы обеспечить
чистый процесс входа в систему.
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
ViewData["ReturnUrl"] = returnUrl;
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
90
public async Task<IActionResult> Login(LoginViewModel model, string
returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (!ModelState.IsValid)
return View(model);
var result = await signInManager.PasswordSignInAsync(model.Name,
model.Password, false, lockoutOnFailure: false);
if (result.Succeeded)
return RedirectToLocal(returnUrl);
ModelState.AddModelError(string.Empty, "Неверный логин или пароль.");
return View(model);
}
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Register(string returnUrl = null)
{
ViewBag.RoleList = await userManager.GetRoles();
ViewBag.GroupList = await userManager.GetGroups();
ViewData["ReturnUrl"] = returnUrl;
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model, string
returnUrl = null)
{
ViewBag.RoleList = await userManager.GetRoles();
ViewBag.GroupList = await userManager.GetGroups();
if (!ModelState.IsValid)
return View(model);
UserInfoDTO userInfoDTO = mapper.Map<UserInfoDTO>(model);
UserDTO userDTO = new UserDTO
91
{
UserName = model.Login
};
IdentityResult result = await userManager.CreateAsync(userDTO,
model.Password, userInfoDTO, model.IdRole);
if (result.Succeeded)
return RedirectToLocal(returnUrl);
AddErrors(result);
ViewData["ReturnUrl"] = returnUrl;
return View(model);
}
[HttpGet]
public async Task<IActionResult> Profile(int idUser)
{
UserInfoDTO userInfoDTO = await userManager.GetUserInfoById(idUser);
ViewBag.GroupList = await userManager.GetGroups();
ProfileModel model = mapper.Map<ProfileModel>(userInfoDTO);
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Profile(ProfileModel model)
{
ViewBag.RoleList = await userManager.GetRoles();
ViewBag.GroupList = await userManager.GetGroups();
if (!ModelState.IsValid)
return View(model);
model.IdGroup = model.IdGroup == 0 ? null : model.IdGroup;
UserInfoDTO userInfoDTO = mapper.Map<UserInfoDTO>(model);
IdentityResult result = await userManager.UpdateUserInfo(userInfoDTO);
if (result.Succeeded)
return RedirectToAction(nameof(HomeController.Index), "Home");
92
AddErrors(result);
return View(model);
}
[HttpGet]
public async Task<IActionResult> Logout()
{
await signInManager.SignOutAsync();
return RedirectToAction(nameof(HomeController.Index), "Home");
}
private IActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
return Redirect(returnUrl);
return RedirectToAction(nameof(HomeController.Index), "Home");
}
private void AddErrors(IdentityResult result)
{
foreach (IdentityError error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
}
}
using System.Collections.Generic;
using System.Threading.Tasks;
using KCS.DTO;
using KCS.Logic.Interfaces;
using KCS.DataAccess.Interfaces;
using AutoMapper;
using KCS.DataAccess.Model.Tables;
using System;
using System.Linq;
using KCS.Logic.Logics.Common;
namespace KCS.Logic.Logic
{
public class TestManagementLogic : ManagementLogic, ITestManagementLogic
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);

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)