Select Git revision
ResourceModel.cs
-
Benedikt Heinrichs authoredBenedikt Heinrichs authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ResourceModel.cs 2.11 KiB
using Coscine.Api.Project.ReturnObjects;
using Coscine.Database.Model;
using LinqToDB;
using System;
using System.Linq;
using System.Linq.Expressions;
namespace Coscine.Api.Project.Models
{
public class ResourceModel : DatabaseModel<Resource>
{
public ResourceModel() : base(Program.Configuration)
{
}
public Resource StoreFromObject(ResourceObject resourceObject)
{
Resource resource = new Resource()
{
ExternalId = resourceObject.ExternalId,
Url = resourceObject.Url,
TypeId = resourceObject.Type.Id
};
resource.Type = new ResourceTypeModel().GetById(resourceObject.Type.Id);
Insert(resource);
return resource;
}
public bool OwnsResource(User user, Resource resource)
{
return DatabaseConnection.ConnectToDatabase((db) =>
{
return (from relation in db.ProjectRoles
where relation.User == user
&& relation.Role.DisplayName == "Owner"
&& (relation.Project.ProjectResourceProjectIdIds != null && relation.Project.ProjectResourceProjectIdIds.
Any((projectResource) => projectResource.Resource == resource))
select relation).Any();
});
}
public override Expression<Func<Resource, Guid>> GetIdFromObject()
{
return databaseObject => databaseObject.Id;
}
public override ITable<Resource> GetITableFromDatabase(CoscineDB db)
{
return db.Resources;
}
public override void SetObjectId(Resource databaseObject, Guid Id)
{
databaseObject.Id = Id;
}
public int UpdateByObject(Resource resource, ResourceObject resourceObject)
{
resource.ExternalId = resourceObject.ExternalId;
resource.TypeId = resourceObject.Type.Id;
resource.Url = resourceObject.Url;
return Update(resource);
}
}
}