diff --git a/Yavsc.Server/Models/IT/Project.cs b/Yavsc.Server/Models/IT/Project.cs
index a7e3bfcb..ed1c48e0 100644
--- a/Yavsc.Server/Models/IT/Project.cs
+++ b/Yavsc.Server/Models/IT/Project.cs
@@ -7,6 +7,26 @@ using Yavsc.Server.Models.IT.SourceCode;
namespace Yavsc.Server.Models.IT
{
+
+ public class ProjectBuildConfiguration
+ {
+ [Key]
+ public long Id { get; set; }
+
+ [Required]
+ public string Name { get; set; }
+
+ [Required]
+ public string ProjectName { get; set;}
+
+ [ForeignKey("ProjectName")]
+ public virtual Project TargetProject { get; set; }
+
+ }
+
+
+
+
public class Project : NominativeServiceCommand
{
[Key]
@@ -15,12 +35,23 @@ namespace Yavsc.Server.Models.IT
public string LocalRepo { get; set; }
+ ///
+ /// This field is something like a key,
+ /// since it is required non null,
+ /// and is the key of the foreign GitRepositoryReference entity.
+ ///
+ /// As a side effect, there's no project without valid git reference in db.
+ ///
+ ///
+ [Required]
public string Name { get; set; }
+
public string Version { get; set; }
- public string[] Configurations { get; set; }
-
- [ForeignKey("LocalRepo")]
+ [InverseProperty("TargetProject")]
+ public virtual List Configurations { get; set; }
+
+ [ForeignKey("Name")]
public virtual GitRepositoryReference Repository { get; set; }
List bill = new List ();
@@ -50,4 +81,6 @@ namespace Yavsc.Server.Models.IT
}
}
-}
\ No newline at end of file
+}
+
+
diff --git a/Yavsc/Migrations/20180621110734_projects.Designer.cs b/Yavsc/Migrations/20180621110734_projects.Designer.cs
new file mode 100644
index 00000000..2a0b9285
--- /dev/null
+++ b/Yavsc/Migrations/20180621110734_projects.Designer.cs
@@ -0,0 +1,1919 @@
+using System;
+using Microsoft.Data.Entity;
+using Microsoft.Data.Entity.Infrastructure;
+using Microsoft.Data.Entity.Metadata;
+using Microsoft.Data.Entity.Migrations;
+using Yavsc.Models;
+
+namespace Yavsc.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20180621110734_projects")]
+ partial class projects
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.0-rc1-16348");
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b =>
+ {
+ b.Property("Id");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Name")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .HasAnnotation("Relational:Name", "RoleNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("RoleId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider");
+
+ b.Property("ProviderKey");
+
+ b.Property("ProviderDisplayName");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("RoleId");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Access.Ban", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Access.BlackListed", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("OwnerId")
+ .IsRequired();
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Access.CircleAuthorizationToBlogPost", b =>
+ {
+ b.Property("CircleId");
+
+ b.Property("BlogPostId");
+
+ b.HasKey("CircleId", "BlogPostId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.AccountBalance", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("ContactCredits");
+
+ b.Property("Credits");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.ApplicationUser", b =>
+ {
+ b.Property("Id");
+
+ b.Property("AccessFailedCount");
+
+ b.Property("AllowMonthlyEmail");
+
+ b.Property("Avatar")
+ .HasAnnotation("MaxLength", 512)
+ .HasAnnotation("Relational:DefaultValue", "/images/Users/icon_user.png")
+ .HasAnnotation("Relational:DefaultValueType", "System.String");
+
+ b.Property("BankInfoId");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("DedicatedGoogleCalendar")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("DiskQuota")
+ .HasAnnotation("Relational:DefaultValue", "524288000")
+ .HasAnnotation("Relational:DefaultValueType", "System.Int64");
+
+ b.Property("DiskUsage");
+
+ b.Property("Email")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("EmailConfirmed");
+
+ b.Property("FullName")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("LockoutEnabled");
+
+ b.Property("LockoutEnd");
+
+ b.Property("MaxFileSize");
+
+ b.Property("NormalizedEmail")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedUserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("PasswordHash");
+
+ b.Property("PhoneNumber");
+
+ b.Property("PhoneNumberConfirmed");
+
+ b.Property("PostalAddressId");
+
+ b.Property("SecurityStamp");
+
+ b.Property("TwoFactorEnabled");
+
+ b.Property("UserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasAnnotation("Relational:Name", "EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .HasAnnotation("Relational:Name", "UserNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUsers");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Auth.Client", b =>
+ {
+ b.Property("Id");
+
+ b.Property("Active");
+
+ b.Property("DisplayName");
+
+ b.Property("LogoutRedirectUri")
+ .HasAnnotation("MaxLength", 100);
+
+ b.Property("RedirectUri");
+
+ b.Property("RefreshTokenLifeTime");
+
+ b.Property("Secret");
+
+ b.Property("Type");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b =>
+ {
+ b.Property("Id");
+
+ b.Property("ClientId")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 50);
+
+ b.Property("ExpiresUtc");
+
+ b.Property("IssuedUtc");
+
+ b.Property("ProtectedTicket")
+ .IsRequired();
+
+ b.Property("Subject")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 50);
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.BalanceImpact", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BalanceId")
+ .IsRequired();
+
+ b.Property("ExecDate");
+
+ b.Property("Impact");
+
+ b.Property("Reason")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Bank.BankIdentity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AccountNumber")
+ .HasAnnotation("MaxLength", 15);
+
+ b.Property("BIC")
+ .HasAnnotation("MaxLength", 15);
+
+ b.Property("BankCode")
+ .HasAnnotation("MaxLength", 5);
+
+ b.Property("BankedKey");
+
+ b.Property("IBAN")
+ .HasAnnotation("MaxLength", 33);
+
+ b.Property("WicketCode")
+ .HasAnnotation("MaxLength", 5);
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Count");
+
+ b.Property("Currency");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("EstimateId");
+
+ b.Property("EstimateTemplateId");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("UnitaryCost");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AttachedFilesString");
+
+ b.Property("AttachedGraphicsString");
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("ClientValidationDate");
+
+ b.Property("CommandId");
+
+ b.Property("CommandType")
+ .IsRequired();
+
+ b.Property("Description");
+
+ b.Property("OwnerId");
+
+ b.Property("ProviderValidationDate");
+
+ b.Property("Title");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.Property("OwnerId")
+ .IsRequired();
+
+ b.Property("Title");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.ExceptionSIREN", b =>
+ {
+ b.Property("SIREN");
+
+ b.HasKey("SIREN");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AuthorId");
+
+ b.Property("Content")
+ .HasAnnotation("MaxLength", 56224);
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("Photo")
+ .HasAnnotation("MaxLength", 1024);
+
+ b.Property("Rate");
+
+ b.Property("Title")
+ .HasAnnotation("MaxLength", 1024);
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.Property("Visible");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Blog.BlogTag", b =>
+ {
+ b.Property("PostId");
+
+ b.Property("TagId");
+
+ b.HasKey("PostId", "TagId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Blog.Comment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AuthorId")
+ .IsRequired();
+
+ b.Property("Content");
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("ParentId");
+
+ b.Property("PostId");
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.Property("Visible");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Calendar.Period", b =>
+ {
+ b.Property("Start");
+
+ b.Property("End");
+
+ b.HasKey("Start", "End");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b =>
+ {
+ b.Property("OwnerId");
+
+ b.HasKey("OwnerId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Calendar.ScheduledEvent", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("PeriodEnd");
+
+ b.Property("PeriodStart");
+
+ b.Property("Reccurence");
+
+ b.Property("ScheduleOwnerId");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Chat.ChatConnection", b =>
+ {
+ b.Property("ConnectionId");
+
+ b.Property("ApplicationUserId")
+ .IsRequired();
+
+ b.Property("Connected");
+
+ b.Property("UserAgent");
+
+ b.HasKey("ConnectionId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b =>
+ {
+ b.Property("Name")
+ .HasAnnotation("MaxLength", 255);
+
+ b.Property("ApplicationUserId");
+
+ b.Property("Topic")
+ .HasAnnotation("MaxLength", 1023);
+
+ b.HasKey("Name");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Chat.ChatRoomPresence", b =>
+ {
+ b.Property("ChannelName");
+
+ b.Property("ChatUserConnectionId");
+
+ b.Property("Level");
+
+ b.HasKey("ChannelName", "ChatUserConnectionId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Cratie.Option", b =>
+ {
+ b.Property("Code");
+
+ b.Property("CodeScrutin");
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("Description");
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.HasKey("Code", "CodeScrutin");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Drawing.Color", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Blue");
+
+ b.Property("Green");
+
+ b.Property("Name");
+
+ b.Property("Red");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Forms.Form", b =>
+ {
+ b.Property("Id");
+
+ b.Property("Summary");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("ActionDistance");
+
+ b.Property("CarePrice");
+
+ b.Property("FlatFeeDiscount");
+
+ b.Property("HalfBalayagePrice");
+
+ b.Property("HalfBrushingPrice");
+
+ b.Property("HalfColorPrice");
+
+ b.Property("HalfDefrisPrice");
+
+ b.Property("HalfFoldingPrice");
+
+ b.Property("HalfMechPrice");
+
+ b.Property("HalfMultiColorPrice");
+
+ b.Property("HalfPermanentPrice");
+
+ b.Property("KidCutPrice");
+
+ b.Property("LongBalayagePrice");
+
+ b.Property("LongBrushingPrice");
+
+ b.Property("LongColorPrice");
+
+ b.Property("LongDefrisPrice");
+
+ b.Property("LongFoldingPrice");
+
+ b.Property("LongMechPrice");
+
+ b.Property("LongMultiColorPrice");
+
+ b.Property("LongPermanentPrice");
+
+ b.Property("ManBrushPrice");
+
+ b.Property("ManCutPrice");
+
+ b.Property("ScheduleOwnerId");
+
+ b.Property("ShampooPrice");
+
+ b.Property("ShortBalayagePrice");
+
+ b.Property("ShortBrushingPrice");
+
+ b.Property("ShortColorPrice");
+
+ b.Property("ShortDefrisPrice");
+
+ b.Property("ShortFoldingPrice");
+
+ b.Property("ShortMechPrice");
+
+ b.Property("ShortMultiColorPrice");
+
+ b.Property("ShortPermanentPrice");
+
+ b.Property("WomenHalfCutPrice");
+
+ b.Property("WomenLongCutPrice");
+
+ b.Property("WomenShortCutPrice");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairCutQuery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ActivityCode")
+ .IsRequired();
+
+ b.Property("AdditionalInfo")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("Consent");
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("EventDate");
+
+ b.Property("LocationId");
+
+ b.Property("PaymentId");
+
+ b.Property("PerformerId")
+ .IsRequired();
+
+ b.Property("PrestationId");
+
+ b.Property("Previsional");
+
+ b.Property("Rejected");
+
+ b.Property("RejectedAt");
+
+ b.Property("SelectedProfileUserId");
+
+ b.Property("Status");
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.Property("ValidationDate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ActivityCode")
+ .IsRequired();
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("Consent");
+
+ b.Property("DateCreated");
+
+ b.Property("DateModified");
+
+ b.Property("EventDate");
+
+ b.Property("LocationId");
+
+ b.Property("PaymentId");
+
+ b.Property("PerformerId")
+ .IsRequired();
+
+ b.Property("Previsional");
+
+ b.Property("Rejected");
+
+ b.Property("RejectedAt");
+
+ b.Property("Status");
+
+ b.Property("UserCreated");
+
+ b.Property("UserModified");
+
+ b.Property("ValidationDate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Cares");
+
+ b.Property("Cut");
+
+ b.Property("Dressing");
+
+ b.Property("Gender");
+
+ b.Property("Length");
+
+ b.Property("Shampoo");
+
+ b.Property("Tech");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("PrestationId");
+
+ b.Property("QueryId");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Brand");
+
+ b.Property("ColorId");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Haircut.HairTaintInstance", b =>
+ {
+ b.Property