yavsc/src/Yavsc.Server/Models/Blog/BlogPost.cs

91 lines
2.4 KiB
C#
Raw Normal View History

2016-05-17 18:22:18 +02:00
using System;
2017-01-20 14:20:44 +01:00
using System.Collections.Generic;
2016-05-17 18:22:18 +02:00
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
2023-03-26 21:48:25 +01:00
using Microsoft.EntityFrameworkCore;
2016-08-03 23:25:57 +02:00
using Newtonsoft.Json;
2018-07-16 02:36:44 +02:00
using Yavsc.Abstract.Identity.Security;
2019-09-04 01:25:36 +01:00
using Yavsc.Attributes.Validation;
2017-10-02 13:15:01 +02:00
using Yavsc.Interfaces;
2017-01-20 14:20:44 +01:00
using Yavsc.Models.Access;
2017-10-02 13:15:01 +02:00
using Yavsc.Models.Relationship;
2024-11-10 23:12:02 +00:00
using Yavsc.ViewModels.Blog;
2016-05-17 18:22:18 +02:00
2017-10-04 23:53:47 +02:00
namespace Yavsc.Models.Blog
2016-05-17 18:22:18 +02:00
{
2024-11-10 23:12:02 +00:00
public class BlogPost : BlogPostInputViewModel, IBlogPost, ICircleAuthorized, ITaggable<long>, IIdentified<long>
2016-05-17 18:22:18 +02:00
{
[Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
2017-03-10 16:42:57 +01:00
[Display(Name="Identifiant du post")]
2025-02-23 20:23:23 +00:00
public long Id { get; set; }
2016-07-27 10:55:44 +02:00
2017-03-10 16:42:57 +01:00
[Display(Name="Identifiant de l'auteur")]
2023-03-26 21:48:25 +01:00
[ForeignKey("Author")]
2025-02-23 20:23:23 +00:00
public string AuthorId { get; set; }
2017-03-10 16:42:57 +01:00
[Display(Name="Auteur")]
2025-02-23 20:23:23 +00:00
public virtual ApplicationUser Author { set; get; }
2017-10-04 23:53:47 +02:00
2017-01-17 14:56:53 +01:00
2017-03-10 16:42:57 +01:00
[Display(Name="Date de création")]
2017-01-17 14:56:53 +01:00
public DateTime DateCreated
{
get; set;
}
2017-03-10 16:42:57 +01:00
[Display(Name="Créateur")]
2025-02-23 20:23:23 +00:00
public string UserCreated
2017-01-17 14:56:53 +01:00
{
get; set;
}
2017-03-10 16:42:57 +01:00
[Display(Name="Dernière modification")]
2017-01-17 14:56:53 +01:00
public DateTime DateModified
{
get; set;
}
2017-03-10 16:42:57 +01:00
[Display(Name="Utilisateur ayant modifé le dernier")]
2025-02-23 20:23:23 +00:00
public string UserModified
2017-01-17 14:56:53 +01:00
{
get; set;
}
2017-05-27 16:22:58 +02:00
public bool AuthorizeCircle(long circleId)
{
2017-05-27 18:29:45 +02:00
return ACL?.Any( i=>i.CircleId == circleId) ?? true;
}
public ICircleAuthorization[] GetACL()
{
return ACL.ToArray();
}
2017-10-02 13:15:01 +02:00
public void Tag(Tag tag)
{
var existent = Tags.SingleOrDefault(t => t.PostId == Id && t.TagId == tag.Id);
if (existent==null) Tags.Add(new BlogTag { PostId = Id, Tag = tag } );
}
2025-02-23 20:23:23 +00:00
public void DeTag(Tag tag)
2017-10-02 13:15:01 +02:00
{
var existent = Tags.SingleOrDefault(t => (( t.TagId == tag.Id) && t.PostId == Id));
if (existent!=null) Tags.Remove(existent);
}
public string[] GetTags()
{
return Tags.Select(t=>t.Tag.Name).ToArray();
}
2017-10-04 23:53:47 +02:00
[InverseProperty("Post")]
2025-02-23 20:23:23 +00:00
public virtual List<BlogTag> Tags { get; set; }
2017-10-04 23:53:47 +02:00
[InverseProperty("Post")]
2025-02-23 20:23:23 +00:00
public virtual List<Comment> Comments { get; set; }
2025-02-08 20:06:24 +00:00
[NotMapped]
public string OwnerId => AuthorId;
2016-05-17 18:22:18 +02:00
}
}