kreta/KretaWeb/Areas/Adminisztracio/Controllers/ELearningController.cs
2024-03-13 00:33:46 +01:00

82 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Elearning.Nexius;
using Kreta.Framework;
using Kreta.KretaServer.Caching;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Nexius.IdentityProvider.Model.External.V1;
using Nexius.IdentityProvider.Model.Lti;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue, KretaClaimPackages.IsDefaultAdminUser.ClaimValue)]
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public class ELearningController : Controller
{
readonly INexiusCourseService nexiusCourseService;
public ELearningController(INexiusCourseService nexiusCourseService)
{
this.nexiusCourseService = nexiusCourseService;
}
public ActionResult Index()
{
var cache = SDAServer.Instance.CacheManager.AquireCache<ElearningCache>();
var model = new List<NexiusListItemModel>();
var isGondviselo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId != null;
var isTanulo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId == null;
var courseIdList = new ElearningElerhetosegHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetElearningElerhetosegList(isGondviselo, isTanulo, (int)ClaimData.FelhasznaloSzerepkor, ClaimData.FelhasznaloSzerepCsomagok, ClaimData.GondviseloId);
var courses = cache.GetCourses(courseIdList, nexiusCourseService);
var courseResults = nexiusCourseService.GetUserCourseResults(GetFelhasznaloAzonosito());
CourseResult courseResult;
NexiusListItemModel listItem;
foreach (var course in courses)
{
listItem = new NexiusListItemModel() { Course = course.Value };
courseResult = courseResults.FirstOrDefault(x => x.Activities.CourseObjectId == course.Value.CourseObject.Id);
if (courseResult != null)
{
listItem.CourseResult = courseResult;
}
else
{
listItem.CourseResult = new CourseResult();
listItem.CourseResult.Activities = new LtiCourseResultModel();
listItem.CourseResult.Activities.Progress = 0;
listItem.CourseResult.Activities.Measure = 0;
listItem.CourseResult.Activities.ResultEndTime = DateTime.MaxValue;
listItem.CourseResult.Activities.TotalTime = 0;
}
model.Add(listItem);
}
return View(model);
}
private string GetFelhasznaloAzonosito()
{
if (ClaimData.GondviseloId.HasValue)
{
return new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetGondviseloEgyediAzonosito(ClaimData.GondviseloId.Value);
}
else
{
return new FelhasznaloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId);
}
}
}
}