diff --git a/src/Database/Models/ProjectModel.cs b/src/Database/Models/ProjectModel.cs index b0deffea5471f5d053f7931250801f6dcf44ffdf..ba9390d7527113a4527a3bb9878c2cbf842ea50f 100644 --- a/src/Database/Models/ProjectModel.cs +++ b/src/Database/Models/ProjectModel.cs @@ -131,7 +131,7 @@ namespace Coscine.Database.Models }); } - public Project StoreFromObject(ProjectObject projectObject, User user, IDictionary<string, int> defaultQuota) + public Project StoreFromObject(ProjectObject projectObject, User user, IEnumerable<ProjectQuota> defaultProjectQuotas) { if (!projectObject.Disciplines.Any() || !projectObject.Organizations.Any()) { @@ -158,7 +158,7 @@ namespace Coscine.Database.Models { SetDisciplines(project, projectObject.Disciplines); SetOrganizations(project, projectObject.Organizations); - SetQuotas(project, defaultQuota); + SetQuotas(project, defaultProjectQuotas); } catch (Exception) { @@ -252,17 +252,30 @@ namespace Coscine.Database.Models } } - public void SetQuotas(Project project, IDictionary<string, int> defaultQuotas) + public void SetQuotas(Project project, IEnumerable<ProjectQuota> defaultProjectQuotas) { ProjectQuotaModel projectQuotaModel = new ProjectQuotaModel(); ResourceTypeModel resourceTypeModel = new ResourceTypeModel(); + foreach (var resourceType in resourceTypeModel.GetAll()) { + int quota = 0; + int maxQuota = 0; + + var tDefaultQuotas = defaultProjectQuotas.Where(x => x.ResourceTypeId == resourceType.Id); + + if (tDefaultQuotas.Any()) + { + quota = tDefaultQuotas.First().Quota; + maxQuota = tDefaultQuotas.First().MaxQuota; + } + projectQuotaModel.Insert(new ProjectQuota { ProjectId = project.Id, ResourceTypeId = resourceType.Id, - Quota = defaultQuotas != null && defaultQuotas.ContainsKey(resourceType.DisplayName) ? defaultQuotas[resourceType.DisplayName] : 0 + Quota = quota, + MaxQuota = maxQuota }); } }