Entité du sujet 3 avec connections et cardinalités

This commit is contained in:
2025-10-02 14:53:55 +02:00
parent d3a8ae593e
commit 21d3480b19
6 changed files with 139 additions and 0 deletions

24
PyroFetes/Models/Show.cs Normal file
View File

@@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class Show
{
[Key] public int Id { get; set; }
[MaxLength(120)]
public string? Place { get; set; }
[MaxLength(500)]
public string? Description { get; set; }
// Lien (chemin/URL/nom de fichier) vers le plan dimplémentation pyrotechnique
[MaxLength(500)]
public string? PyrotechnicImplementationPlan { get; set; }
public DateTime? Date { get; set; }
public ICollection<Staff> Staff { get; set; } = new List<Staff>();
public ICollection<Truck> Trucks { get; set; } = new List<Truck>();
public ICollection<SoundTimecode> SoundCues { get; set; } = new List<SoundTimecode>();
}

34
PyroFetes/Models/Sound.cs Normal file
View File

@@ -0,0 +1,34 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class Sound
{
[Key] public int Id { get; set; }
[Required, MaxLength(120)]
public string Name { get; set; } = null!;
[MaxLength(60)]
public string? Type { get; set; }
[MaxLength(120)]
public string? Artist { get; set; }
[Range(0, int.MaxValue)]
public int? Duration { get; set; }
[MaxLength(40)]
public string? Kind { get; set; }
[MaxLength(40)]
public string? Format { get; set; }
public DateTime? CreationDate { get; set; }
[Required]
public int SoundCategoryId { get; set; }
public SoundCategory? Category { get; set; }
public ICollection<SoundTimecode> ShowPlacements { get; set; } = new List<SoundTimecode>();
}

View File

@@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class SoundCategory
{
[Key] public int Id { get; set; }
[Required, MaxLength(60)]
public string Name { get; set; } = null!;
public ICollection<Sound> Sounds { get; set; } = new List<Sound>();
}

View File

@@ -0,0 +1,22 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class SoundTimecode
{
[Key] public int Id { get; set; }
[Required]
public int ShowId { get; set; }
public Show? Show { get; set; }
[Required]
public int SoundId { get; set; }
public Sound? Sound { get; set; }
[Required, Range(0, int.MaxValue)]
public int Start { get; set; }
[Required, Range(0, int.MaxValue)]
public int End { get; set; }
}

22
PyroFetes/Models/Staff.cs Normal file
View File

@@ -0,0 +1,22 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class Staff
{
[Key] public int Id { get; set; }
[Required, MaxLength(60)]
public string FirstName { get; set; } = null!;
[Required, MaxLength(60)]
public string LastName { get; set; } = null!;
[MaxLength(100)]
public string? Profession { get; set; }
[EmailAddress, MaxLength(120)]
public string? Email { get; set; }
public ICollection<Show> Shows { get; set; } = new List<Show>();
}

24
PyroFetes/Models/Truck.cs Normal file
View File

@@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
namespace PyroFetes.Models;
public class Truck
{
[Key] public int Id { get; set; }
[Required, MaxLength(40)]
public string Type { get; set; } = null!;
[Range(0, double.MaxValue)]
public double? MaxExplosiveCapacity { get; set; }
[MaxLength(80)]
public string? Sizes { get; set; }
[MaxLength(40)]
public string? Statut { get; set; }
[Required]
public int ShowId { get; set; }
public Show? Show { get; set; }
}