From 891ff69aa8a81cca5313b0523ddf4fbaa012a48f Mon Sep 17 00:00:00 2001
From: MeysamMoghaddam <65253484+MeysamMoghaddam@users.noreply.github.com>
Date: Sat, 27 Sep 2025 10:23:45 +0330
Subject: [PATCH] u
---
src/CMS.sln | 12 +-
.../CMSMicroservice.Infrastructure.csproj | 4 +
.../ConfigureServices.cs | 27 +-
.../Migrations/20250927064817_u01.Designer.cs | 377 ++++++++++++++++++
.../Migrations/20250927064817_u01.cs | 257 ++++++++++++
.../ApplicationDbContextModelSnapshot.cs | 374 +++++++++++++++++
.../CMSMicroservice.Protobuf.csproj | 12 +-
src/CMSMicroservice.WebApi/Program.cs | 27 +-
.../Properties/launchSettings.json | 12 +
src/CMSMicroservice.WebApi/appsettings.json | 7 +-
10 files changed, 1078 insertions(+), 31 deletions(-)
create mode 100644 src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.Designer.cs
create mode 100644 src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.cs
create mode 100644 src/CMSMicroservice.Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
create mode 100644 src/CMSMicroservice.WebApi/Properties/launchSettings.json
diff --git a/src/CMS.sln b/src/CMS.sln
index 0b74488..bdd42e0 100644
--- a/src/CMS.sln
+++ b/src/CMS.sln
@@ -2,15 +2,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{43A1942F-306D-4937-8907-B9888A5449CF}") = "CMSMicroservice.Domain", "CMSMicroservice.Domain\CMSMicroservice.Domain.csproj", "{426E097F-8C77-44B2-BF9D-4280B295B366}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMSMicroservice.Domain", "CMSMicroservice.Domain\CMSMicroservice.Domain.csproj", "{426E097F-8C77-44B2-BF9D-4280B295B366}"
EndProject
-Project("{43A1942F-306D-4937-8907-B9888A5449CF}") = "CMSMicroservice.Application", "CMSMicroservice.Application\CMSMicroservice.Application.csproj", "{5A05B9B0-D6BB-46EB-BE8C-EEAB6F0EAC55}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMSMicroservice.Application", "CMSMicroservice.Application\CMSMicroservice.Application.csproj", "{5A05B9B0-D6BB-46EB-BE8C-EEAB6F0EAC55}"
EndProject
-Project("{43A1942F-306D-4937-8907-B9888A5449CF}") = "CMSMicroservice.Infrastructure", "CMSMicroservice.Infrastructure\CMSMicroservice.Infrastructure.csproj", "{A583B3B2-EAFB-45B7-BAA3-C17662714713}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMSMicroservice.Infrastructure", "CMSMicroservice.Infrastructure\CMSMicroservice.Infrastructure.csproj", "{A583B3B2-EAFB-45B7-BAA3-C17662714713}"
EndProject
-Project("{43A1942F-306D-4937-8907-B9888A5449CF}") = "CMSMicroservice.WebApi", "CMSMicroservice.WebApi\CMSMicroservice.WebApi.csproj", "{0A56701B-A4EA-441F-A5A6-7EDD89572F9D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMSMicroservice.WebApi", "CMSMicroservice.WebApi\CMSMicroservice.WebApi.csproj", "{0A56701B-A4EA-441F-A5A6-7EDD89572F9D}"
EndProject
-Project("{43A1942F-306D-4937-8907-B9888A5449CF}") = "CMSMicroservice.Protobuf", "CMSMicroservice.Protobuf\CMSMicroservice.Protobuf.csproj", "{AC4961A7-941F-4E42-9208-B48CB352361C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMSMicroservice.Protobuf", "CMSMicroservice.Protobuf\CMSMicroservice.Protobuf.csproj", "{AC4961A7-941F-4E42-9208-B48CB352361C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -34,7 +34,7 @@ Global
{0A56701B-A4EA-441F-A5A6-7EDD89572F9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A56701B-A4EA-441F-A5A6-7EDD89572F9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A56701B-A4EA-441F-A5A6-7EDD89572F9D}.Release|Any CPU.Build.0 = Release|Any CPU
- {AC4961A7-941F-4E42-9208-B48CB352361C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AC4961A7-941F-4E42-9208-B48CB352361C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC4961A7-941F-4E42-9208-B48CB352361C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC4961A7-941F-4E42-9208-B48CB352361C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC4961A7-941F-4E42-9208-B48CB352361C}.Release|Any CPU.Build.0 = Release|Any CPU
diff --git a/src/CMSMicroservice.Infrastructure/CMSMicroservice.Infrastructure.csproj b/src/CMSMicroservice.Infrastructure/CMSMicroservice.Infrastructure.csproj
index c53f550..8f085f4 100644
--- a/src/CMSMicroservice.Infrastructure/CMSMicroservice.Infrastructure.csproj
+++ b/src/CMSMicroservice.Infrastructure/CMSMicroservice.Infrastructure.csproj
@@ -20,4 +20,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/CMSMicroservice.Infrastructure/ConfigureServices.cs b/src/CMSMicroservice.Infrastructure/ConfigureServices.cs
index 8da1474..026fa83 100644
--- a/src/CMSMicroservice.Infrastructure/ConfigureServices.cs
+++ b/src/CMSMicroservice.Infrastructure/ConfigureServices.cs
@@ -6,7 +6,8 @@ using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Http;
using System.Diagnostics;
-using Microsoft.Extensions.Configuration;
+using Microsoft.IdentityModel.Tokens;
+using System.Text;
namespace Microsoft.Extensions.DependencyInjection;
@@ -34,11 +35,24 @@ public static class ConfigureServices
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(jwtBearerOptions =>
{
- jwtBearerOptions.Authority = configuration["Authentication:Authority"];
- jwtBearerOptions.Audience = configuration["Authentication:Audience"];
- jwtBearerOptions.TokenValidationParameters.ValidateAudience = false;
- jwtBearerOptions.TokenValidationParameters.ValidateIssuer = true;
- jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey = false;
+ //jwtBearerOptions.Authority = configuration["Authentication:Authority"];
+ //jwtBearerOptions.Audience = configuration["Authentication:Audience"];
+ //jwtBearerOptions.TokenValidationParameters.ValidateAudience = false;
+ //jwtBearerOptions.TokenValidationParameters.ValidateIssuer = true;
+ //jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey = false;
+
+ jwtBearerOptions.SaveToken = true;
+ jwtBearerOptions.RequireHttpsMetadata = false;
+ jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters
+ {
+ ValidateIssuer = true,
+ ValidateAudience = true,
+ ValidateLifetime = true,
+ ValidateIssuerSigningKey = true,
+ ValidIssuer = configuration["JwtIssuer"],
+ ValidAudience = configuration["JwtAudience"],
+ IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtSecurityKey"]))
+ };
try
{
jwtBearerOptions.Events = new JwtBearerEvents
@@ -87,6 +101,7 @@ public static class ConfigureServices
#endregion
+
return services;
}
}
\ No newline at end of file
diff --git a/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.Designer.cs b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.Designer.cs
new file mode 100644
index 0000000..66c0e16
--- /dev/null
+++ b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.Designer.cs
@@ -0,0 +1,377 @@
+//
+using System;
+using CMSMicroservice.Infrastructure.Persistence;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CMSMicroservice.Infrastructure.Persistence.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20250927064817_u01")]
+ partial class u01
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("CMS")
+ .HasAnnotation("ProductVersion", "7.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Package", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ImagePath")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Packages", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Roles", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AvatarPath")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Mobile")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NationalCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ParentId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("Users", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserAddress", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CityId")
+ .HasColumnType("bigint");
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDefault")
+ .HasColumnType("bit");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PostalCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserAddresss", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserOrder", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PackageId")
+ .HasColumnType("bigint");
+
+ b.Property("PaymentDate")
+ .HasColumnType("datetime2");
+
+ b.Property("PaymentStatus")
+ .HasColumnType("bit");
+
+ b.Property("Price")
+ .HasColumnType("bigint");
+
+ b.Property("TransactionId")
+ .HasColumnType("bigint");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PackageId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserOrders", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RoleId")
+ .HasColumnType("bigint");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserRoles", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "Parent")
+ .WithMany("Users")
+ .HasForeignKey("ParentId");
+
+ b.Navigation("Parent");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserAddress", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserAddresss")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserOrder", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.Package", "Package")
+ .WithMany("UserOrders")
+ .HasForeignKey("PackageId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserOrders")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Package");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserRole", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.Role", "Role")
+ .WithMany("UserRoles")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserRoles")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Role");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Package", b =>
+ {
+ b.Navigation("UserOrders");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Role", b =>
+ {
+ b.Navigation("UserRoles");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.Navigation("UserAddresss");
+
+ b.Navigation("UserOrders");
+
+ b.Navigation("UserRoles");
+
+ b.Navigation("Users");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.cs b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.cs
new file mode 100644
index 0000000..00b0efd
--- /dev/null
+++ b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/20250927064817_u01.cs
@@ -0,0 +1,257 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace CMSMicroservice.Infrastructure.Persistence.Migrations
+{
+ ///
+ public partial class u01 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.EnsureSchema(
+ name: "CMS");
+
+ migrationBuilder.CreateTable(
+ name: "Packages",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Title = table.Column(type: "nvarchar(max)", nullable: false),
+ Description = table.Column(type: "nvarchar(max)", nullable: false),
+ ImagePath = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "bigint", nullable: false),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Packages", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Roles",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Title = table.Column(type: "nvarchar(max)", nullable: false),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Roles", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Users",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ FirstName = table.Column(type: "nvarchar(max)", nullable: true),
+ LastName = table.Column(type: "nvarchar(max)", nullable: true),
+ Mobile = table.Column(type: "nvarchar(max)", nullable: false),
+ NationalCode = table.Column(type: "nvarchar(max)", nullable: true),
+ AvatarPath = table.Column(type: "nvarchar(max)", nullable: true),
+ ParentId = table.Column(type: "bigint", nullable: true),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Users", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Users_Users_ParentId",
+ column: x => x.ParentId,
+ principalSchema: "CMS",
+ principalTable: "Users",
+ principalColumn: "Id");
+ });
+
+ migrationBuilder.CreateTable(
+ name: "UserAddresss",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ UserId = table.Column(type: "bigint", nullable: false),
+ Title = table.Column(type: "nvarchar(max)", nullable: false),
+ Address = table.Column(type: "nvarchar(max)", nullable: false),
+ PostalCode = table.Column(type: "nvarchar(max)", nullable: false),
+ IsDefault = table.Column(type: "bit", nullable: false),
+ CityId = table.Column(type: "bigint", nullable: false),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_UserAddresss", x => x.Id);
+ table.ForeignKey(
+ name: "FK_UserAddresss_Users_UserId",
+ column: x => x.UserId,
+ principalSchema: "CMS",
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "UserOrders",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Price = table.Column(type: "bigint", nullable: false),
+ PackageId = table.Column(type: "bigint", nullable: false),
+ TransactionId = table.Column(type: "bigint", nullable: true),
+ PaymentStatus = table.Column(type: "bit", nullable: false),
+ PaymentDate = table.Column(type: "datetime2", nullable: true),
+ UserId = table.Column(type: "bigint", nullable: false),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_UserOrders", x => x.Id);
+ table.ForeignKey(
+ name: "FK_UserOrders_Packages_PackageId",
+ column: x => x.PackageId,
+ principalSchema: "CMS",
+ principalTable: "Packages",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_UserOrders_Users_UserId",
+ column: x => x.UserId,
+ principalSchema: "CMS",
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "UserRoles",
+ schema: "CMS",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ RoleId = table.Column(type: "bigint", nullable: false),
+ UserId = table.Column(type: "bigint", nullable: false),
+ Created = table.Column(type: "datetime2", nullable: false),
+ CreatedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ LastModified = table.Column(type: "datetime2", nullable: true),
+ LastModifiedBy = table.Column(type: "nvarchar(max)", nullable: true),
+ IsDeleted = table.Column(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_UserRoles", x => x.Id);
+ table.ForeignKey(
+ name: "FK_UserRoles_Roles_RoleId",
+ column: x => x.RoleId,
+ principalSchema: "CMS",
+ principalTable: "Roles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_UserRoles_Users_UserId",
+ column: x => x.UserId,
+ principalSchema: "CMS",
+ principalTable: "Users",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_UserAddresss_UserId",
+ schema: "CMS",
+ table: "UserAddresss",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_UserOrders_PackageId",
+ schema: "CMS",
+ table: "UserOrders",
+ column: "PackageId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_UserOrders_UserId",
+ schema: "CMS",
+ table: "UserOrders",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_UserRoles_RoleId",
+ schema: "CMS",
+ table: "UserRoles",
+ column: "RoleId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_UserRoles_UserId",
+ schema: "CMS",
+ table: "UserRoles",
+ column: "UserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Users_ParentId",
+ schema: "CMS",
+ table: "Users",
+ column: "ParentId");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "UserAddresss",
+ schema: "CMS");
+
+ migrationBuilder.DropTable(
+ name: "UserOrders",
+ schema: "CMS");
+
+ migrationBuilder.DropTable(
+ name: "UserRoles",
+ schema: "CMS");
+
+ migrationBuilder.DropTable(
+ name: "Packages",
+ schema: "CMS");
+
+ migrationBuilder.DropTable(
+ name: "Roles",
+ schema: "CMS");
+
+ migrationBuilder.DropTable(
+ name: "Users",
+ schema: "CMS");
+ }
+ }
+}
diff --git a/src/CMSMicroservice.Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
new file mode 100644
index 0000000..4db6a33
--- /dev/null
+++ b/src/CMSMicroservice.Infrastructure/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -0,0 +1,374 @@
+//
+using System;
+using CMSMicroservice.Infrastructure.Persistence;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CMSMicroservice.Infrastructure.Persistence.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ partial class ApplicationDbContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("CMS")
+ .HasAnnotation("ProductVersion", "7.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Package", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ImagePath")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("bigint");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Packages", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Roles", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("AvatarPath")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("FirstName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Mobile")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NationalCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ParentId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("Users", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserAddress", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CityId")
+ .HasColumnType("bigint");
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDefault")
+ .HasColumnType("bit");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PostalCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserAddresss", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserOrder", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PackageId")
+ .HasColumnType("bigint");
+
+ b.Property("PaymentDate")
+ .HasColumnType("datetime2");
+
+ b.Property("PaymentStatus")
+ .HasColumnType("bit");
+
+ b.Property("Price")
+ .HasColumnType("bigint");
+
+ b.Property("TransactionId")
+ .HasColumnType("bigint");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PackageId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserOrders", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Created")
+ .HasColumnType("datetime2");
+
+ b.Property("CreatedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime2");
+
+ b.Property("LastModifiedBy")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RoleId")
+ .HasColumnType("bigint");
+
+ b.Property("UserId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("UserRoles", "CMS");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "Parent")
+ .WithMany("Users")
+ .HasForeignKey("ParentId");
+
+ b.Navigation("Parent");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserAddress", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserAddresss")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserOrder", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.Package", "Package")
+ .WithMany("UserOrders")
+ .HasForeignKey("PackageId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserOrders")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Package");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.UserRole", b =>
+ {
+ b.HasOne("CMSMicroservice.Domain.Entities.Role", "Role")
+ .WithMany("UserRoles")
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CMSMicroservice.Domain.Entities.User", "User")
+ .WithMany("UserRoles")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Role");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Package", b =>
+ {
+ b.Navigation("UserOrders");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.Role", b =>
+ {
+ b.Navigation("UserRoles");
+ });
+
+ modelBuilder.Entity("CMSMicroservice.Domain.Entities.User", b =>
+ {
+ b.Navigation("UserAddresss");
+
+ b.Navigation("UserOrders");
+
+ b.Navigation("UserRoles");
+
+ b.Navigation("Users");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
index 3eaba99..502a4e4 100644
--- a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
+++ b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
@@ -4,10 +4,11 @@
net7.0
enable
enable
- 1.0.0
+ 0.0.111
None
False
False
+ Foursat.CMSMicroservice.Protobuf
@@ -30,4 +31,13 @@
+
+
+
+ $(PackageOutputPath)$(PackageId).$(Version).nupkg
+ dotnet nuget push **/*.nupkg --source https://git.afrino.co/api/packages/FourSat/nuget/index.json --api-key 061a5cb15517c6da39c16cfce8556c55ae104d0d --skip-duplicate && del "$(NugetPackagePath)"
+
+
+
+
diff --git a/src/CMSMicroservice.WebApi/Program.cs b/src/CMSMicroservice.WebApi/Program.cs
index ab8dfaf..11904d4 100644
--- a/src/CMSMicroservice.WebApi/Program.cs
+++ b/src/CMSMicroservice.WebApi/Program.cs
@@ -1,15 +1,10 @@
-using System.Runtime.InteropServices;
-using CMSMicroservice.WebApi.Services;
using CMSMicroservice.Infrastructure.Persistence;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Hosting;
-using Microsoft.AspNetCore.Server.Kestrel.Core;
using Serilog.Core;
using Serilog;
-using Serilog.Sinks.MSSqlServer;
-using Microsoft.Extensions.Configuration;
using System.Reflection;
using Microsoft.OpenApi.Models;
using CMSMicroservice.WebApi.Common.Behaviours;
@@ -17,17 +12,17 @@ using CMSMicroservice.WebApi.Common.Behaviours;
var builder = WebApplication.CreateBuilder(args);
var levelSwitch = new LoggingLevelSwitch();
var logger = new LoggerConfiguration()
- //.WriteTo.Console()
- .WriteTo.MSSqlServer(builder.Configuration.GetConnectionString("LogConnection"),
- sinkOptions: new MSSqlServerSinkOptions
- {
- TableName = "LogCMSEvents",
- SchemaName = "Log",
- AutoCreateSqlTable = true
- })
- /* .WriteTo.Seq("http://localhost:5341",
- apiKey: "IeEfKjIMoCGLljdp9e7A",
- controlLevelSwitch: levelSwitch)*/
+ //.WriteTo.Console()
+ //.WriteTo.MSSqlServer(builder.Configuration.GetConnectionString("LogConnection"),
+ // sinkOptions: new MSSqlServerSinkOptions
+ // {
+ // TableName = "LogCMSEvents",
+ // SchemaName = "Log",
+ // AutoCreateSqlTable = true
+ // })
+ .WriteTo.Seq("https://seq.afrino.co",
+ apiKey: "oxpvpUzU1pZxMS4s3Fqq",
+ controlLevelSwitch: levelSwitch)
.CreateLogger();
builder.Logging.AddSerilog(logger);
#if DEBUG
diff --git a/src/CMSMicroservice.WebApi/Properties/launchSettings.json b/src/CMSMicroservice.WebApi/Properties/launchSettings.json
new file mode 100644
index 0000000..b92945e
--- /dev/null
+++ b/src/CMSMicroservice.WebApi/Properties/launchSettings.json
@@ -0,0 +1,12 @@
+{
+ "profiles": {
+ "CMSMicroservice.WebApi": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:32846;http://localhost:32847"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/CMSMicroservice.WebApi/appsettings.json b/src/CMSMicroservice.WebApi/appsettings.json
index 49c0979..7242cd5 100644
--- a/src/CMSMicroservice.WebApi/appsettings.json
+++ b/src/CMSMicroservice.WebApi/appsettings.json
@@ -1,7 +1,10 @@
{
+ "JwtSecurityKey": "TvlZVx5TJaHs8e9HgUdGzhGP2CIidoI444nAj+8+g7c=",
+ "JwtIssuer": "https://localhost",
+ "JwtAudience": "https://localhost",
+ "JwtExpiryInDays": 365,
"ConnectionStrings": {
- "LogConnection": "Data Source=.,2019; Initial Catalog=DBName;User ID=dbuser;Password=dbpassword;Connection Timeout=300000;MultipleActiveResultSets=True;Encrypt=False",
- "DefaultConnection": "Data Source=.,2019; Initial Catalog=DBName;User ID=dbuser;Password=dbpassword;Connection Timeout=300000;MultipleActiveResultSets=True;Encrypt=False",
+ "DefaultConnection": "Data Source=185.252.31.42,2019; Initial Catalog=Foursat;User ID=afrino;Password=87zH26nbqT%;Connection Timeout=300000;MultipleActiveResultSets=True;Encrypt=False",
"providerName": "System.Data.SqlClient"
},
"AllowedHosts": "*",