diff --git a/src/Database/Models/ResourceModel.cs b/src/Database/Models/ResourceModel.cs index 82e8744bd2960f498c87db9f3a20f6103d7d4c81..484096e81ca3f74870f2963d63ec060e515b5dbd 100644 --- a/src/Database/Models/ResourceModel.cs +++ b/src/Database/Models/ResourceModel.cs @@ -86,7 +86,7 @@ namespace Coscine.Database.Models } } - public Resource StoreFromObject(ResourceObject resourceObject) + public Resource StoreFromObject(ResourceObject resourceObject, User user) { if (!resourceObject.Disciplines.Any() || resourceObject.ResourceTypeOption == null) { @@ -104,7 +104,8 @@ namespace Coscine.Database.Models VisibilityId = resourceObject.Visibility.Id, ApplicationProfile = resourceObject.ApplicationProfile, FixedValues = resourceObject.FixedValues != null ? resourceObject.FixedValues.ToString() : "{}", - Creator = resourceObject.Creator + // DateCreated is skipped here. Value set automatically by the database. + Creator = user.Id }; if (resourceObject.License != null) { @@ -288,14 +289,10 @@ namespace Coscine.Database.Models { resource.LicenseId = null; } - - // the application profile can not be altered after creation - // resource.ApplicationProfile = resourceObject.ApplicationProfile; - resource.FixedValues = resourceObject.FixedValues != null ? resourceObject.FixedValues.ToString() : "{}"; - - // the resource creator can not be altered after creation - // resource.Creator = resourceObject.Creator; + // Application Profile can not be altered after creation + // Resource DateCreated can not be altered after creation + // Creator can not be altered after creation SetDisciplines(resource, resourceObject.Disciplines); @@ -441,6 +438,7 @@ namespace Coscine.Database.Models resourceTypeOptionObject == null ? new JObject() : JObject.FromObject(resourceTypeOptionObject), resource.ApplicationProfile, JToken.Parse(resource.FixedValues ?? "{}"), + resource.DateCreated, resource.Creator, resource.Archived == "1" ); diff --git a/src/Database/ReturnObjects/ResourceObject.cs b/src/Database/ReturnObjects/ResourceObject.cs index d7b4ec24371c9f423cc36f852ead47ec6275bd82..9bfd9f012effb1c6d2f70865ba7ef451d795e5d4 100644 --- a/src/Database/ReturnObjects/ResourceObject.cs +++ b/src/Database/ReturnObjects/ResourceObject.cs @@ -23,10 +23,11 @@ namespace Coscine.Database.ReturnObjects public JObject ResourceTypeOption { get; set; } public string ApplicationProfile { get; set; } public JToken FixedValues { get; set; } + public DateTime? DateCreated { get; set; } public Guid? Creator { get; set; } public bool Archived { get; set; } - public ResourceObject(Guid id, string displayName, string resourceName, string description, string keywords, string usageRights, ResourceTypeObject type, IEnumerable<DisciplineObject> disciplines, VisibilityObject visibility, LicenseObject license, JObject resourceTypeOption, string applicationProfile, JToken fixedValues, Guid? creator = null, bool archived = false) + public ResourceObject(Guid id, string displayName, string resourceName, string description, string keywords, string usageRights, ResourceTypeObject type, IEnumerable<DisciplineObject> disciplines, VisibilityObject visibility, LicenseObject license, JObject resourceTypeOption, string applicationProfile, JToken fixedValues, DateTime? dateCreated, Guid? creator = null, bool archived = false) { Id = id; @@ -45,7 +46,7 @@ namespace Coscine.Database.ReturnObjects ApplicationProfile = applicationProfile; FixedValues = fixedValues; - + DateCreated = dateCreated; Creator = creator; Archived = archived; } diff --git a/src/Scaffolding/DataModel/Model.cs b/src/Scaffolding/DataModel/Model.cs index 6581a174ab564b822a0024ee30030cafa1fcf5af..5c3a5f0f49166aa879b583423bf64f1457e74fb9 100644 --- a/src/Scaffolding/DataModel/Model.cs +++ b/src/Scaffolding/DataModel/Model.cs @@ -625,6 +625,10 @@ namespace Coscine.Database.DataModel .HasMaxLength(255) .HasDefaultValueSql("(N'0')"); + entity.Property(e => e.DateCreated) + .HasColumnType("datetime") + .HasDefaultValueSql("(getutcdate())"); + entity.Property(e => e.DisplayName).HasMaxLength(25); entity.Property(e => e.Keywords).HasMaxLength(1000); diff --git a/src/Scaffolding/DataModel/Resource.cs b/src/Scaffolding/DataModel/Resource.cs index e47116fd4fefa022b164a810562409215018aba7..69cb6f23186d57d6de911e088baaba84bf5e9ac4 100644 --- a/src/Scaffolding/DataModel/Resource.cs +++ b/src/Scaffolding/DataModel/Resource.cs @@ -30,6 +30,7 @@ namespace Coscine.Database.DataModel public Guid? Creator { get; set; } public string Archived { get; set; } public bool Deleted { get; set; } + public DateTime? DateCreated { get; set; } public virtual License License { get; set; } public virtual ResourceType Type { get; set; }