Compare commits

...

8 Commits

Author SHA1 Message Date
uppuv
989c6c41a3 updated latest changes from dev 2023-10-13 15:16:12 -04:00
uppuv
d0023114a3 updated doculink changes 2023-09-26 12:40:55 -04:00
uppuv
465bf4b081 Merge branch 'dev' into Database-Integration 2023-09-13 16:52:43 -04:00
uppuv
e04bccfffd Merged new dev changes 2023-09-13 13:16:42 -04:00
uppuv
0544c7397d 314: updated document multi language output format 2023-09-11 13:34:50 -04:00
uppuv
9c536a1c52 Modified Documents api for InMemory Logic 2023-09-11 13:34:50 -04:00
uppuv
48be1a74c9 Merge branch 'DocumentsAPI' into Database-Integration 2023-08-31 19:02:47 -04:00
uppuv
eb07c31ff6 Database integration 2023-08-18 17:14:41 -04:00
57 changed files with 1985 additions and 46 deletions

View File

@ -11,7 +11,12 @@
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
</ItemGroup> </ItemGroup>

View File

@ -1,13 +1,19 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace DamageAssesment.Api.Answers.Db namespace DamageAssesment.Api.Answers.Db
{ {
public class AnswerDbContext:DbContext public class AnswerDbContext:DbContext
{ {
private IConfiguration _Configuration { get; set; }
public AnswerDbContext(DbContextOptions options):base(options) public AnswerDbContext(DbContextOptions options,IConfiguration configuration):base(options)
{ {
_Configuration= configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("AnswerConnection"));
} }
public DbSet<Db.Answer> Answers { get; set; } public DbSet<Db.Answer> Answers { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)

View File

@ -0,0 +1,58 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Answers.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Answers.Migrations
{
[DbContext(typeof(AnswerDbContext))]
[Migration("20230816214724_InitialCreate")]
partial class InitialCreate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Answers.Db.Answer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("AnswerText")
.IsRequired()
.HasMaxLength(250)
.HasColumnType("nvarchar(250)");
b.Property<string>("Comment")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionId")
.HasColumnType("int");
b.Property<int?>("SurveyResponseId")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Answers");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,37 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Answers.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Answers",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionId = table.Column<int>(type: "int", nullable: false),
AnswerText = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
Comment = table.Column<string>(type: "nvarchar(max)", nullable: false),
SurveyResponseId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Answers", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Answers");
}
}
}

View File

@ -0,0 +1,55 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Answers.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Answers.Migrations
{
[DbContext(typeof(AnswerDbContext))]
partial class AnswerDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Answers.Db.Answer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("AnswerText")
.IsRequired()
.HasMaxLength(250)
.HasColumnType("nvarchar(250)");
b.Property<string>("Comment")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionId")
.HasColumnType("int");
b.Property<int?>("SurveyResponseId")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Answers");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -23,7 +23,7 @@ builder.Services.AddScoped<IAnswersProvider, AnswersProvider>();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
builder.Services.AddDbContext<AnswerDbContext>(option => builder.Services.AddDbContext<AnswerDbContext>(option =>
{ {
option.UseInMemoryDatabase("Answers"); option.UseSqlServer("AnswerConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -8,5 +8,8 @@
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
}, },
"AllowedHosts": "*" "AllowedHosts": "*",
"ConnectionStrings": {
"AnswerConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
}
} }

View File

@ -12,8 +12,19 @@
<PackageReference Include="Azure.Storage.Blobs" Version="12.16.0" /> <PackageReference Include="Azure.Storage.Blobs" Version="12.16.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" /> <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
</ItemGroup> </ItemGroup>

View File

@ -1,11 +1,19 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace DamageAssesment.Api.Attachments.Db namespace DamageAssesment.Api.Attachments.Db
{ {
public class AttachmentsDbContext:DbContext public class AttachmentsDbContext:DbContext
{ {
public AttachmentsDbContext(DbContextOptions options) : base(options) private IConfiguration _Configuration { get; set; }
public AttachmentsDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{ {
_Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("AttachmentConnection"));
} }
public DbSet<Db.Attachment> Attachments { get; set; } public DbSet<Db.Attachment> Attachments { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)

View File

@ -0,0 +1,60 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Attachments.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Attachments.Migrations
{
[DbContext(typeof(AttachmentsDbContext))]
[Migration("20230817212256_InitialAttachment")]
partial class InitialAttachment
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Attachments.Db.Attachment", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int?>("AnswerId")
.HasColumnType("int");
b.Property<string>("FileName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("IsDeleted")
.HasColumnType("bit");
b.Property<int>("ResponseId")
.HasColumnType("int");
b.Property<string>("URI")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Attachments");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Attachments.Migrations
{
/// <inheritdoc />
public partial class InitialAttachment : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Attachments",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
URI = table.Column<string>(type: "nvarchar(max)", nullable: false),
AnswerId = table.Column<int>(type: "int", nullable: true),
ResponseId = table.Column<int>(type: "int", nullable: false),
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
FileName = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Attachments", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Attachments");
}
}
}

View File

@ -0,0 +1,57 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Attachments.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Attachments.Migrations
{
[DbContext(typeof(AttachmentsDbContext))]
partial class AttachmentsDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Attachments.Db.Attachment", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int?>("AnswerId")
.HasColumnType("int");
b.Property<string>("FileName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("IsDeleted")
.HasColumnType("bit");
b.Property<int>("ResponseId")
.HasColumnType("int");
b.Property<string>("URI")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Attachments");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -27,7 +27,7 @@ builder.Services.AddScoped<IAzureBlobService,AzureBlobService>();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
builder.Services.AddDbContext<AttachmentsDbContext>(option => builder.Services.AddDbContext<AttachmentsDbContext>(option =>
{ {
option.UseInMemoryDatabase("Attachments"); option.UseSqlServer("AttachmentConnection");
}); });
builder.Services.Configure<FormOptions>(o => builder.Services.Configure<FormOptions>(o =>
{ {

View File

@ -12,5 +12,8 @@
"Fileupload": { "Fileupload": {
"folderpath": "DMS_Attachments/Active", "folderpath": "DMS_Attachments/Active",
"Deletepath": "DMS_Attachments/Deleted" "Deletepath": "DMS_Attachments/Deleted"
},
"ConnectionStrings": {
"AttachmentConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
} }
} }

View File

@ -7,8 +7,15 @@ namespace DamageAssesment.Api.DocuLinks.Db
{ {
public class DoculinkDbContext : DbContext public class DoculinkDbContext : DbContext
{ {
public DoculinkDbContext(DbContextOptions options) : base(options) private IConfiguration _Configuration { get; set; }
public DoculinkDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{ {
_Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("DoculinConnection"));
} }
public DbSet<Db.Doculink> Documents { get; set; } public DbSet<Db.Doculink> Documents { get; set; }
public DbSet<Db.LinkType> LinkTypes { get; set; } public DbSet<Db.LinkType> LinkTypes { get; set; }

View File

@ -0,0 +1,162 @@
// <auto-generated />
using System;
using DamageAssesment.Api.DocuLinks.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.DocuLinks.Migrations
{
[DbContext(typeof(DoculinkDbContext))]
[Migration("20230926163717_doculinkUpdate")]
partial class doculinkUpdate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Doculink", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<bool>("IsDeleted")
.HasColumnType("bit");
b.Property<DateTime>("dateCreated")
.HasColumnType("datetime2");
b.Property<DateTime>("dateUpdated")
.HasColumnType("datetime2");
b.Property<int>("linkTypeId")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Documents");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DoculinkAttachments", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<int>("DocumentId")
.HasColumnType("int");
b.Property<bool>("IsAttachments")
.HasColumnType("bit");
b.Property<string>("Path")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("docName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("DoclinksAttachments");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DoculinkTranslation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("DocumentId")
.HasColumnType("int");
b.Property<string>("Language")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("description")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("title")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("DocumentsTranslations");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinkType", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.HasKey("Id");
b.ToTable("LinkTypes");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinksTranslation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Language")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("LinkTypeId")
.HasColumnType("int");
b.Property<string>("TypeText")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("LinksTranslations");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,144 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.DocuLinks.Migrations
{
/// <inheritdoc />
public partial class doculinkUpdate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IsAttachment",
table: "LinkTypes");
migrationBuilder.DropColumn(
name: "TypeText",
table: "LinkTypes");
migrationBuilder.DropColumn(
name: "Path",
table: "Documents");
migrationBuilder.DropColumn(
name: "docName",
table: "Documents");
migrationBuilder.DropColumn(
name: "url",
table: "Documents");
migrationBuilder.AddColumn<int>(
name: "CustomOrder",
table: "LinkTypes",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "CustomOrder",
table: "Documents",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<bool>(
name: "IsDeleted",
table: "Documents",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.CreateTable(
name: "DoclinksAttachments",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
DocumentId = table.Column<int>(type: "int", nullable: false),
docName = table.Column<string>(type: "nvarchar(max)", nullable: false),
Path = table.Column<string>(type: "nvarchar(max)", nullable: false),
IsAttachments = table.Column<bool>(type: "bit", nullable: false),
CustomOrder = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_DoclinksAttachments", x => x.Id);
});
migrationBuilder.CreateTable(
name: "LinksTranslations",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
LinkTypeId = table.Column<int>(type: "int", nullable: false),
TypeText = table.Column<string>(type: "nvarchar(max)", nullable: false),
Language = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_LinksTranslations", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "DoclinksAttachments");
migrationBuilder.DropTable(
name: "LinksTranslations");
migrationBuilder.DropColumn(
name: "CustomOrder",
table: "LinkTypes");
migrationBuilder.DropColumn(
name: "CustomOrder",
table: "Documents");
migrationBuilder.DropColumn(
name: "IsDeleted",
table: "Documents");
migrationBuilder.AddColumn<bool>(
name: "IsAttachment",
table: "LinkTypes",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<string>(
name: "TypeText",
table: "LinkTypes",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Path",
table: "Documents",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "docName",
table: "Documents",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "url",
table: "Documents",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
}
}
}

View File

@ -22,7 +22,7 @@ namespace DamageAssesment.Api.DocuLinks.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Document", b => modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.Doculink", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -30,12 +30,14 @@ namespace DamageAssesment.Api.DocuLinks.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id")); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<bool>("IsActive") b.Property<bool>("IsActive")
.HasColumnType("bit"); .HasColumnType("bit");
b.Property<string>("Path") b.Property<bool>("IsDeleted")
.IsRequired() .HasColumnType("bit");
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("dateCreated") b.Property<DateTime>("dateCreated")
.HasColumnType("datetime2"); .HasColumnType("datetime2");
@ -43,23 +45,45 @@ namespace DamageAssesment.Api.DocuLinks.Migrations
b.Property<DateTime>("dateUpdated") b.Property<DateTime>("dateUpdated")
.HasColumnType("datetime2"); .HasColumnType("datetime2");
b.Property<string>("docName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("linkTypeId") b.Property<int>("linkTypeId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<string>("url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("Documents"); b.ToTable("Documents");
}); });
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DocumentsTranslation", b => modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DoculinkAttachments", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<int>("DocumentId")
.HasColumnType("int");
b.Property<bool>("IsAttachments")
.HasColumnType("bit");
b.Property<string>("Path")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("docName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("DoclinksAttachments");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.DoculinkTranslation", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -95,11 +119,31 @@ namespace DamageAssesment.Api.DocuLinks.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id")); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CustomOrder")
.HasColumnType("int");
b.Property<bool>("IsActive") b.Property<bool>("IsActive")
.HasColumnType("bit"); .HasColumnType("bit");
b.Property<bool>("IsAttachment") b.HasKey("Id");
.HasColumnType("bit");
b.ToTable("LinkTypes");
});
modelBuilder.Entity("DamageAssesment.Api.DocuLinks.Db.LinksTranslation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Language")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("LinkTypeId")
.HasColumnType("int");
b.Property<string>("TypeText") b.Property<string>("TypeText")
.IsRequired() .IsRequired()
@ -107,7 +151,7 @@ namespace DamageAssesment.Api.DocuLinks.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("LinkTypes"); b.ToTable("LinksTranslations");
}); });
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }

View File

@ -25,7 +25,7 @@ builder.Services.AddScoped<IAzureBlobService, AzureBlobService>();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
builder.Services.AddDbContext<DoculinkDbContext>(option => builder.Services.AddDbContext<DoculinkDbContext>(option =>
{ {
option.UseInMemoryDatabase("DocumentConnection"); option.UseSqlServer("DoculinConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -6,6 +6,9 @@
} }
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": {
"DoculinConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
},
"Fileupload": { "Fileupload": {
"folderpath": "DASA_Documents/Active", "folderpath": "DASA_Documents/Active",
"Deletepath": "DASA_Documents/Deleted" "Deletepath": "DASA_Documents/Deleted"

View File

@ -10,8 +10,18 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
</ItemGroup> </ItemGroup>

View File

@ -4,18 +4,23 @@ namespace DamageAssesment.Api.Employees.Db
{ {
public class EmployeeDbContext: DbContext public class EmployeeDbContext: DbContext
{ {
public DbSet<Db.Employee> Employees { get; set; } private IConfiguration _Configuration { get; set; }
public EmployeeDbContext(DbContextOptions options) : base(options) public EmployeeDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{ {
_Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("EmployeeConnection"));
} }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Employee>() modelBuilder.Entity<Employee>()
.Property(item => item.Id) .Property(item => item.Id)
.ValueGeneratedOnAdd(); .ValueGeneratedOnAdd();
} }
public DbSet<Db.Employee> Employees { get; set; }
} }
} }

View File

@ -0,0 +1,64 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Employees.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
[DbContext(typeof(EmployeeDbContext))]
[Migration("20230817213656_InitialEmployee")]
partial class InitialEmployee
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Employees.Db.Employee", b =>
{
b.Property<string>("Id")
.HasColumnType("nvarchar(450)");
b.Property<DateTime>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("OfficePhoneNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PreferredLanguage")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Employees");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,39 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
/// <inheritdoc />
public partial class InitialEmployee : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Employees",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
BirthDate = table.Column<DateTime>(type: "datetime2", nullable: false),
OfficePhoneNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Email = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
PreferredLanguage = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Employees", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Employees");
}
}
}

View File

@ -0,0 +1,72 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Employees.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
[DbContext(typeof(EmployeeDbContext))]
[Migration("20230913164315_employeeupdate")]
partial class employeeupdate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Employees.Db.Employee", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("EmployeeCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("OfficePhoneNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PreferredLanguage")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Employees");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,48 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
/// <inheritdoc />
public partial class employeeupdate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "Id",
table: "Employees",
type: "int",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(450)")
.Annotation("SqlServer:Identity", "1, 1");
migrationBuilder.AddColumn<string>(
name: "EmployeeCode",
table: "Employees",
type: "nvarchar(50)",
maxLength: 50,
nullable: false,
defaultValue: "");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "EmployeeCode",
table: "Employees");
migrationBuilder.AlterColumn<string>(
name: "Id",
table: "Employees",
type: "nvarchar(450)",
nullable: false,
oldClrType: typeof(int),
oldType: "int")
.OldAnnotation("SqlServer:Identity", "1, 1");
}
}
}

View File

@ -0,0 +1,72 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Employees.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
[DbContext(typeof(EmployeeDbContext))]
[Migration("20230913170055_updatedemployee_id")]
partial class updatedemployee_id
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Employees.Db.Employee", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("EmployeeCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("OfficePhoneNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PreferredLanguage")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Employees");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
/// <inheritdoc />
public partial class updatedemployee_id : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

View File

@ -0,0 +1,69 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Employees.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Employees.Migrations
{
[DbContext(typeof(EmployeeDbContext))]
partial class EmployeeDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Employees.Db.Employee", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("BirthDate")
.HasColumnType("datetime2");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("EmployeeCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<bool>("IsActive")
.HasColumnType("bit");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("OfficePhoneNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PreferredLanguage")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Employees");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -24,7 +24,7 @@ builder.Services.AddScoped<IEmployeesProvider, EmployeesProvider>();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
builder.Services.AddDbContext<EmployeeDbContext>(option => builder.Services.AddDbContext<EmployeeDbContext>(option =>
{ {
option.UseInMemoryDatabase("Employees"); option.UseSqlServer("EmployeeConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -13,5 +13,8 @@
"endpoint1": "xxx", "endpoint1": "xxx",
"endpoint2": "xxx", "endpoint2": "xxx",
"endpoint3": "xxx" "endpoint3": "xxx"
},
"ConnectionStrings": {
"EmployeeConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
} }
} }

View File

@ -9,6 +9,17 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />

View File

@ -4,6 +4,16 @@ namespace DamageAssesment.Api.Locations.Db
{ {
public class LocationDbContext : DbContext public class LocationDbContext : DbContext
{ {
private IConfiguration _Configuration { get; set; }
public LocationDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{
_Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("LocationConnection"));
}
public DbSet<Db.Location> Locations { get; set; } public DbSet<Db.Location> Locations { get; set; }
public DbSet<Db.Region> Regions { get; set; } public DbSet<Db.Region> Regions { get; set; }
public LocationDbContext(DbContextOptions options) : base(options) public LocationDbContext(DbContextOptions options) : base(options)

View File

@ -0,0 +1,80 @@
// <auto-generated />
using DamageAssesment.Api.Locations.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Locations.Migrations
{
[DbContext(typeof(LocationDbContext))]
[Migration("20230817214454_InitialLocation")]
partial class InitialLocation
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Locations.Db.Location", b =>
{
b.Property<string>("Id")
.HasMaxLength(4)
.HasColumnType("nvarchar(4)");
b.Property<string>("MaintenanceCenter")
.IsRequired()
.HasMaxLength(1)
.HasColumnType("nvarchar(1)");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("RegionId")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("SchoolType")
.IsRequired()
.HasMaxLength(2)
.HasColumnType("nvarchar(2)");
b.HasKey("Id");
b.ToTable("Locations");
});
modelBuilder.Entity("DamageAssesment.Api.Locations.Db.Region", b =>
{
b.Property<string>("Id")
.HasMaxLength(2)
.HasColumnType("nvarchar(2)");
b.Property<string>("Abbreviation")
.IsRequired()
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Regions");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,52 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Locations.Migrations
{
/// <inheritdoc />
public partial class InitialLocation : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Locations",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(4)", maxLength: 4, nullable: false),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
MaintenanceCenter = table.Column<string>(type: "nvarchar(1)", maxLength: 1, nullable: false),
SchoolType = table.Column<string>(type: "nvarchar(2)", maxLength: 2, nullable: false),
RegionId = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Locations", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Regions",
columns: table => new
{
Id = table.Column<string>(type: "nvarchar(2)", maxLength: 2, nullable: false),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Abbreviation = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Regions", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Locations");
migrationBuilder.DropTable(
name: "Regions");
}
}
}

View File

@ -0,0 +1,77 @@
// <auto-generated />
using DamageAssesment.Api.Locations.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Locations.Migrations
{
[DbContext(typeof(LocationDbContext))]
partial class LocationDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Locations.Db.Location", b =>
{
b.Property<string>("Id")
.HasMaxLength(4)
.HasColumnType("nvarchar(4)");
b.Property<string>("MaintenanceCenter")
.IsRequired()
.HasMaxLength(1)
.HasColumnType("nvarchar(1)");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("RegionId")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("SchoolType")
.IsRequired()
.HasMaxLength(2)
.HasColumnType("nvarchar(2)");
b.HasKey("Id");
b.ToTable("Locations");
});
modelBuilder.Entity("DamageAssesment.Api.Locations.Db.Region", b =>
{
b.Property<string>("Id")
.HasMaxLength(2)
.HasColumnType("nvarchar(2)");
b.Property<string>("Abbreviation")
.IsRequired()
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Regions");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -24,7 +24,7 @@ builder.Services.AddScoped<IRegionsProvider, RegionsProvider>();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30
builder.Services.AddDbContext<LocationDbContext>(option => builder.Services.AddDbContext<LocationDbContext>(option =>
{ {
option.UseInMemoryDatabase("Locations"); option.UseSqlServer("LocationConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -8,5 +8,8 @@
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
}, },
"AllowedHosts": "*" "AllowedHosts": "*",
"ConnectionStrings": {
"LocationConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
}
} }

View File

@ -9,6 +9,17 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />

View File

@ -6,6 +6,16 @@ namespace DamageAssesment.Api.Questions.Db
{ {
public class QuestionDbContext : DbContext public class QuestionDbContext : DbContext
{ {
private IConfiguration _Configuration { get; set; }
public QuestionDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{
_Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("QuestionConnection"));
}
public DbSet<Db.Question> Questions { get; set; } public DbSet<Db.Question> Questions { get; set; }
public DbSet<Db.QuestionType> QuestionTypes { get; set; } public DbSet<Db.QuestionType> QuestionTypes { get; set; }
public DbSet<Db.QuestionsTranslation> QuestionsTranslations { get; set; } public DbSet<Db.QuestionsTranslation> QuestionsTranslations { get; set; }

View File

@ -0,0 +1,143 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Questions.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Questions.Migrations
{
[DbContext(typeof(QuestionDbContext))]
[Migration("20230817215744_InitialQuestion")]
partial class InitialQuestion
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.Question", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CategoryId")
.HasColumnType("int");
b.Property<bool>("Comment")
.HasColumnType("bit");
b.Property<bool>("IsRequired")
.HasColumnType("bit");
b.Property<bool>("Key")
.HasColumnType("bit");
b.Property<string>("QuestionGroup")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionNumber")
.HasColumnType("int");
b.Property<int>("QuestionTypeId")
.HasColumnType("int");
b.Property<int?>("SurveyId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("QuestionTypeId");
b.ToTable("Questions");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionCategory", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("CategoryImage")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("CategoryName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionCategories");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionType", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("TypeText")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionTypes");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionsTranslation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Language")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionId")
.HasColumnType("int");
b.Property<string>("QuestionText")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionsTranslations");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.Question", b =>
{
b.HasOne("DamageAssesment.Api.Questions.Db.QuestionType", "QuestionType")
.WithMany()
.HasForeignKey("QuestionTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("QuestionType");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,103 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Questions.Migrations
{
/// <inheritdoc />
public partial class InitialQuestion : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "QuestionCategories",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
CategoryName = table.Column<string>(type: "nvarchar(max)", nullable: false),
CategoryImage = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_QuestionCategories", x => x.Id);
});
migrationBuilder.CreateTable(
name: "QuestionsTranslations",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionId = table.Column<int>(type: "int", nullable: false),
QuestionText = table.Column<string>(type: "nvarchar(max)", nullable: false),
Language = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_QuestionsTranslations", x => x.Id);
});
migrationBuilder.CreateTable(
name: "QuestionTypes",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
TypeText = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_QuestionTypes", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Questions",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionTypeId = table.Column<int>(type: "int", nullable: false),
QuestionNumber = table.Column<int>(type: "int", nullable: false),
IsRequired = table.Column<bool>(type: "bit", nullable: false),
Comment = table.Column<bool>(type: "bit", nullable: false),
Key = table.Column<bool>(type: "bit", nullable: false),
SurveyId = table.Column<int>(type: "int", nullable: true),
QuestionGroup = table.Column<string>(type: "nvarchar(max)", nullable: false),
CategoryId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Questions", x => x.Id);
table.ForeignKey(
name: "FK_Questions_QuestionTypes_QuestionTypeId",
column: x => x.QuestionTypeId,
principalTable: "QuestionTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Questions_QuestionTypeId",
table: "Questions",
column: "QuestionTypeId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "QuestionCategories");
migrationBuilder.DropTable(
name: "Questions");
migrationBuilder.DropTable(
name: "QuestionsTranslations");
migrationBuilder.DropTable(
name: "QuestionTypes");
}
}
}

View File

@ -0,0 +1,140 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Questions.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Questions.Migrations
{
[DbContext(typeof(QuestionDbContext))]
partial class QuestionDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.Question", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CategoryId")
.HasColumnType("int");
b.Property<bool>("Comment")
.HasColumnType("bit");
b.Property<bool>("IsRequired")
.HasColumnType("bit");
b.Property<bool>("Key")
.HasColumnType("bit");
b.Property<string>("QuestionGroup")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionNumber")
.HasColumnType("int");
b.Property<int>("QuestionTypeId")
.HasColumnType("int");
b.Property<int?>("SurveyId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("QuestionTypeId");
b.ToTable("Questions");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionCategory", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("CategoryImage")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("CategoryName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionCategories");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionType", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("TypeText")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionTypes");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.QuestionsTranslation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Language")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QuestionId")
.HasColumnType("int");
b.Property<string>("QuestionText")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("QuestionsTranslations");
});
modelBuilder.Entity("DamageAssesment.Api.Questions.Db.Question", b =>
{
b.HasOne("DamageAssesment.Api.Questions.Db.QuestionType", "QuestionType")
.WithMany()
.HasForeignKey("QuestionTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("QuestionType");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -26,7 +26,7 @@ builder.Services.AddSwaggerGen(c =>
}); });
builder.Services.AddDbContext<QuestionDbContext>(option => builder.Services.AddDbContext<QuestionDbContext>(option =>
{ {
option.UseInMemoryDatabase("Questions"); option.UseSqlServer("QuestionConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -8,5 +8,8 @@
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
}, },
"AllowedHosts": "*" "AllowedHosts": "*",
"ConnectionStrings": {
"QuestionConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
}
} }

View File

@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="Moq" Version="4.18.4" /> <PackageReference Include="Moq" Version="4.18.4" />
<PackageReference Include="xunit" Version="2.4.2" /> <PackageReference Include="xunit" Version="2.4.2" />

View File

@ -9,6 +9,19 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="7.0.9" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />

View File

@ -4,12 +4,17 @@ namespace DamageAssesment.Api.Responses.Db
{ {
public class SurveyResponseDbContext:DbContext public class SurveyResponseDbContext:DbContext
{ {
public DbSet<Db.SurveyResponse> SurveyResponses { get; set; } private IConfiguration _Configuration { get; set; }
public SurveyResponseDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
public SurveyResponseDbContext(DbContextOptions options) : base(options)
{ {
_Configuration = configuration;
} }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("ResponsesConnection"));
}
public DbSet<Db.SurveyResponse> SurveyResponses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {

View File

@ -44,7 +44,7 @@ builder.Services.AddSwaggerGen(c =>
}); });
builder.Services.AddDbContext<SurveyResponseDbContext>(option => builder.Services.AddDbContext<SurveyResponseDbContext>(option =>
{ {
option.UseInMemoryDatabase("Responses"); option.UseSqlServer("ResponsesConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -6,6 +6,9 @@
} }
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": {
"ResponsesConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
},
"EndPointSettings": { "EndPointSettings": {
"AnswerUrlBase": "http://localhost:5200", "AnswerUrlBase": "http://localhost:5200",
"LocationUrlBase": "http://localhost:5213", "LocationUrlBase": "http://localhost:5213",

View File

@ -9,6 +9,17 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />

View File

@ -4,11 +4,18 @@ namespace DamageAssesment.Api.Surveys.Db
{ {
public class SurveysDbContext : DbContext public class SurveysDbContext : DbContext
{ {
private IConfiguration _Configuration { get; set; }
public SurveysDbContext(DbContextOptions options, IConfiguration configuration) : base(options)
{
_Configuration = configuration;
}
public DbSet<Db.Survey> Surveys { get; set; } public DbSet<Db.Survey> Surveys { get; set; }
public DbSet<Db.SurveyTranslation> SurveysTranslation { get; set; } public DbSet<Db.SurveyTranslation> SurveysTranslation { get; set; }
public SurveysDbContext(DbContextOptions options) : base(options) protected override void OnConfiguring(DbContextOptionsBuilder options)
{ {
// connect to sql server with connection string from app settings
options.UseSqlServer(_Configuration.GetConnectionString("SurveyConnection"));
} }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {

View File

@ -0,0 +1,57 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Surveys.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Survey.Migrations
{
[DbContext(typeof(SurveysDbContext))]
[Migration("20230817220614_InitialSurvey")]
partial class InitialSurvey
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Surveys.Db.Survey", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("EndDate")
.HasColumnType("datetime2");
b.Property<bool>("IsEnabled")
.HasColumnType("bit");
b.Property<DateTime?>("StartDate")
.HasColumnType("datetime2");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.HasKey("Id");
b.ToTable("Surveys");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,38 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace DamageAssesment.Api.Survey.Migrations
{
/// <inheritdoc />
public partial class InitialSurvey : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Surveys",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Title = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
IsEnabled = table.Column<bool>(type: "bit", nullable: false),
StartDate = table.Column<DateTime>(type: "datetime2", nullable: true),
EndDate = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Surveys", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Surveys");
}
}
}

View File

@ -0,0 +1,54 @@
// <auto-generated />
using System;
using DamageAssesment.Api.Surveys.Db;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace DamageAssesment.Api.Survey.Migrations
{
[DbContext(typeof(SurveysDbContext))]
partial class SurveysDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("DamageAssesment.Api.Surveys.Db.Survey", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("EndDate")
.HasColumnType("datetime2");
b.Property<bool>("IsEnabled")
.HasColumnType("bit");
b.Property<DateTime?>("StartDate")
.HasColumnType("datetime2");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.HasKey("Id");
b.ToTable("Surveys");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -44,7 +44,7 @@ builder.Services.AddSwaggerGen(c =>
}); });
builder.Services.AddDbContext<SurveysDbContext>(option => builder.Services.AddDbContext<SurveysDbContext>(option =>
{ {
option.UseInMemoryDatabase("Surveys"); option.UseSqlServer("SurveyConnection");
}); });
var app = builder.Build(); var app = builder.Build();

View File

@ -8,5 +8,8 @@
"Microsoft.AspNetCore": "Warning" "Microsoft.AspNetCore": "Warning"
} }
}, },
"AllowedHosts": "*" "AllowedHosts": "*",
"ConnectionStrings": {
"SurveyConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;"
}
} }