From 3120212b8491ba51475fcec0d5f21751970cefa1 Mon Sep 17 00:00:00 2001 From: MasulukeI Date: Tue, 22 Jan 2019 14:26:54 +0200 Subject: [PATCH 1/3] Initial Commit --- data/createdatabase.sql | 76 +++++++++---------- data/createuser.sql | 12 +-- .../20190122085414_InitialMigrate.Designer.cs | 57 ++++++++++++++ .../20190122085414_InitialMigrate.cs | 40 ++++++++++ .../TimesheetContextModelSnapshot.cs | 55 ++++++++++++++ .../MyTimesheet/MyTimesheet.csproj | 2 + src/MyTimesheet/MyTimesheet/Startup.cs | 2 +- 7 files changed, 199 insertions(+), 45 deletions(-) create mode 100644 src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.Designer.cs create mode 100644 src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.cs create mode 100644 src/MyTimesheet/MyTimesheet/Migrations/TimesheetContextModelSnapshot.cs diff --git a/data/createdatabase.sql b/data/createdatabase.sql index 41b5a17..6fbf6ce 100644 --- a/data/createdatabase.sql +++ b/data/createdatabase.sql @@ -1,115 +1,115 @@ USE [master] GO -/****** Object: Database [sql101.firstname.lastname] Script Date: 1/21/2019 9:11:50 PM ******/ -CREATE DATABASE [sql101.firstname.lastname] +/****** Object: Database [sql101.Itumeleng.Masuluke] Script Date: 1/21/2019 9:11:50 PM ******/ +CREATE DATABASE [sql101.Itumeleng.Masuluke] CONTAINMENT = NONE ON PRIMARY -( NAME = N'sql101.firstname.lastname', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.firstname.lastname.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) +( NAME = N'sql101.Itumeleng.Masuluke', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.Itumeleng.Masuluke.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON -( NAME = N'sql101.firstname.lastname_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.firstname.lastname_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) +( NAME = N'sql101.Itumeleng.Masuluke_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.Itumeleng.Masuluke_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) GO -ALTER DATABASE [sql101.firstname.lastname] SET COMPATIBILITY_LEVEL = 130 +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET COMPATIBILITY_LEVEL = 130 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin -EXEC [sql101.firstname.lastname].[dbo].[sp_fulltext_database] @action = 'enable' +EXEC [sql101.Itumeleng.Masuluke].[dbo].[sp_fulltext_database] @action = 'enable' end GO -ALTER DATABASE [sql101.firstname.lastname] SET ANSI_NULL_DEFAULT OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ANSI_NULL_DEFAULT OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET ANSI_NULLS OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ANSI_NULLS OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET ANSI_PADDING OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ANSI_PADDING OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET ANSI_WARNINGS OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ANSI_WARNINGS OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET ARITHABORT OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ARITHABORT OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET AUTO_CLOSE OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET AUTO_CLOSE OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET AUTO_SHRINK OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET AUTO_SHRINK OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET AUTO_UPDATE_STATISTICS ON +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET AUTO_UPDATE_STATISTICS ON GO -ALTER DATABASE [sql101.firstname.lastname] SET CURSOR_CLOSE_ON_COMMIT OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET CURSOR_CLOSE_ON_COMMIT OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET CURSOR_DEFAULT GLOBAL +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET CURSOR_DEFAULT GLOBAL GO -ALTER DATABASE [sql101.firstname.lastname] SET CONCAT_NULL_YIELDS_NULL OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET CONCAT_NULL_YIELDS_NULL OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET NUMERIC_ROUNDABORT OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET NUMERIC_ROUNDABORT OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET QUOTED_IDENTIFIER OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET QUOTED_IDENTIFIER OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET RECURSIVE_TRIGGERS OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET RECURSIVE_TRIGGERS OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET DISABLE_BROKER +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET DISABLE_BROKER GO -ALTER DATABASE [sql101.firstname.lastname] SET AUTO_UPDATE_STATISTICS_ASYNC OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET DATE_CORRELATION_OPTIMIZATION OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET DATE_CORRELATION_OPTIMIZATION OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET TRUSTWORTHY OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET TRUSTWORTHY OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET ALLOW_SNAPSHOT_ISOLATION OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET ALLOW_SNAPSHOT_ISOLATION OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET PARAMETERIZATION SIMPLE +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET PARAMETERIZATION SIMPLE GO -ALTER DATABASE [sql101.firstname.lastname] SET READ_COMMITTED_SNAPSHOT OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET READ_COMMITTED_SNAPSHOT OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET HONOR_BROKER_PRIORITY OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET HONOR_BROKER_PRIORITY OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET RECOVERY FULL +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET RECOVERY FULL GO -ALTER DATABASE [sql101.firstname.lastname] SET MULTI_USER +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET MULTI_USER GO -ALTER DATABASE [sql101.firstname.lastname] SET PAGE_VERIFY CHECKSUM +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET PAGE_VERIFY CHECKSUM GO -ALTER DATABASE [sql101.firstname.lastname] SET DB_CHAINING OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET DB_CHAINING OFF GO -ALTER DATABASE [sql101.firstname.lastname] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) GO -ALTER DATABASE [sql101.firstname.lastname] SET TARGET_RECOVERY_TIME = 60 SECONDS +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET TARGET_RECOVERY_TIME = 60 SECONDS GO -ALTER DATABASE [sql101.firstname.lastname] SET DELAYED_DURABILITY = DISABLED +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET DELAYED_DURABILITY = DISABLED GO -ALTER DATABASE [sql101.firstname.lastname] SET QUERY_STORE = OFF +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET QUERY_STORE = OFF GO -USE [sql101.firstname.lastname] +USE [sql101.Itumeleng.Masuluke] GO ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF; @@ -124,7 +124,7 @@ GO ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = OFF; GO -ALTER DATABASE [sql101.firstname.lastname] SET READ_WRITE +ALTER DATABASE [sql101.Itumeleng.Masuluke] SET READ_WRITE GO diff --git a/data/createuser.sql b/data/createuser.sql index bcf3038..bcdbede 100644 --- a/data/createuser.sql +++ b/data/createuser.sql @@ -1,18 +1,18 @@ USE [master] GO -CREATE LOGIN [firstnamelastname] WITH PASSWORD=N'rabbit123!@#' MUST_CHANGE, DEFAULT_DATABASE=[sql101.firstname.lastname], CHECK_EXPIRATION=ON, CHECK_POLICY=ON +CREATE LOGIN [ItumelengMasuluke] WITH PASSWORD=N'rabbit123!@#' MUST_CHANGE, DEFAULT_DATABASE=[sql101.Itumeleng.Masuluke], CHECK_EXPIRATION=ON, CHECK_POLICY=ON GO -use [sql101.firstname.lastname] +use [sql101.Itumeleng.Masuluke] GO use [master] GO -USE [sql101.firstname.lastname] +USE [sql101.Itumeleng.Masuluke] GO -CREATE USER [firstnamelastname] FOR LOGIN [firstnamelastname] +CREATE USER [ItumelengMasuluke] FOR LOGIN [ItumelengMasuluke] GO -USE [sql101.firstname.lastname] +USE [sql101.Itumeleng.Masuluke] GO -ALTER ROLE [db_owner] ADD MEMBER [firstnamelastname] +ALTER ROLE [db_owner] ADD MEMBER [ItumelengMasuluke] GO diff --git a/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.Designer.cs b/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.Designer.cs new file mode 100644 index 0000000..c1e1cce --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.Designer.cs @@ -0,0 +1,57 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyTimesheet.Models; + +namespace MyTimesheet.Migrations +{ + [DbContext(typeof(TimesheetContext))] + [Migration("20190122085414_InitialMigrate")] + partial class InitialMigrate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.1-servicing-10028") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MyTimesheet.Models.TimesheetEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Billable"); + + b.Property("Client"); + + b.Property("Date"); + + b.Property("Description"); + + b.Property("Duration"); + + b.Property("Name"); + + b.Property("Project"); + + b.Property("Surname"); + + b.Property("TimeEnd"); + + b.Property("TimeStart"); + + b.HasKey("Id"); + + b.ToTable("Entries"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.cs b/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.cs new file mode 100644 index 0000000..16c5e5b --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Migrations/20190122085414_InitialMigrate.cs @@ -0,0 +1,40 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace MyTimesheet.Migrations +{ + public partial class InitialMigrate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Entries", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Surname = table.Column(nullable: true), + Client = table.Column(nullable: true), + Project = table.Column(nullable: true), + Date = table.Column(nullable: false), + TimeStart = table.Column(nullable: false), + TimeEnd = table.Column(nullable: false), + Duration = table.Column(nullable: false), + Description = table.Column(nullable: true), + Billable = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Entries", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Entries"); + } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Migrations/TimesheetContextModelSnapshot.cs b/src/MyTimesheet/MyTimesheet/Migrations/TimesheetContextModelSnapshot.cs new file mode 100644 index 0000000..6404921 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Migrations/TimesheetContextModelSnapshot.cs @@ -0,0 +1,55 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyTimesheet.Models; + +namespace MyTimesheet.Migrations +{ + [DbContext(typeof(TimesheetContext))] + partial class TimesheetContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.1-servicing-10028") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MyTimesheet.Models.TimesheetEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Billable"); + + b.Property("Client"); + + b.Property("Date"); + + b.Property("Description"); + + b.Property("Duration"); + + b.Property("Name"); + + b.Property("Project"); + + b.Property("Surname"); + + b.Property("TimeEnd"); + + b.Property("TimeStart"); + + b.HasKey("Id"); + + b.ToTable("Entries"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/MyTimesheet/MyTimesheet/MyTimesheet.csproj b/src/MyTimesheet/MyTimesheet/MyTimesheet.csproj index 54dfccf..e497f67 100644 --- a/src/MyTimesheet/MyTimesheet/MyTimesheet.csproj +++ b/src/MyTimesheet/MyTimesheet/MyTimesheet.csproj @@ -6,6 +6,8 @@ + + diff --git a/src/MyTimesheet/MyTimesheet/Startup.cs b/src/MyTimesheet/MyTimesheet/Startup.cs index e81072d..c5dba5e 100644 --- a/src/MyTimesheet/MyTimesheet/Startup.cs +++ b/src/MyTimesheet/MyTimesheet/Startup.cs @@ -35,7 +35,7 @@ public void ConfigureServices(IServiceCollection services) c.SwaggerDoc("v1", new Info { Title = "My Timesheet API", Version = "v1" }); }); - var connection = @"Server=sql101labs1793591179000.westeurope.cloudapp.azure.com;Database=sql101.#NAME.SURNAME;User Id=myUsername;Password=myPassword;"; + var connection = @"Server=sql101labs1793591179000.westeurope.cloudapp.azure.com;Database=sql101.Itumeleng.Masuluke;User Id=ItumelengMasuluke;Password=Itumeleng9@;"; services.AddDbContext (options => options.UseSqlServer(connection)); } From 2d2c835ce055d302f08f6dfed96df1622eeba66c Mon Sep 17 00:00:00 2001 From: MasulukeI Date: Sat, 26 Jan 2019 11:35:28 +0200 Subject: [PATCH 2/3] Normalised db model --- .../MyTimesheet/CacheSecrets.config.txt | 3 + .../Controllers/TimesheetController.cs | 23 +++++++- .../20190125192121_InitialCreate.Designer.cs | 57 +++++++++++++++++++ .../20190125192121_InitialCreate.cs | 17 ++++++ .../MyTimesheet/Models/CacheSecrets.config | 4 ++ src/MyTimesheet/MyTimesheet/Models/Client.cs | 13 +++++ .../MyTimesheet/Models/Developer.cs | 14 +++++ src/MyTimesheet/MyTimesheet/Models/Project.cs | 14 +++++ src/MyTimesheet/MyTimesheet/Startup.cs | 1 + src/MyTimesheet/MyTimesheet/appsettings.json | 3 +- src/MyTimesheet/MyTimesheet/web.config | 16 ++++++ 11 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 src/MyTimesheet/MyTimesheet/CacheSecrets.config.txt create mode 100644 src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.Designer.cs create mode 100644 src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.cs create mode 100644 src/MyTimesheet/MyTimesheet/Models/CacheSecrets.config create mode 100644 src/MyTimesheet/MyTimesheet/Models/Client.cs create mode 100644 src/MyTimesheet/MyTimesheet/Models/Developer.cs create mode 100644 src/MyTimesheet/MyTimesheet/Models/Project.cs create mode 100644 src/MyTimesheet/MyTimesheet/web.config diff --git a/src/MyTimesheet/MyTimesheet/CacheSecrets.config.txt b/src/MyTimesheet/MyTimesheet/CacheSecrets.config.txt new file mode 100644 index 0000000..34e0937 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/CacheSecrets.config.txt @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/MyTimesheet/MyTimesheet/Controllers/TimesheetController.cs b/src/MyTimesheet/MyTimesheet/Controllers/TimesheetController.cs index b2f5a7c..058a49b 100644 --- a/src/MyTimesheet/MyTimesheet/Controllers/TimesheetController.cs +++ b/src/MyTimesheet/MyTimesheet/Controllers/TimesheetController.cs @@ -1,10 +1,14 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using MyTimesheet.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using System.Configuration; +using StackExchange.Redis; + namespace MyTimesheet.Controllers { @@ -13,9 +17,11 @@ namespace MyTimesheet.Controllers public class TimesheetController : ControllerBase { private readonly TimesheetContext _db; - public TimesheetController(TimesheetContext context) + readonly IConfiguration _config; + public TimesheetController(TimesheetContext context,IConfiguration config) { _db = context; + _config = config; } // GET api/values @@ -34,10 +40,23 @@ public async Task> Get(int id) // POST api/values [HttpPost] - public async Task Post([FromBody] TimesheetEntry value) + public async Task Post([FromBody] TimesheetEntry value) { await _db.Entries.AddAsync(value); await _db.SaveChangesAsync(); + var cacheConnection = _config.GetValue("CacheConnection"); + + var lazyConnection = new Lazy(() => + { + return ConnectionMultiplexer.Connect(cacheConnection); + }); + IDatabase cache = lazyConnection.Value.GetDatabase(); + await cache.StringSetAsync($"{value.Name}+{value.Surname}",value.ToString()); + + var cacheItem = await cache.StringGetAsync($"{value.Name}+{value.Surname}"); + + lazyConnection.Value.Dispose(); + return cacheItem; } // PUT api/values/5 diff --git a/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.Designer.cs b/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.Designer.cs new file mode 100644 index 0000000..2bc6f66 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.Designer.cs @@ -0,0 +1,57 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyTimesheet.Models; + +namespace MyTimesheet.Migrations +{ + [DbContext(typeof(TimesheetContext))] + [Migration("20190125192121_InitialCreate")] + partial class InitialCreate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.1-servicing-10028") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MyTimesheet.Models.TimesheetEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Billable"); + + b.Property("Client"); + + b.Property("Date"); + + b.Property("Description"); + + b.Property("Duration"); + + b.Property("Name"); + + b.Property("Project"); + + b.Property("Surname"); + + b.Property("TimeEnd"); + + b.Property("TimeStart"); + + b.HasKey("Id"); + + b.ToTable("Entries"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.cs b/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.cs new file mode 100644 index 0000000..f6808c6 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Migrations/20190125192121_InitialCreate.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace MyTimesheet.Migrations +{ + public partial class InitialCreate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Models/CacheSecrets.config b/src/MyTimesheet/MyTimesheet/Models/CacheSecrets.config new file mode 100644 index 0000000..816505e --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/CacheSecrets.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/MyTimesheet/MyTimesheet/Models/Client.cs b/src/MyTimesheet/MyTimesheet/Models/Client.cs new file mode 100644 index 0000000..f344c45 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/Client.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class Client + { + public string ClientID { get; set; } + public string ClientName { get; set; } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Models/Developer.cs b/src/MyTimesheet/MyTimesheet/Models/Developer.cs new file mode 100644 index 0000000..bb2652e --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/Developer.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class Developer + { + public int DeveloperID { get; set; } + public string Name { get; set; } + public string Surname { get; set; } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Models/Project.cs b/src/MyTimesheet/MyTimesheet/Models/Project.cs new file mode 100644 index 0000000..6797184 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/Project.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class Project + { + public int ProjectID { get; set; } + public string ProjectName { get; set; } + public int ClientID { get; set; } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Startup.cs b/src/MyTimesheet/MyTimesheet/Startup.cs index c5dba5e..bef52a1 100644 --- a/src/MyTimesheet/MyTimesheet/Startup.cs +++ b/src/MyTimesheet/MyTimesheet/Startup.cs @@ -38,6 +38,7 @@ public void ConfigureServices(IServiceCollection services) var connection = @"Server=sql101labs1793591179000.westeurope.cloudapp.azure.com;Database=sql101.Itumeleng.Masuluke;User Id=ItumelengMasuluke;Password=Itumeleng9@;"; services.AddDbContext (options => options.UseSqlServer(connection)); + services.AddSingleton(Configuration); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/src/MyTimesheet/MyTimesheet/appsettings.json b/src/MyTimesheet/MyTimesheet/appsettings.json index def9159..9dfd8a5 100644 --- a/src/MyTimesheet/MyTimesheet/appsettings.json +++ b/src/MyTimesheet/MyTimesheet/appsettings.json @@ -4,5 +4,6 @@ "Default": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "CacheConnection": "101.redis.cache.windows.net,abortConnect=false,ssl=true,password=85BYRVqUHV6aW7Jz8zIIxRnaYMgbBd2kwo4bpDiz4vw=" } diff --git a/src/MyTimesheet/MyTimesheet/web.config b/src/MyTimesheet/MyTimesheet/web.config new file mode 100644 index 0000000..2ff1546 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/web.config @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file From 3e60326fae21310e5b0abdb06a5ac47740789146 Mon Sep 17 00:00:00 2001 From: MasulukeI Date: Sat, 26 Jan 2019 12:30:46 +0200 Subject: [PATCH 3/3] Created context files --- .../MyTimesheet/Models/ClientContext.cs | 17 +++++++++++++++++ .../MyTimesheet/Models/DeveloperContext.cs | 18 ++++++++++++++++++ .../MyTimesheet/Models/ProjectContext.cs | 18 ++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/MyTimesheet/MyTimesheet/Models/ClientContext.cs create mode 100644 src/MyTimesheet/MyTimesheet/Models/DeveloperContext.cs create mode 100644 src/MyTimesheet/MyTimesheet/Models/ProjectContext.cs diff --git a/src/MyTimesheet/MyTimesheet/Models/ClientContext.cs b/src/MyTimesheet/MyTimesheet/Models/ClientContext.cs new file mode 100644 index 0000000..625f066 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/ClientContext.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class ClientContext: DbContext + { + public ClientContext(DbContextOptions options) + : base(options) + { } + + public DbSet Entries { get; set; } + } +} diff --git a/src/MyTimesheet/MyTimesheet/Models/DeveloperContext.cs b/src/MyTimesheet/MyTimesheet/Models/DeveloperContext.cs new file mode 100644 index 0000000..4a9c801 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/DeveloperContext.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class DeveloperContext : DbContext + { + public DeveloperContext(DbContextOptions options) + : base(options) + { } + + public DbSet Entries { get; set; } + } +} + diff --git a/src/MyTimesheet/MyTimesheet/Models/ProjectContext.cs b/src/MyTimesheet/MyTimesheet/Models/ProjectContext.cs new file mode 100644 index 0000000..a83be46 --- /dev/null +++ b/src/MyTimesheet/MyTimesheet/Models/ProjectContext.cs @@ -0,0 +1,18 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyTimesheet.Models +{ + public class ProjectContext: DbContext + { + public ProjectContext(DbContextOptions options) + : base(options) + { } + + public DbSet Entries { get; set; } + + } +}