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); } } }