72 lines
3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|