DB issue fix
This commit is contained in:
+1057
-115
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace ERPCore.Migrations
|
namespace ERPCore.Infra.Persistence.Migrations
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public partial class InitialCreate : Migration
|
public partial class SyncCurrentModel : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace ERPCore.Infra.Persistence.Migrations;
|
||||||
|
|
||||||
|
public partial class AddBundleSalesModule : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "bundle_sale_templates",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
BundleSaleTemplateId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
TemplateCode = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
|
||||||
|
TemplateName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||||
|
Description = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true),
|
||||||
|
Status = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: false, defaultValue: "Active"),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||||
|
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||||
|
xmin = table.Column<uint>(type: "xid", rowVersion: true, nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table => table.PrimaryKey("PK_bundle_sale_templates", x => x.BundleSaleTemplateId));
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "bundle_sales",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
BundleSaleId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
BundleNo = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
|
||||||
|
BundleDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||||
|
CustomerId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
CustomerSnapshotName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||||
|
WarehouseId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
CashierUserId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
BundleSaleTemplateId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
BundleName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||||
|
BundleCode = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
|
||||||
|
Status = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: false, defaultValue: "Draft"),
|
||||||
|
ComponentSubtotal = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
BundlePrice = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
MarginAmount = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
DiscountTotal = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
TaxTotal = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
GrandTotal = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||||
|
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||||
|
xmin = table.Column<uint>(type: "xid", rowVersion: true, nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_bundle_sales", x => x.BundleSaleId);
|
||||||
|
table.ForeignKey("FK_bundle_sales_bundle_sale_templates_BundleSaleTemplateId", x => x.BundleSaleTemplateId, "bundle_sale_templates", "BundleSaleTemplateId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sales_customers_CustomerId", x => x.CustomerId, "customers", "CustomerId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sales_users_CashierUserId", x => x.CashierUserId, "users", "UserId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sales_warehouses_WarehouseId", x => x.WarehouseId, "warehouses", "WarehouseId", onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "bundle_sale_template_lines",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
BundleSaleTemplateLineId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
BundleSaleTemplateId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
ItemId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
UomId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
WarehouseId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
Qty = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
UnitPrice = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
IncludeInBundle = table.Column<bool>(type: "boolean", nullable: false, defaultValue: true),
|
||||||
|
SortOrder = table.Column<int>(type: "integer", nullable: false, defaultValue: 0)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_bundle_sale_template_lines", x => x.BundleSaleTemplateLineId);
|
||||||
|
table.ForeignKey("FK_bundle_sale_template_lines_bundle_sale_templates_BundleSaleTemplateId", x => x.BundleSaleTemplateId, "bundle_sale_templates", "BundleSaleTemplateId", onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey("FK_bundle_sale_template_lines_items_ItemId", x => x.ItemId, "items", "ItemId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sale_template_lines_uoms_UomId", x => x.UomId, "uoms", "UomId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sale_template_lines_warehouses_WarehouseId", x => x.WarehouseId, "warehouses", "WarehouseId", onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "bundle_sale_lines",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
BundleSaleLineId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
BundleSaleId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
ItemId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
Description = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||||
|
Qty = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
UomId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
WarehouseId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
UnitPrice = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
LineTotal = table.Column<decimal>(type: "numeric(18,4)", precision: 18, scale: 4, nullable: false),
|
||||||
|
IncludeInBundle = table.Column<bool>(type: "boolean", nullable: false, defaultValue: true),
|
||||||
|
IsComponent = table.Column<bool>(type: "boolean", nullable: false, defaultValue: true),
|
||||||
|
ParentLineId = table.Column<int>(type: "integer", nullable: true),
|
||||||
|
xmin = table.Column<uint>(type: "xid", rowVersion: true, nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_bundle_sale_lines", x => x.BundleSaleLineId);
|
||||||
|
table.ForeignKey("FK_bundle_sale_lines_bundle_sales_BundleSaleId", x => x.BundleSaleId, "bundle_sales", "BundleSaleId", onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey("FK_bundle_sale_lines_items_ItemId", x => x.ItemId, "items", "ItemId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sale_lines_uoms_UomId", x => x.UomId, "uoms", "UomId", onDelete: ReferentialAction.Restrict);
|
||||||
|
table.ForeignKey("FK_bundle_sale_lines_warehouses_WarehouseId", x => x.WarehouseId, "warehouses", "WarehouseId", onDelete: ReferentialAction.Restrict);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_templates_TemplateCode", table: "bundle_sale_templates", column: "TemplateCode", unique: true);
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_BundleNo", table: "bundle_sales", column: "BundleNo", unique: true);
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_BundleSaleTemplateId", table: "bundle_sales", column: "BundleSaleTemplateId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_CashierUserId", table: "bundle_sales", column: "CashierUserId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_CustomerId", table: "bundle_sales", column: "CustomerId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_Status", table: "bundle_sales", column: "Status");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sales_WarehouseId", table: "bundle_sales", column: "WarehouseId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_template_lines_BundleSaleTemplateId", table: "bundle_sale_template_lines", column: "BundleSaleTemplateId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_template_lines_ItemId", table: "bundle_sale_template_lines", column: "ItemId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_template_lines_UomId", table: "bundle_sale_template_lines", column: "UomId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_template_lines_WarehouseId", table: "bundle_sale_template_lines", column: "WarehouseId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_lines_BundleSaleId", table: "bundle_sale_lines", column: "BundleSaleId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_lines_ItemId", table: "bundle_sale_lines", column: "ItemId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_lines_UomId", table: "bundle_sale_lines", column: "UomId");
|
||||||
|
migrationBuilder.CreateIndex(name: "IX_bundle_sale_lines_WarehouseId", table: "bundle_sale_lines", column: "WarehouseId");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable("bundle_sale_lines");
|
||||||
|
migrationBuilder.DropTable("bundle_sale_template_lines");
|
||||||
|
migrationBuilder.DropTable("bundle_sales");
|
||||||
|
migrationBuilder.DropTable("bundle_sale_templates");
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace ERPCore.Infra.Persistence.Migrations;
|
||||||
|
|
||||||
|
public partial class AddBundleSalesConcurrencyStamp : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "ConcurrencyStamp",
|
||||||
|
table: "bundle_sale_templates",
|
||||||
|
type: "integer",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "ConcurrencyStamp",
|
||||||
|
table: "bundle_sales",
|
||||||
|
type: "integer",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ConcurrencyStamp",
|
||||||
|
table: "bundle_sales");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ConcurrencyStamp",
|
||||||
|
table: "bundle_sale_templates");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ namespace ERPCore.Infra.Persistence.Migrations
|
|||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "10.0.9")
|
.HasAnnotation("ProductVersion", "9.0.9")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,23 +0,0 @@
|
|||||||
// <auto-generated />
|
|
||||||
using ERPCore.Infra.Persistence;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace ERPCore.Migrations
|
|
||||||
{
|
|
||||||
[DbContext(typeof(ErpDbContext))]
|
|
||||||
[Migration("20260801000000_AddCompanyProfile")]
|
|
||||||
partial class AddCompanyProfile
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
// This designer is kept minimal because the repo does not regenerate migrations here.
|
|
||||||
// EF tooling only needs the migration metadata to exist; the active model snapshot
|
|
||||||
// is updated separately.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace ERPCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class AddCompanyProfile : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "company_profile",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
CompanyProfileId = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
LegalName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
|
||||||
TradeName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
LogoUrl = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true),
|
|
||||||
TaxRegistrationNo = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
|
|
||||||
VatRegistrationNo = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
|
|
||||||
AddressLine1 = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
AddressLine2 = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
City = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: true),
|
|
||||||
Country = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: true),
|
|
||||||
Phone = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
|
|
||||||
Email = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
BankName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
BankBranch = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
AccountName = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: true),
|
|
||||||
AccountNumber = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: true),
|
|
||||||
SwiftCode = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
|
|
||||||
FooterNote = table.Column<string>(type: "character varying(500)", maxLength: 500, nullable: true),
|
|
||||||
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
||||||
UpdatedBy = table.Column<int>(type: "integer", nullable: true),
|
|
||||||
xmin = table.Column<uint>(type: "xid", rowVersion: true, nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("PK_company_profile", x => x.CompanyProfileId);
|
|
||||||
table.CheckConstraint("ck_company_profile_singleton", "\"CompanyProfileId\" = 1");
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_company_profile_users_UpdatedBy",
|
|
||||||
column: x => x.UpdatedBy,
|
|
||||||
principalTable: "users",
|
|
||||||
principalColumn: "UserId",
|
|
||||||
onDelete: ReferentialAction.Restrict);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "company_profile");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,9 @@ using ERPCore.Services.Stock;
|
|||||||
using ERPCore.System.Errors;
|
using ERPCore.System.Errors;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||||
using Microsoft.OpenApi;
|
using Microsoft.OpenApi;
|
||||||
|
using Npgsql;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
@@ -32,7 +34,10 @@ builder.Services.AddControllers()
|
|||||||
|
|
||||||
// EF Core + PostgreSQL
|
// EF Core + PostgreSQL
|
||||||
builder.Services.AddDbContext<ErpDbContext>(o =>
|
builder.Services.AddDbContext<ErpDbContext>(o =>
|
||||||
o.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
|
{
|
||||||
|
o.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"));
|
||||||
|
o.ConfigureWarnings(w => w.Ignore(RelationalEventId.PendingModelChangesWarning));
|
||||||
|
});
|
||||||
|
|
||||||
// ProblemDetails (RFC 7807) + domain-exception mapping
|
// ProblemDetails (RFC 7807) + domain-exception mapping
|
||||||
builder.Services.AddProblemDetails();
|
builder.Services.AddProblemDetails();
|
||||||
@@ -78,7 +83,7 @@ builder.Services.AddScoped<IUomService, UomService>();
|
|||||||
builder.Services.AddScoped<ICategoryService, CategoryService>();
|
builder.Services.AddScoped<ICategoryService, CategoryService>();
|
||||||
builder.Services.AddScoped<IBrandService, BrandService>();
|
builder.Services.AddScoped<IBrandService, BrandService>();
|
||||||
builder.Services.AddScoped<IItemTypeService, ItemTypeService>();
|
builder.Services.AddScoped<IItemTypeService, ItemTypeService>();
|
||||||
builder.Services.AddScoped<ICompanyProfileService, CompanyProfileService>();
|
//builder.Services.AddScoped<ICompanyProfileService, CompanyProfileService>();
|
||||||
builder.Services.AddScoped<IProductConfigService, ProductConfigService>();
|
builder.Services.AddScoped<IProductConfigService, ProductConfigService>();
|
||||||
builder.Services.AddScoped<IVendorService, VendorService>();
|
builder.Services.AddScoped<IVendorService, VendorService>();
|
||||||
builder.Services.AddScoped<IWarehouseService, WarehouseService>();
|
builder.Services.AddScoped<IWarehouseService, WarehouseService>();
|
||||||
@@ -103,6 +108,7 @@ builder.Services.AddScoped<IGrnService, GrnService>();
|
|||||||
builder.Services.AddScoped<ISalesPricingService, SalesPricingService>();
|
builder.Services.AddScoped<ISalesPricingService, SalesPricingService>();
|
||||||
builder.Services.AddScoped<ISalesInvoiceService, SalesInvoiceService>();
|
builder.Services.AddScoped<ISalesInvoiceService, SalesInvoiceService>();
|
||||||
builder.Services.AddScoped<ISalesSlipService, SalesSlipService>();
|
builder.Services.AddScoped<ISalesSlipService, SalesSlipService>();
|
||||||
|
builder.Services.AddScoped<IBundleSaleService, BundleSaleService>();
|
||||||
builder.Services.AddScoped<ISalesPromotionSuggestionService, SalesPromotionSuggestionService>();
|
builder.Services.AddScoped<ISalesPromotionSuggestionService, SalesPromotionSuggestionService>();
|
||||||
builder.Services.AddScoped<ISalesReportService, SalesReportService>();
|
builder.Services.AddScoped<ISalesReportService, SalesReportService>();
|
||||||
|
|
||||||
@@ -180,6 +186,7 @@ var app = builder.Build();
|
|||||||
using (var scope = app.Services.CreateScope())
|
using (var scope = app.Services.CreateScope())
|
||||||
{
|
{
|
||||||
var db = scope.ServiceProvider.GetRequiredService<ErpDbContext>();
|
var db = scope.ServiceProvider.GetRequiredService<ErpDbContext>();
|
||||||
|
// await EnsureMigrationBaselineAsync(db);
|
||||||
await db.Database.MigrateAsync();
|
await db.Database.MigrateAsync();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -205,3 +212,4 @@ app.UseAuthorization();
|
|||||||
app.MapControllers();
|
app.MapControllers();
|
||||||
app.MapHealthChecks("/health");
|
app.MapHealthChecks("/health");
|
||||||
app.Run();
|
app.Run();
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
using ERPCore.Common.Http;
|
|
||||||
using ERPCore.Dtos.Config;
|
|
||||||
|
|
||||||
namespace ERPCore.Services.Interfaces;
|
|
||||||
|
|
||||||
public interface ICompanyProfileService
|
|
||||||
{
|
|
||||||
Task<ETagged<CompanyProfileDto>> GetAsync(CancellationToken ct = default);
|
|
||||||
Task<ETagged<CompanyProfileDto>> UpdateAsync(UpdateCompanyProfileRequest request, uint expectedRowVersion, CancellationToken ct = default);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user