Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,12 @@ public LearningSessionsController(
public async Task<IActionResult> Scorm(int id)
{
var rv = await this.resourceService.GetItemByIdAsync(id);
if (rv != null)
{
this.ViewBag.FilePath = $"/ScormContent/{rv.ScormDetails.ContentFilePath}/{rv.ScormDetails.ScormManifest.ManifestUrl}";
}

this.ViewBag.ResourceReferenceId = id;
this.ViewBag.FilePath = $"/ScormContent/{rv.ScormDetails.ContentFilePath}/{rv.ScormDetails.ScormManifest.ManifestUrl}";
this.ViewBag.KeepUserSessionAliveInterval = Convert.ToInt32(this.settings.Value.KeepUserSessionAliveIntervalMins) * 60000;
this.ViewBag.UseTraceWindow = await this.userGroupService.UserHasPermissionAsync("Scorm_Trace_Window");

Expand Down
131 changes: 69 additions & 62 deletions WebAPI/LearningHub.Nhs.Services/ResourceService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1646,64 +1646,71 @@ public async Task<ResourceItemViewModel> GetResourceItemViewModelAsync(int resou
// - set field ResourceVersionIdInEdit / ResourceVersionIdPublishing for this scenario, required for UI rendering
var rv = await this.resourceVersionRepository.GetCurrentForResourceReferenceIdAsync(resourceReferenceId);

int resourceVersionIdInEdit = 0;
int resourceVersionIdPublishing = 0;

if (rv.VersionStatusEnum == VersionStatusEnum.Draft || rv.VersionStatusEnum == VersionStatusEnum.Publishing)
if (rv != null)
{
var rvp = await this.resourceVersionRepository.GetCurrentPublicationForResourceReferenceIdAsync(resourceReferenceId);
int resourceVersionIdInEdit = 0;
int resourceVersionIdPublishing = 0;

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Draft)
if (rv.VersionStatusEnum == VersionStatusEnum.Draft || rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdInEdit = rv.Id;
}
var rvp = await this.resourceVersionRepository.GetCurrentPublicationForResourceReferenceIdAsync(resourceReferenceId);

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdPublishing = rv.Id;
if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Draft)
{
resourceVersionIdInEdit = rv.Id;
}

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdPublishing = rv.Id;
}

rv = rvp;
}

rv = rvp;
}
var erv = await this.GetResourceVersionExtendedViewModelAsync(rv.Id, userId);

var retVal = new ResourceItemViewModel(erv);
retVal.Id = resourceReferenceId;
var bookmark = this.bookmarkRepository.GetAll().Where(b => b.ResourceReferenceId == resourceReferenceId && b.UserId == userId).FirstOrDefault();
retVal.BookmarkId = bookmark?.Id;
retVal.IsBookmarked = !bookmark?.Deleted ?? false;
retVal.ReadOnly = readOnly;
retVal.DisplayForContributor = await this.UserCanEditResourceVersion(rv.CreateUserId, rv.Id, userId);
retVal.ResourceVersionIdInEdit = resourceVersionIdInEdit;
retVal.ResourceVersionIdPublishing = resourceVersionIdPublishing;
retVal.ResourceAccessibilityEnum = rv.ResourceAccessibilityEnum;

// Obtain catalogue associated with the supplied Resource Reference.
var rr = await this.resourceReferenceRepository.GetByOriginalResourceReferenceIdAsync(resourceReferenceId, true);
var catalogueNodeVersion = this.catalogueNodeVersionRepository.GetBasicCatalogue(rr.NodePath.CatalogueNode.Id);
retVal.Catalogue = this.mapper.Map<CatalogueViewModel>(catalogueNodeVersion);
retVal.NodePathId = rr.NodePathId.Value;

var erv = await this.GetResourceVersionExtendedViewModelAsync(rv.Id, userId);
switch (rv.Resource.ResourceTypeEnum)
{
case ResourceTypeEnum.Case:
retVal.CaseDetails = erv.CaseDetails;
break;

var retVal = new ResourceItemViewModel(erv);
retVal.Id = resourceReferenceId;
var bookmark = this.bookmarkRepository.GetAll().Where(b => b.ResourceReferenceId == resourceReferenceId && b.UserId == userId).FirstOrDefault();
retVal.BookmarkId = bookmark?.Id;
retVal.IsBookmarked = !bookmark?.Deleted ?? false;
retVal.ReadOnly = readOnly;
retVal.DisplayForContributor = await this.UserCanEditResourceVersion(rv.CreateUserId, rv.Id, userId);
retVal.ResourceVersionIdInEdit = resourceVersionIdInEdit;
retVal.ResourceVersionIdPublishing = resourceVersionIdPublishing;
retVal.ResourceAccessibilityEnum = rv.ResourceAccessibilityEnum;

// Obtain catalogue associated with the supplied Resource Reference.
var rr = await this.resourceReferenceRepository.GetByOriginalResourceReferenceIdAsync(resourceReferenceId, true);
var catalogueNodeVersion = this.catalogueNodeVersionRepository.GetBasicCatalogue(rr.NodePath.CatalogueNode.Id);
retVal.Catalogue = this.mapper.Map<CatalogueViewModel>(catalogueNodeVersion);
retVal.NodePathId = rr.NodePathId.Value;

switch (rv.Resource.ResourceTypeEnum)
{
case ResourceTypeEnum.Case:
retVal.CaseDetails = erv.CaseDetails;
break;
case ResourceTypeEnum.Assessment:
retVal.AssessmentDetails = erv.AssessmentDetails;
break;

case ResourceTypeEnum.Assessment:
retVal.AssessmentDetails = erv.AssessmentDetails;
break;
case ResourceTypeEnum.Html:
retVal.HtmlDetails = erv.HtmlDetails;
break;

case ResourceTypeEnum.Html:
retVal.HtmlDetails = erv.HtmlDetails;
break;
default:
break;
}

default:
break;
return retVal;
}
else
{
return null;
}

return retVal;
}

/// <summary>
Expand Down Expand Up @@ -3225,30 +3232,30 @@ await strategy.Execute(
/// <returns>The <see cref="Task{LearningHubValidationResult}"/>.</returns>
public async Task CheckAndRemoveResourceVersionProviderAsync(int resourceVersionId, int userId)
{
List<int> userProviderList = new List<int>();
List<int> userProviderList = new List<int>();

// list of resource version provider
var resourceProviderList = await this.providerService.GetByResourceVersionIdAsync(resourceVersionId);
// list of resource version provider
var resourceProviderList = await this.providerService.GetByResourceVersionIdAsync(resourceVersionId);

// list of user providers
var userProviders = await this.providerService.GetByUserIdAsync(userId);
// list of user providers
var userProviders = await this.providerService.GetByUserIdAsync(userId);

if (userProviders != null && userProviders.Count > 0)
{
userProviderList.AddRange(userProviders.Select(n => n.Id).ToList());
}
if (userProviders != null && userProviders.Count > 0)
{
userProviderList.AddRange(userProviders.Select(n => n.Id).ToList());
}

// delete provider from resource version if user do not have permission.
if (resourceProviderList != null && resourceProviderList.Count > 0)
// delete provider from resource version if user do not have permission.
if (resourceProviderList != null && resourceProviderList.Count > 0)
{
foreach (ProviderViewModel resourceProvider in resourceProviderList)
{
foreach (ProviderViewModel resourceProvider in resourceProviderList)
if (!userProviderList.Contains(resourceProvider.Id))
{
if (!userProviderList.Contains(resourceProvider.Id))
{
await this.resourceVersionProviderRepository.DeleteAsync(resourceVersionId, resourceProvider.Id, userId);
}
await this.resourceVersionProviderRepository.DeleteAsync(resourceVersionId, resourceProvider.Id, userId);
}
}
}
}

/// <summary>
Expand Down