diff --git a/API/API/API.csproj b/API/API/API.csproj
index 73c8c00..41f149d 100644
--- a/API/API/API.csproj
+++ b/API/API/API.csproj
@@ -101,9 +101,22 @@
+
+
+
+
+
+
+
+
Global.asax
+
+
+ 201903161558469_Init.cs
+
+
@@ -123,6 +136,11 @@
+
+
+ 201903161558469_Init.cs
+
+
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
diff --git a/API/API/Database/DataContext.cs b/API/API/Database/DataContext.cs
new file mode 100644
index 0000000..1543164
--- /dev/null
+++ b/API/API/Database/DataContext.cs
@@ -0,0 +1,11 @@
+using API.Database.Model;
+using System.Data.Entity;
+
+namespace API.Database {
+ public class DataContext : DbContext {
+ public DbSet Songs { get; set; }
+ public DbSet Changes { get; set; }
+ public DbSet Files { get; set; }
+ public DbSet Users { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/Access.cs b/API/API/Database/Model/Access.cs
new file mode 100644
index 0000000..6cf873f
--- /dev/null
+++ b/API/API/Database/Model/Access.cs
@@ -0,0 +1,8 @@
+namespace API.Database.Model {
+ public enum Access {
+ Inactive,
+ Reader,
+ Writer,
+ Admin
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/Change.cs b/API/API/Database/Model/Change.cs
new file mode 100644
index 0000000..2c5c5bd
--- /dev/null
+++ b/API/API/Database/Model/Change.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace API.Database.Model {
+ public class Change {
+ public int ID { get; set; }
+ public int UserId { get; set; }
+ public User User { get; set; }
+ public DateTime Date { get; set; }
+ public string Comment { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/File.cs b/API/API/Database/Model/File.cs
new file mode 100644
index 0000000..b6f2c83
--- /dev/null
+++ b/API/API/Database/Model/File.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace API.Database.Model {
+ public class File {
+ public int ID { get; set; }
+ public Guid ReferenceFile { get; set; }
+ public string Name { get; set; }
+ public FileType FileType { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/FileType.cs b/API/API/Database/Model/FileType.cs
new file mode 100644
index 0000000..5843865
--- /dev/null
+++ b/API/API/Database/Model/FileType.cs
@@ -0,0 +1,8 @@
+namespace API.Database.Model {
+ public enum FileType {
+ None,
+ Sheet,
+ Chords,
+ MuseScore
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/Song.cs b/API/API/Database/Model/Song.cs
new file mode 100644
index 0000000..a733681
--- /dev/null
+++ b/API/API/Database/Model/Song.cs
@@ -0,0 +1,17 @@
+using System.Collections.Generic;
+
+namespace API.Database.Model {
+ public class Song {
+ public int ID { get; set; }
+ public string Name { get; set; }
+ public string Text { get; set; }
+ public string Comments { get; set; }
+ public string Key { get; set; }
+ public int? Tempo { get; set; }
+ public SongType SongType { get; set; }
+
+ public bool Final { get; set; }
+
+ public virtual ICollection Changes { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/SongType.cs b/API/API/Database/Model/SongType.cs
new file mode 100644
index 0000000..551f0ea
--- /dev/null
+++ b/API/API/Database/Model/SongType.cs
@@ -0,0 +1,7 @@
+namespace API.Database.Model {
+ public enum SongType {
+ Praise,
+ Worship
+ }
+
+}
\ No newline at end of file
diff --git a/API/API/Database/Model/User.cs b/API/API/Database/Model/User.cs
new file mode 100644
index 0000000..b9371a1
--- /dev/null
+++ b/API/API/Database/Model/User.cs
@@ -0,0 +1,11 @@
+namespace API.Database.Model {
+ public class User {
+ public int ID { get; set; }
+ public string Account { get; set; }
+ public string Pass { get; set; }
+ public string Name { get; set; }
+ public string Surname { get; set; }
+ public string Email { get; set; }
+ public Access Access { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/API/API/Migrations/201903161558469_Init.Designer.cs b/API/API/Migrations/201903161558469_Init.Designer.cs
new file mode 100644
index 0000000..6a25edd
--- /dev/null
+++ b/API/API/Migrations/201903161558469_Init.Designer.cs
@@ -0,0 +1,29 @@
+//
+namespace API.Migrations
+{
+ using System.CodeDom.Compiler;
+ using System.Data.Entity.Migrations;
+ using System.Data.Entity.Migrations.Infrastructure;
+ using System.Resources;
+
+ [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
+ public sealed partial class Init : IMigrationMetadata
+ {
+ private readonly ResourceManager Resources = new ResourceManager(typeof(Init));
+
+ string IMigrationMetadata.Id
+ {
+ get { return "201903161558469_Init"; }
+ }
+
+ string IMigrationMetadata.Source
+ {
+ get { return null; }
+ }
+
+ string IMigrationMetadata.Target
+ {
+ get { return Resources.GetString("Target"); }
+ }
+ }
+}
diff --git a/API/API/Migrations/201903161558469_Init.cs b/API/API/Migrations/201903161558469_Init.cs
new file mode 100644
index 0000000..2d5440b
--- /dev/null
+++ b/API/API/Migrations/201903161558469_Init.cs
@@ -0,0 +1,71 @@
+namespace API.Migrations {
+ using System.Data.Entity.Migrations;
+
+ public partial class Init : DbMigration {
+ public override void Up() {
+ CreateTable(
+ "dbo.Changes",
+ c => new {
+ ID = c.Int(nullable: false, identity: true),
+ UserId = c.Int(nullable: false),
+ Date = c.DateTime(nullable: false),
+ Comment = c.String(),
+ Song_ID = c.Int(),
+ })
+ .PrimaryKey(t => t.ID)
+ .ForeignKey("dbo.Users", t => t.UserId, cascadeDelete: true)
+ .ForeignKey("dbo.Songs", t => t.Song_ID)
+ .Index(t => t.UserId)
+ .Index(t => t.Song_ID);
+
+ CreateTable(
+ "dbo.Users",
+ c => new {
+ ID = c.Int(nullable: false, identity: true),
+ Account = c.String(),
+ Pass = c.String(),
+ Name = c.String(),
+ Surname = c.String(),
+ Email = c.String(),
+ Access = c.Int(nullable: false),
+ })
+ .PrimaryKey(t => t.ID);
+
+ CreateTable(
+ "dbo.Files",
+ c => new {
+ ID = c.Int(nullable: false, identity: true),
+ ReferenceFile = c.Guid(nullable: false),
+ Name = c.String(),
+ FileType = c.Int(nullable: false),
+ })
+ .PrimaryKey(t => t.ID);
+
+ CreateTable(
+ "dbo.Songs",
+ c => new {
+ ID = c.Int(nullable: false, identity: true),
+ Name = c.String(),
+ Text = c.String(),
+ Comments = c.String(),
+ Key = c.String(),
+ Tempo = c.Int(),
+ SongType = c.Int(nullable: false),
+ Final = c.Boolean(nullable: false),
+ })
+ .PrimaryKey(t => t.ID);
+
+ }
+
+ public override void Down() {
+ DropForeignKey("dbo.Changes", "Song_ID", "dbo.Songs");
+ DropForeignKey("dbo.Changes", "UserId", "dbo.Users");
+ DropIndex("dbo.Changes", new[] { "Song_ID" });
+ DropIndex("dbo.Changes", new[] { "UserId" });
+ DropTable("dbo.Songs");
+ DropTable("dbo.Files");
+ DropTable("dbo.Users");
+ DropTable("dbo.Changes");
+ }
+ }
+}
diff --git a/API/API/Migrations/201903161558469_Init.resx b/API/API/Migrations/201903161558469_Init.resx
new file mode 100644
index 0000000..de31baa
--- /dev/null
+++ b/API/API/Migrations/201903161558469_Init.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 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
+
+
+ dbo
+
+
\ No newline at end of file
diff --git a/API/API/Migrations/Configuration.cs b/API/API/Migrations/Configuration.cs
new file mode 100644
index 0000000..6e5dc5f
--- /dev/null
+++ b/API/API/Migrations/Configuration.cs
@@ -0,0 +1,9 @@
+namespace API.Migrations {
+ using System.Data.Entity.Migrations;
+
+ internal sealed class Configuration : DbMigrationsConfiguration {
+ public Configuration() {
+ AutomaticMigrationsEnabled = false;
+ }
+ }
+}