diff --git a/api/Migrations/20190223225342_team_event.Designer.cs b/api/Migrations/20190223225342_team_event.Designer.cs
new file mode 100644
index 00000000..036b19a0
--- /dev/null
+++ b/api/Migrations/20190223225342_team_event.Designer.cs
@@ -0,0 +1,267 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using api.Data;
+
+namespace api.Migrations
+{
+ [DbContext(typeof(DataContext))]
+ [Migration("20190223225342_team_event")]
+ partial class team_event
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.2.0-rtm-35687")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("RoleId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider");
+
+ b.Property("ProviderKey");
+
+ b.Property("ProviderDisplayName");
+
+ b.Property("UserId");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("LoginProvider");
+
+ b.Property("Name");
+
+ b.Property("Value");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens");
+ });
+
+ modelBuilder.Entity("api.Models.Photo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("DateAdded");
+
+ b.Property("Description");
+
+ b.Property("IsMain");
+
+ b.Property("Url");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Photos");
+ });
+
+ modelBuilder.Entity("api.Models.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Name")
+ .HasMaxLength(256);
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles");
+ });
+
+ modelBuilder.Entity("api.Models.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AccessFailedCount");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Email")
+ .HasMaxLength(256);
+
+ b.Property("EmailConfirmed");
+
+ b.Property("LockoutEnabled");
+
+ b.Property("LockoutEnd");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256);
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256);
+
+ b.Property("PasswordHash");
+
+ b.Property("PhoneNumber");
+
+ b.Property("PhoneNumberConfirmed");
+
+ b.Property("QRcode");
+
+ b.Property("SecurityStamp");
+
+ b.Property("TwoFactorEnabled");
+
+ b.Property("UserName")
+ .HasMaxLength(256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasName("UserNameIndex");
+
+ b.ToTable("AspNetUsers");
+ });
+
+ modelBuilder.Entity("api.Models.UserRole", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("RoleId");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("api.Models.Value", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name");
+
+ b.HasKey("id");
+
+ b.ToTable("Values");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.HasOne("api.Models.Role")
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("api.Models.Photo", b =>
+ {
+ b.HasOne("api.Models.User", "User")
+ .WithMany("Photos")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("api.Models.UserRole", b =>
+ {
+ b.HasOne("api.Models.Role", "Role")
+ .WithMany("UserRoles")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("api.Models.User", "User")
+ .WithMany("UserRoles")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/api/Migrations/20190223225342_team_event.cs b/api/Migrations/20190223225342_team_event.cs
new file mode 100644
index 00000000..54f653db
--- /dev/null
+++ b/api/Migrations/20190223225342_team_event.cs
@@ -0,0 +1,17 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace api.Migrations
+{
+ public partial class team_event : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+
+ }
+ }
+}
diff --git a/api/Migrations/20190223225824_Teams_and_Events.Designer.cs b/api/Migrations/20190223225824_Teams_and_Events.Designer.cs
new file mode 100644
index 00000000..eadba6da
--- /dev/null
+++ b/api/Migrations/20190223225824_Teams_and_Events.Designer.cs
@@ -0,0 +1,267 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using api.Data;
+
+namespace api.Migrations
+{
+ [DbContext(typeof(DataContext))]
+ [Migration("20190223225824_Teams_and_Events")]
+ partial class Teams_and_Events
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.2.0-rtm-35687")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("RoleId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider");
+
+ b.Property("ProviderKey");
+
+ b.Property("ProviderDisplayName");
+
+ b.Property("UserId");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("LoginProvider");
+
+ b.Property("Name");
+
+ b.Property("Value");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens");
+ });
+
+ modelBuilder.Entity("api.Models.Photo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("DateAdded");
+
+ b.Property("Description");
+
+ b.Property("IsMain");
+
+ b.Property("Url");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Photos");
+ });
+
+ modelBuilder.Entity("api.Models.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Name")
+ .HasMaxLength(256);
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles");
+ });
+
+ modelBuilder.Entity("api.Models.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AccessFailedCount");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Email")
+ .HasMaxLength(256);
+
+ b.Property("EmailConfirmed");
+
+ b.Property("LockoutEnabled");
+
+ b.Property("LockoutEnd");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256);
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256);
+
+ b.Property("PasswordHash");
+
+ b.Property("PhoneNumber");
+
+ b.Property("PhoneNumberConfirmed");
+
+ b.Property("QRcode");
+
+ b.Property("SecurityStamp");
+
+ b.Property("TwoFactorEnabled");
+
+ b.Property("UserName")
+ .HasMaxLength(256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasName("UserNameIndex");
+
+ b.ToTable("AspNetUsers");
+ });
+
+ modelBuilder.Entity("api.Models.UserRole", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("RoleId");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("api.Models.Value", b =>
+ {
+ b.Property("id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name");
+
+ b.HasKey("id");
+
+ b.ToTable("Values");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.HasOne("api.Models.Role")
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.HasOne("api.Models.User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("api.Models.Photo", b =>
+ {
+ b.HasOne("api.Models.User", "User")
+ .WithMany("Photos")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("api.Models.UserRole", b =>
+ {
+ b.HasOne("api.Models.Role", "Role")
+ .WithMany("UserRoles")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("api.Models.User", "User")
+ .WithMany("UserRoles")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/api/Migrations/20190223225824_Teams_and_Events.cs b/api/Migrations/20190223225824_Teams_and_Events.cs
new file mode 100644
index 00000000..dc9066f2
--- /dev/null
+++ b/api/Migrations/20190223225824_Teams_and_Events.cs
@@ -0,0 +1,17 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace api.Migrations
+{
+ public partial class Teams_and_Events : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+
+ }
+ }
+}
diff --git a/api/Models/Event.cs b/api/Models/Event.cs
new file mode 100644
index 00000000..5246e9ca
--- /dev/null
+++ b/api/Models/Event.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace api.Models
+
+{
+ public class Event
+ {
+ public int Id{get;set;} //id
+ public String Nome{get;set;} //nome
+ public String Desc{get;set;} //descrição
+
+ }
+}
\ No newline at end of file
diff --git a/api/Models/EventLoc.cs b/api/Models/EventLoc.cs
new file mode 100644
index 00000000..96ec6a23
--- /dev/null
+++ b/api/Models/EventLoc.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace api.Models
+
+{
+ public class EventLoc
+ {
+ public int Id{get;set;} //id
+ public int EventId{get;set;} //Event ID
+ public float Lat{get;set;} //latitude
+ public float Long{get;set;} //longitude
+ public String Nome{get;set;} //Nome da localização
+ public String Desc{get;set;} //Descrição
+ public Photo Img{get;set;} //Foto da localização
+
+ }
+}
\ No newline at end of file
diff --git a/api/Models/EventLocVisited.cs b/api/Models/EventLocVisited.cs
new file mode 100644
index 00000000..3cb2b045
--- /dev/null
+++ b/api/Models/EventLocVisited.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace api.Models
+
+{
+ public class EventLocVisited
+ {
+ public int Id{get;set;} //id
+ public Team Team{get;set;} //teamQRID
+ public EventLoc Location{get;set;} //location
+ public DateTime timestamp{get;set;} //time
+ }
+}
\ No newline at end of file
diff --git a/api/Models/Team.cs b/api/Models/Team.cs
new file mode 100644
index 00000000..16c5f004
--- /dev/null
+++ b/api/Models/Team.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+
+namespace api.Models
+
+{
+ public class Team
+ {
+ public string QRcode{get;set;} //QR ID code
+ public int EventId{get;set;} //equipa para o evento ID
+ public string Nome{get;set;} //Nome da equipa
+ public User Cap{get;set;} //Capitao da equipa
+ public ICollection Membros {get;set;} //Membros da equipa
+ public int NMembros {get;set;} //Numero de Membros na equipa
+ public int Pontos {get;set;} //Postos da equipa
+ }
+}
\ No newline at end of file
diff --git a/api/Models/User.cs b/api/Models/User.cs
index 5faa326d..8b9f10f0 100755
--- a/api/Models/User.cs
+++ b/api/Models/User.cs
@@ -7,7 +7,7 @@ namespace api.Models
{
public class User: IdentityUser
{
- public string QRcode{get;set;}
+ public string QRcode{get;set;}
public ICollection UserRoles{get;set;}
public ICollection Photos {get;set;}
diff --git a/api/Models/Value.cs b/api/Models/Value.cs
index 362f638b..140b15cc 100755
--- a/api/Models/Value.cs
+++ b/api/Models/Value.cs
@@ -1,4 +1,3 @@
-
namespace api.Models
{
public class Value
diff --git a/api/obj/Debug/netcoreapp2.1/api.assets.cache b/api/obj/Debug/netcoreapp2.1/api.assets.cache
index b5b8a63c..59e77d25 100755
Binary files a/api/obj/Debug/netcoreapp2.1/api.assets.cache and b/api/obj/Debug/netcoreapp2.1/api.assets.cache differ
diff --git a/api/obj/Debug/netcoreapp2.1/project.razor.json b/api/obj/Debug/netcoreapp2.1/project.razor.json
index a833d850..04482418 100755
--- a/api/obj/Debug/netcoreapp2.1/project.razor.json
+++ b/api/obj/Debug/netcoreapp2.1/project.razor.json
@@ -1,5 +1,5 @@
{
- "ProjectFilePath": "/Users/henrique/api/api.csproj",
+ "ProjectFilePath": "c:\\Users\\ZMiguel\\Desktop\\ENEI2019\\api\\api.csproj",
"TargetFramework": "netcoreapp2.1",
"TagHelpers": [],
"Configuration": {