Skip to content
Snippets Groups Projects
Commit 3b03f967 authored by Marcel Nellesen's avatar Marcel Nellesen
Browse files

Merge branch 'Topic/611-deactivateResources' into 'Product/599-improvementsResourceCreation'

New: Enabled flags for resource types

See merge request coscine/api/project!61
parents 1393a2b3 6b7ec347
No related branches found
No related tags found
2 merge requests!62Sprint/2020-01,!61New: Enabled flags for resource types
......@@ -86,7 +86,7 @@ namespace Coscine.Api.Project.Tests
"testD",
"keys",
"usageR",
new ResourceTypeObject(Resources[0].Type.Id, Resources[0].Type.DisplayName),
new ResourceTypeObject(Resources[0].Type.Id, Resources[0].Type.DisplayName, Resources[0].Type.Enabled),
new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
new VisibilityObject(Visibility.Id, Visibility.DisplayName),
new LicenseObject(License.Id, License.DisplayName),
......
......@@ -118,11 +118,17 @@ namespace Coscine.Api.Project.Controllers
{
var resourceObject = ObjectFactory<ResourceObject>.DeserializeFromStream(Request.Body);
var projectModel = new ProjectModel();
var resourceTypeModel = new ResourceTypeModel();
var isResourceEnabled = resourceTypeModel.GetById(resourceObject.Type.Id).Enabled;
var project = projectModel.GetById(Guid.Parse(projectId));
var user = _authenticator.GetUser();
if (projectModel.HasAccess(user, project, UserRoles.Owner, UserRoles.Member))
{
if (!isResourceEnabled)
{
return Unauthorized("The user is not authorized to add a new resource of this type to the selected project!");
}
resourceObject.Creator = user.Id;
var resource = _resourceModel.StoreFromObject(resourceObject);
projectModel.AddResource(project, resource);
......
......@@ -25,7 +25,14 @@ namespace Coscine.Api.Project.Controllers
public IActionResult Index()
{
return Json(_resourceTypeModel.GetAll()
.Select((resourceType) => new ResourceTypeObject(resourceType.Id, resourceType.DisplayName)));
.Select((resourceType) => new ResourceTypeObject(resourceType.Id, resourceType.DisplayName, resourceType.Enabled)));
}
[Route("[controller]/enabled")]
public IActionResult GetEnabledResourceTypes()
{
return Json(_resourceTypeModel.GetAllWhere((resourceType) => (resourceType.Enabled == true))
.Select((resourceType) => new ResourceTypeObject(resourceType.Id, resourceType.DisplayName, resourceType.Enabled)));
}
[Route("[controller]/{id}/fields")]
......
......@@ -322,7 +322,7 @@ namespace Coscine.Api.Project.Models
resource.Description,
resource.Keywords,
resource.UsageRights,
new ResourceTypeObject(resource.Type.Id, resource.Type.DisplayName),
new ResourceTypeObject(resource.Type.Id, resource.Type.DisplayName, resource.Type.Enabled),
disciplines,
(resource.Visibility != null) ? new VisibilityObject(resource.Visibility.Id, resource.Visibility.DisplayName) : null,
(resource.License != null) ? new LicenseObject(resource.License.Id, resource.License.DisplayName) : null,
......
......@@ -10,10 +10,13 @@ namespace Coscine.Api.Project.ReturnObjects
public string DisplayName { get; set; }
public ResourceTypeObject(Guid id, string displayName)
public bool Enabled { get; set; }
public ResourceTypeObject(Guid id, string displayName, bool enabled)
{
Id = id;
DisplayName = displayName;
Enabled = enabled;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment