{"id":21189119,"url":"https://github.com/azizbenismail/project_cagnotte_dotnet","last_synced_at":"2026-05-21T10:06:20.229Z","repository":{"id":167320418,"uuid":"642533879","full_name":"AzizBenIsmail/Project_Cagnotte_DotNet","owner":"AzizBenIsmail","description":"L’application doit permettre aux entreprises inscrites de créer des cagnottes et d’inviter des participants à contribuer en versant un montant d’argent. La collecte de ces contributions permettra à l’entreprise de financer un événement marquant (cadeau pour un pot de départ…), une dépense à plusieurs (team building...) ou un projet solidaire.","archived":false,"fork":false,"pushed_at":"2023-12-06T18:44:46.000Z","size":14586,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T13:23:58.298Z","etag":null,"topics":["asp-net-core","asp-net-mvc","dotnet","entity-framework-core"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AzizBenIsmail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-18T19:39:22.000Z","updated_at":"2023-12-06T18:37:58.000Z","dependencies_parsed_at":"2024-11-20T19:02:07.737Z","dependency_job_id":null,"html_url":"https://github.com/AzizBenIsmail/Project_Cagnotte_DotNet","commit_stats":null,"previous_names":["azizbenismail/project_cagnotte_dotnet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FProject_Cagnotte_DotNet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FProject_Cagnotte_DotNet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FProject_Cagnotte_DotNet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FProject_Cagnotte_DotNet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AzizBenIsmail","download_url":"https://codeload.github.com/AzizBenIsmail/Project_Cagnotte_DotNet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243646524,"owners_count":20324582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp-net-core","asp-net-mvc","dotnet","entity-framework-core"],"created_at":"2024-11-20T18:50:07.963Z","updated_at":"2026-05-21T10:06:15.210Z","avatar_url":"https://github.com/AzizBenIsmail.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExamDotNetBeauty2023\n\n![GitHub repo size](https://img.shields.io/github/repo-size/AzizBenIsmail/Project_Cagnotte_DotNet)\n\n\n# class\n    public enum PlaneType\n    {\n        BOING=1,AIRBUS=2\n    }\n\t\t\t\t\t\t---------\n\tpublic class Flight\n    { prop ...\n\tpublic string Nom { get; set; }\n\t}\n# ANNOTATIONS\n### Obligatoire: \n\t[Required]\n### obligatoire avec message d'erreur:  \n\t[Required(ErrorMessage =\"Champs obligatoire\")]\n\n## base_de_donné\n\n### Ne voulons pas créer de colonnes correspondantes dans la base de données :\n\t[NotMapped]\n### Nom d'une table dans une table db : \n\t[Table(\"MyFlight\")]\n### Nom d'une colonne dans une table db : \n\t[Column(\"Name\")]\n### Type de données d'une colonne :\n\t[Column(\"DoB\", TypeName=\"DateTime2\")]\n\n## Clé\n\n### clé primaire: \n\t[Key]\n### commençant par l'index zéro : \n\t[Column(Order=1)]\n### cle etrangere : \n\t[ForeignKey(“StandardId”)]\n\n## un champ de 7 caractères\n\n\t[MinLength(7, ErrorMessage = \"MinLength 7\")]\n\t[MaxLength(7, ErrorMessage = \"MaxLength 7\")]\n### ou \n\t[StringLength(7, MinimumLength = 7, ErrorMessage = \"il faut etre 7 characters .. ... ...\")]\n\t[StringLength(25, MinimumLength = 3, ErrorMessage = \"First entre 3 characters et 25 characters .\")]\n### ou\n\t[Range(0,int.MaxValue,ErrorMessage =\"entier positive\")]\n\t[Range(1,120, ErrorMessage=\"Age must be between 1-120 in years.\")]\n\n### Positif ne depasse pas 24 :\n\t[Range(0,24)]\n\n### Nombre positif/negatif: \n\t[Range(0, int.MaxValue)] \n### ou\n\t[Range(0, int.MinValue)]\n\n## DATATYPE ATTRIBUTE\n\n### date valide: \n\t[DataType(DataType.Date)]\n\n### multiligne: \n\t[DataType(DataType.MultilineText)]\n\n### Type monnaie: \n\t[DataType(DataType.Currency)]\n\n### CreditCard : \n\t[DataType(DataType.Currency)]\n\n### DateTime : \n\t[DataType(DataType.DateTime)]\n\n### EmailAddress : \n\t[DataType(DataType.EmailAddress,ErrorMessage =\"aaa\")]\n\n### ImageUrl : \n\t[DataType(DataType.ImageUrl)]\n\n### Password : \n\t[DataType(DataType.Password)]\n\n### PhoneNumber : \n\t[DataType(DataType.PhoneNumber)]\n\n### PostalCode : \n\t[DataType(DataType.PostalCode)]\n\n### Text : \n\t[DataType(DataType.Text)]\n\n### Time : \n\t[DataType(DataType.Time)]\n\n## COMPARE ATTRIBUTE\n\n\t[Compare(\"Email\", ErrorMessage= \"Email Not Matched\")]\n\n## longueur maximale \n\n### longueur maximale de la valeur de données autorisée pour une propriété : \n\t[MaxLength(50)]\n\n### le nombre maximum de caractères autorisés : \n\t[StringLength(50)]\n\n### Phone EmailAddress\n\n        [Phone(ErrorMessage =\"phone number\")]\n        [EmailAddress(ErrorMessage = \"une address email invalid .\")]\n\n## colonne\n\n### affichage du nom de la colonne dans l’ interface utilisateur :\n\t\t\t\t\t[Display(Name = “Student Email“)]\n\t\t\t\t\t\t\tpublic string Email { get; set;}\n        [Display(Name = \"Date of Birth\")]\n\n# heritgae\n    public class Staff :Passenger\n    \n# relation\n### Many to Many *-\u003e*:\n\tpublic virtual ICollection\u003cPostulant\u003e Postulants { get; set; }\n### One to Many (Many to One) * -\u003e 1 :  \n\tpublic virtual Entreprise Entreprise { get; set; }\n\n\t\t[ForeignKey(\"PlaneId\")] \n\tou bien\n        \tpublic virtual Plane? MyPlane { get; set; }\n\n        [ForeignKey(\"MyPlane\")]\n        public int? PlaneId { get; set; } //prop\n        //tp5 Q6\n        //public IList\u003cPassenger\u003e passengers { get; set; }\n        public virtual IList\u003cReservation\u003e Reservations { get; set; }\n# Config\n### changer le nom de la table : \n\tbuilder.ToTable(\"MyFlight\");\n\t\n### changer le nom de la attribue : \n\t\tbuilder.Property(p =\u003e p.Capacity).HasColumnName(\"PlaneCapacity\");\n            builder.HasKey(p =\u003e p.PlaneId);\n\t\n### declarer une relation\n            builder\n                .HasOne(f =\u003e f.MyPlane) // ta3 class 1 thot feha one or many w attribue 1\n                .WithMany(p =\u003e p.Flights) // ta3 class 2 thot feha one or many w attribue 2\n                .HasForeignKey(f =\u003e f.PlaneId)\n                .OnDelete(DeleteBehavior.SetNull);\n\t\t\t\tOR\n\tun simple  [ForeignKey(“PlaneId”)] fou9 declamation du var plane\n\t\t\t\n### cas Many to Many mnghir table fil west \n            //builder\n            //    .HasMany(f =\u003e f.passengers)\n            //    .WithMany(p =\u003e p.Flights)\n            //    .UsingEntity(ass =\u003e ass.ToTable(\"FP\")); \n\n### cas Many to Many w fama table ili fil west\ntasna3ha wahdha l classe ili fil west mba3ed tzidha \n\t\n\t\t\t----------------\n        public virtual Passenger MyPassenger { get; set; }\n        public string PassengerId { get; set; }\n        public virtual Flight MyFlight { get; set; }\n        public int FlightId { get; set; }\n\t\t\t-----------------\n            builder.HasOne(r =\u003e r.MyPassenger)\n                .WithMany(p =\u003e p.Reservations)\n                .HasForeignKey(r=\u003er.PassengerId)\n                .OnDelete(DeleteBehavior.Cascade);\n            builder.HasOne(r=\u003er.MyFlight)\n                .WithMany(f=\u003ef.Reservations)\n                .HasForeignKey(r=\u003er.FlightId)\n                .OnDelete(DeleteBehavior.Cascade);\n            builder.HasKey(r =\u003e new { r.FlightId, r.PassengerId });\n\n$$$ =\u003e tansech t3aytelha fil OnModelCreating\n\n### Question mchag3eb TPH (Table Par Hiérarchie).\nConfigurer l’héritage schématisé dans le diagramme de classe de façon à ce que les\nentités seront mappées à\nIsTraveller : \n=\u003e fil FlightConfig\n### Exp 1\t\n\t\n\tmodelBuilder.Entiy\u003cMembre\u003e()\n\t.HasDiscriminator\u003cstring\u003e(\"Type\")\n\t.HasValue\u003cEntraineur\u003e(\"e\")\n\t.HasValue\u003cJoueur\u003e(\"j\")\n\t.HasValue\u003cMembre\u003e(\"m\");\n### Exp 2\n\t\n            builder.HasDiscriminator\u003cint\u003e(\"isTraveler\")\n                .HasValue\u003cPassenger\u003e(0)\n                .HasValue\u003cTraveller\u003e(1)\n                .HasValue\u003cStaff\u003e(2);\n### Question mchag3eb TPT (Table Par Table)\nConfigurer l'héritage schéématisé dans le diagramme de classe de façonn à ce que les entités \nseront mappées sur 3 tabllee :\n=\u003e fil AMContext\n### exp 1\n\t\n\tmodelBuilder.Entity\u003cBiological\u003e().ToTable(\"Biologicals\");\n\tmodelBuilder.Entity\u003cChemical\u003e().ToTable(\"Chemicals\");\n### exp 2\n            modelBuilder.Entity\u003cStaff\u003e().ToTable(\"Staffs\");\n            modelBuilder.Entity\u003cTraveller\u003e().ToTable(\"Travellers\");\n## LazyLoading\ntzidha fil OnConfiguring fil AMContext7\n\t\n\toptionsBuilder.UseLazyLoadingProxies(); \nay propriétés de navigation tzidha 9dem public virtual (ay haja de type classe o5ra) \n## AMContexe\n\t\n\t public class AMContext : DbContext //herite de DbContext\n \t   {\n  \t      public DbSet\u003cFlight\u003e Flights { get; set; } // pour chaque classe\n\n### parametrer l'acces a la base de donne\n        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n        {\n            optionsBuilder.UseSqlServer(@\"Data Source=(localdb)\\mssqllocaldb; \n                    Initial Catalog = Airport;  \n                    Integrated Security = true\");\n            //Tp5 Q13\n            optionsBuilder.UseLazyLoadingProxies(); // LazyLoading\n         \n        }\n### pour appliquer le modification du Flightconfig\n        protected override void OnModelCreating(ModelBuilder modelBuilder) \n        {\n            modelBuilder.ApplyConfiguration(new ReservationConfig());\n\n        }\n### si fama tabdila ala nes lkol\n        protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)\n        {\n            configurationBuilder.Properties\u003cDateTime\u003e()\n                .HaveColumnType(\"date\");\n        }\n    }\n# constructeur\n\n        public Plane(PlaneType pt, int capacity, DateTime date)\n        {\n            Capacity = capacity;// on peut utiliser  this.Capacity = capacity; ou sans this (pour distinguer les noms)\n            ManufactureDate = date;\n            MyPlaneType = pt;\n        }\n# ToString\n        public override string ToString()\n        {\n            return \"Capacity:\" + Capacity + \";\"\n                + \"ManufactureDate:\" + ManufactureDate + \";\"\n                + \"PlaneId:\" + PlaneId + \";\"\n                + \"PlaneType:\" + MyPlaneType;\n        }\n\n# Services\nServices pour cree les fonction de modifercation Crud\non Va Cree IFlightService comme interface des fonction dans FlightService et herite IFlightService et dans FlightService on cree les fonction\n\t\n\tpublic class FlightService :Service\u003cFlight\u003e, IFlightService\n\t{}\n        public IList\u003cFlight\u003e Flights { get; set; } //prop\n\n        public IList\u003cDateTime\u003e GetFlightDates(string destination) // linqIntegre\n        {\n            //return (from f in Flights \n            //       where f.Destination == destination\n            //       select f.FlightDate).ToList();\n            return Flights.Where(f =\u003e f.Destination == destination) //Methoded'extention\n                .Select(f =\u003e f.FlightDate).ToList();\n\n        }\n# Le langage LINQ\n\t\n\tvar PersoQuery =\n\tfrom perso in personnes \n\twhere ( perso.Budget \u003e 500)\n\torderby perso.Nom ascending\n\tselect new { Name = perso.Nom, Number = perso.Num};\n\n## First(): \nRenvoie le premier élément d'une collection ou le premier élément qui\nsatisfait une condition.\n\n## FirstOrDefault():\nRenvoie le premier élément d'une collection ou le premier\nélément qui satisfait une condition. Renvoie une valeur par défaut si l'index est\nhors plage.\n\n## Single(): \nRenvoie le seul élément d'une collection ou le seul élément qui satisfait à\nune condition.\n\n## SingleOrDefault(): \nIdentique à Single, sauf qu'il renvoie une valeur par défaut\nd'un type générique spécifié, au lieu de lever une exception\n\n## Last(): \nRenvoie le dernier élément d'une collection ou le dernier élément qui\nsatisfait à une condition.\n\n## LastOrDefault(): \nRenvoie le dernier élément d'une collection ou le dernier\nélément qui satisfait à une condition. Renvoie une valeur par défaut si aucun\nélément de ce type n'existe.\n\n## Skip(): \n\nPour indiquer le nombre d’ élément a ignorer de la sélection.\n\n## Take(): \n\nPour indiquer le nombre d’ élément a garder de la sélection.\n\n## Average(): \n\ncalcule la moyenne des éléments numériques de la collection.\n\n## Sum() : \n\ncalcule la somme des éléments numériques de la collection.\n\n## Max(): \n\nrenvoie le plus grand élément numérique d'une collection.\n\n## Count: \n\nrenvoie le nombre d'éléments de la collection ou le nombre d'éléments\nqui ont satisfait à la condition donnée.\n\n# Les méthodes anonymes\n        public void ShowFlightDetails(Plane plane)\n        {\n            var result = from f in Flights\n                         where f.MyPlane.PlaneId == plane.PlaneId\n                         select new { f.Destination, f.FlightDate }; //type anonyme\n            foreach (var item in result)\n            {\n                Console.WriteLine(\"destination : \" + item.Destination +\n                    \"date :\" + item.FlightDate);\n            }\n        }\n## \n    internal class ReservationConfig : IEntityTypeConfiguration\u003cReservation\u003e\n    {\n        public void Configure(EntityTypeBuilder\u003cReservation\u003e builder)\n        {\n            builder.HasOne(r =\u003e r.MyPassenger)\n                .WithMany(p =\u003e p.Reservations)\n                .HasForeignKey(r=\u003er.PassengerId)\n                .OnDelete(DeleteBehavior.Cascade);\n            builder.HasOne(r=\u003er.MyFlight)\n                .WithMany(f=\u003ef.Reservations)\n                .HasForeignKey(r=\u003er.FlightId)\n                .OnDelete(DeleteBehavior.Cascade);\n            builder.HasKey(r =\u003e new { r.FlightId, r.PassengerId });\n        }\n\n    }\n# Migration de base de donne\n\tAdd-Migration\n\tUpdate-Database \n# Configuration\n\t\n    \tPublic class PlaneConfig : IEntityTypeConfiguration\u003cPlane\u003e\n    \t{\n\t        public void Configure(EntityTypeBuilder\u003cPlane\u003e builder)\n\t        {\n\t            builder.ToTable(\"MyPlanes\"); //modifcation du nom\n\t            builder.Property(p =\u003e p.Capacity).HasColumnName(\"PlaneCapacity\");\n\t            builder.HasKey(p=\u003ep.PlaneId); // fixsage du cle primere\n        \t}\n\t    }\n# Relation\n            //builder\n            //    .HasMany(f =\u003e f.passengers)\n            //    .WithMany(p =\u003e p.Flights)\n            //    .UsingEntity(ass =\u003e ass.ToTable(\"FP\"));   \n\n            builder\n                .HasOne(f =\u003e f.MyPlane)\n                .WithMany(p =\u003e p.Flights)\n                .HasForeignKey(f =\u003e f.PlaneId)\n                .OnDelete(DeleteBehavior.SetNull);\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizbenismail%2Fproject_cagnotte_dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazizbenismail%2Fproject_cagnotte_dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizbenismail%2Fproject_cagnotte_dotnet/lists"}