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

72 lines
3 KiB
C#

using System;
using System.Web.Http;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.Elearning.Nexius;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Nexius.Common.Helpers;
using Nexius.Common.Lti;
namespace Kreta.Web.Areas.Adminisztracio.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
public class ELearningApiController : ApiController
{
private readonly INexiusCourseService nexiusCourseService;
public ELearningApiController(INexiusCourseService nexiusCourseService)
{
this.nexiusCourseService = nexiusCourseService;
}
[HttpGet]
public IHttpActionResult StartCourse(string launchUri)
{
var felhasznaloId = string.Empty;
var vezeteknev = ClaimData.Vezeteknev;
var utonev = ClaimData.Utonev;
var nexiusId = new IntezmenyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetNexiusId();
FelhasznaloHelper helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
if (ClaimData.GondviseloId.HasValue)
{
var (EgyediAzonosito, Nev) = helper.GetGondviseloAdat(ClaimData.GondviseloId.Value);
felhasznaloId = EgyediAzonosito;
vezeteknev = Nev;
utonev = " ";
}
else
{
felhasznaloId = helper.GetFelhasznaloEgyediAzonosito(ClaimData.FelhasznaloId);
}
Uri requestUrl = Request.RequestUri;
string returnUrl = $"{requestUrl.Scheme}://{requestUrl.Host}/Adminisztracio/ELearning";
var isGondviselo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId != null;
var isTanulo = ClaimData.IsTanuloOrGondviselo && ClaimData.GondviseloId == null;
(string szuletesiNev, string oktatasiAzonosito, string emailCim) = helper.GetUserDetailsForElearning(ClaimData.FelhasznaloId, ClaimData.GondviseloId, isGondviselo, isTanulo);
var ltiRequest = new LtiLauchRequest()
{
UserId = felhasznaloId,
FamilyName = vezeteknev,
GivenName = utonev,
MothersName = isGondviselo ? string.Empty : ClaimData.AnyjaNeve,
BirthName = isGondviselo ? string.Empty : szuletesiNev,
BirthPlace = isGondviselo ? string.Empty : ClaimData.SzuletesiHely,
BirthDay = string.IsNullOrWhiteSpace(ClaimData.SzuletesiDatum) || isGondviselo ? (DateTime?)null : DateTime.Parse(ClaimData.SzuletesiDatum),
EducationalId = isGondviselo ? string.Empty : oktatasiAzonosito,
PrimaryEmail = emailCim,
ReturnUrl = returnUrl,
RegistrarId = string.IsNullOrWhiteSpace(nexiusId) ? (ShortGuid?)null : Guid.Parse(nexiusId) // implicitly cast the guid as a shortguid
};
string url = nexiusCourseService.GenerateLaunchUri(launchUri, ltiRequest);
return Redirect(url);
}
}
}