Sloving the Mearge conflict
This commit is contained in:
commit
f97a59994e
File diff suppressed because one or more lines are too long
@ -1274,7 +1274,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1295,7 +1295,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
columns: new[] { "Id", "ColorCode", "Description", "IsDefault", "Name", "TenantId" },
|
columns: new[] { "Id", "ColorCode", "Description", "IsDefault", "Name", "TenantId" },
|
||||||
values: new object[,]
|
values: new object[,]
|
||||||
{
|
{
|
||||||
{ new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"), "#6c757d", "These issues are currently under review", true, "In Review", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
{ new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"), "#8592a3", "These issues are currently under review", true, "In Review", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
{ new Guid("6b0c409b-3e80-4165-8b39-f3fcacb4c797"), "#FFCC99", "This is a newly created issue.", true, "New", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
{ new Guid("6b0c409b-3e80-4165-8b39-f3fcacb4c797"), "#FFCC99", "This is a newly created issue.", true, "New", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
{ new Guid("6c5ac37d-5b7d-40f3-adec-2dabaa5cca86"), "#E6FF99", "Assigned to employee or team of employees", true, "Assigned", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
{ new Guid("6c5ac37d-5b7d-40f3-adec-2dabaa5cca86"), "#E6FF99", "Assigned to employee or team of employees", true, "Assigned", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
{ new Guid("7f96bcd5-0c66-411b-8a1d-9d1a4785194e"), "#99E6FF", "These issues are currently in progress", true, "In Progress", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
{ new Guid("7f96bcd5-0c66-411b-8a1d-9d1a4785194e"), "#99E6FF", "These issues are currently in progress", true, "In Progress", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
@ -1216,7 +1216,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1222,7 +1222,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1299,7 +1299,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1299,7 +1299,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1267,7 +1267,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1602,7 +1602,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1626,7 +1626,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1593,7 +1593,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1633,7 +1633,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1358,7 +1358,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1366,7 +1366,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1425,7 +1425,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1425,7 +1425,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1428,7 +1428,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1428,7 +1428,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1811,7 +1811,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1835,7 +1835,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1835,7 +1835,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1817,7 +1817,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1857,7 +1857,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1857,7 +1857,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1857,7 +1857,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
@ -1862,7 +1862,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
Id = new Guid("5c72b630-6923-4215-bf2c-b1622afd76e7"),
|
||||||
ColorCode = "#6c757d",
|
ColorCode = "#8592a3",
|
||||||
Description = "These issues are currently under review",
|
Description = "These issues are currently under review",
|
||||||
IsDefault = true,
|
IsDefault = true,
|
||||||
Name = "In Review",
|
Name = "In Review",
|
||||||
|
3419
Marco.Pms.DataAccess/Migrations/20250702045931_Added_Designation_Paraneter_In_Contacts_Table.Designer.cs
generated
Normal file
3419
Marco.Pms.DataAccess/Migrations/20250702045931_Added_Designation_Paraneter_In_Contacts_Table.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_Designation_Paraneter_In_Contacts_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "Designation",
|
||||||
|
table: "Contacts",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Designation",
|
||||||
|
table: "Contacts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4345
Marco.Pms.DataAccess/Migrations/20250721124928_Added_Expense_Related_Tables.Designer.cs
generated
Normal file
4345
Marco.Pms.DataAccess/Migrations/20250721124928_Added_Expense_Related_Tables.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,664 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_Expense_Related_Tables : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpensesReimburse",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ReimburseTransactionId = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
ReimburseDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
ReimburseById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ReimburseNote = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpensesReimburse", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesReimburse_Employees_ReimburseById",
|
||||||
|
column: x => x.ReimburseById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesReimburse_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpensesStatusMaster",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Name = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
DisplayName = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Color = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
IsSystem = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpensesStatusMaster", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMaster_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpensesTypeMaster",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Name = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
NoOfPersonsRequired = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpensesTypeMaster", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesTypeMaster_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "PaymentModeMatser",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Name = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_PaymentModeMatser", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_PaymentModeMatser_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpensesStatusMapping",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
StatusId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
NextStatusId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpensesStatusMapping", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMapping_ExpensesStatusMaster_NextStatusId",
|
||||||
|
column: x => x.NextStatusId,
|
||||||
|
principalTable: "ExpensesStatusMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMapping_ExpensesStatusMaster_StatusId",
|
||||||
|
column: x => x.StatusId,
|
||||||
|
principalTable: "ExpensesStatusMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMapping_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "StatusPermissionMapping",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
StatusId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PermissionId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_StatusPermissionMapping", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_StatusPermissionMapping_ExpensesStatusMaster_StatusId",
|
||||||
|
column: x => x.StatusId,
|
||||||
|
principalTable: "ExpensesStatusMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_StatusPermissionMapping_FeaturePermissions_PermissionId",
|
||||||
|
column: x => x.PermissionId,
|
||||||
|
principalTable: "FeaturePermissions",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_StatusPermissionMapping_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Expenses",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ProjectId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ExpensesTypeId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PaymentModeId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PaidById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
TransactionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
TransactionId = table.Column<string>(type: "longtext", nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Location = table.Column<string>(type: "longtext", nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
GSTNumber = table.Column<string>(type: "longtext", nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
SupplerName = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Amount = table.Column<double>(type: "double", nullable: false),
|
||||||
|
NoOfPersons = table.Column<int>(type: "int", nullable: true),
|
||||||
|
StatusId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PreApproved = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Expenses", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_CreatedById",
|
||||||
|
column: x => x.CreatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_PaidById",
|
||||||
|
column: x => x.PaidById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_ExpensesStatusMaster_StatusId",
|
||||||
|
column: x => x.StatusId,
|
||||||
|
principalTable: "ExpensesStatusMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_ExpensesTypeMaster_ExpensesTypeId",
|
||||||
|
column: x => x.ExpensesTypeId,
|
||||||
|
principalTable: "ExpensesTypeMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_PaymentModeMatser_PaymentModeId",
|
||||||
|
column: x => x.PaymentModeId,
|
||||||
|
principalTable: "PaymentModeMatser",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_Projects_ProjectId",
|
||||||
|
column: x => x.ProjectId,
|
||||||
|
principalTable: "Projects",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Expenses_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "BillAttachments",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ExpensesId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
DocumentId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_BillAttachments", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_BillAttachments_Documents_DocumentId",
|
||||||
|
column: x => x.DocumentId,
|
||||||
|
principalTable: "Documents",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_BillAttachments_Expenses_ExpensesId",
|
||||||
|
column: x => x.ExpensesId,
|
||||||
|
principalTable: "Expenses",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_BillAttachments_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpenseLogs",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ExpenseId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
UpdatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Action = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Comment = table.Column<string>(type: "longtext", nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpenseLogs", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpenseLogs_Employees_UpdatedById",
|
||||||
|
column: x => x.UpdatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpenseLogs_Expenses_ExpenseId",
|
||||||
|
column: x => x.ExpenseId,
|
||||||
|
principalTable: "Expenses",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpenseLogs_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "ExpensesReimburseMapping",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ExpensesId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
ExpensesReimburseId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_ExpensesReimburseMapping", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesReimburseMapping_ExpensesReimburse_ExpensesReimburse~",
|
||||||
|
column: x => x.ExpensesReimburseId,
|
||||||
|
principalTable: "ExpensesReimburse",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesReimburseMapping_Expenses_ExpensesId",
|
||||||
|
column: x => x.ExpensesId,
|
||||||
|
principalTable: "Expenses",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_ExpensesReimburseMapping_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
columns: new[] { "Id", "Color", "Description", "DisplayName", "IsActive", "IsSystem", "Name", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("297e0d8f-f668-41b5-bfea-e03b354251c8"), "#8592a3", "Expense has been created but not yet submitted.", "Draft", true, true, "Draft", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), "#03c3ec", "Review is completed, waiting for action of approver.", "Mark as Reviewed", true, true, "Approval Pending", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("61578360-3a49-4c34-8604-7b35a3787b95"), "#71dd37", "Expense has been settled.", "Mark as Paid", true, true, "Paid", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), "#696cff", "Reviewer is currently reviewing the expense.", "Submit", true, true, "Review Pending", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), "#ff3e1d", "Expense was declined, often with a reason(either review rejected or approval rejected.", "Reject", true, true, "Rejected", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"), "#ffab00", "Approved expense is awaiting final payment.", "Mark as Approved", true, true, "Payment Pending", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesTypeMaster",
|
||||||
|
columns: new[] { "Id", "Description", "IsActive", "Name", "NoOfPersonsRequired", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("1e2d697a-76b4-4be8-bc66-87144561a1a0"), "Scheduled payments for external services or goods.", true, "Vendor/Supplier Payments", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("2de53163-0dbd-404b-8e60-1b02e6b4886a"), "Vehicle fuel, logistics services and delivery of goods or personnel.", true, "Transport", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("4842fa61-64eb-4241-aebd-8282065af9f9"), "Government fees, insurance, inspections and safety-related expenditures.", true, "Compliance & Safety", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("52484820-1b54-4865-8f0f-baa2b1d339b9"), "Site setup costs including equipment deployment and temporary infrastructure.", true, "Mobilization", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("5e0c6227-d49d-41ff-9f1f-781f0aee2469"), "Materials, equipment and supplies purchased for site operations.", true, "Procurement", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("77013784-9324-4d8b-bd36-d6f928e68942"), "Machinery servicing, electricity, water, and temporary office needs.", true, "Maintenance & Utilities", false, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("dd120bc4-ab0a-45ba-8450-5cd45ff221ca"), "Delivery of personnel.", true, "Travelling", true, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("fc59eb90-98ea-481c-b421-54bfa9e42d8f"), " Worker amenities like snacks, meals, safety gear, accommodation, medical support etc.", true, "Employee Welfare", true, new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Features",
|
||||||
|
columns: new[] { "Id", "Description", "IsActive", "ModuleId", "Name" },
|
||||||
|
values: new object[] { new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), "Expense Management is the systematic process of tracking, controlling, and reporting business-related expenditures.", true, new Guid("bf59fd88-b57a-4d67-bf01-3780f385896b"), "Expense Management" });
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "PaymentModeMatser",
|
||||||
|
columns: new[] { "Id", "Description", "IsActive", "Name", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("24e6b0df-7929-47d2-88a3-4cf14c1f28f9"), "Physical currency; still used for small or informal transactions.", true, "Cash", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("2e919e94-694c-41d9-9489-0a2b4208a027"), "Real-time bank-to-bank transfer using mobile apps; widely used for peer-to-peer and merchant payments.", true, "UPI", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("48d9b462-5d87-4dec-8dec-2bc943943172"), "Paper-based payment order; less common now due to processing delays and fraud risks.", true, "Cheque", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("ed667353-8eea-4fd1-8750-719405932480"), "Online banking portals used to transfer funds directly between accounts", true, "NetBanking", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
columns: new[] { "Id", "NextStatusId", "StatusId", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("1fca1700-1266-477d-bba4-9ac3753aa33c"), new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("36c00548-241c-43ec-bc95-cacebedb925c"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("5cf7f1df-9d1f-4289-add0-1775ad614f25"), new Guid("61578360-3a49-4c34-8604-7b35a3787b95"), new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("75bbda6a-6a53-47d1-ad71-5f5f9446a11e"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("af1e4492-98ee-4451-8ab7-fd8323f29c32"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("297e0d8f-f668-41b5-bfea-e03b354251c8"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("ef1fcfbc-60e0-4f17-9308-c583a05d48fd"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("fddaaf20-4ccc-4f4e-a724-dd310272b356"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
columns: new[] { "Id", "Description", "FeatureId", "IsEnabled", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("01e06444-9ca7-4df4-b900-8c3fa051b92f"), "Allows a user to view all expense records across the organization or project, regardless of who submitted or paid them", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "View All" },
|
||||||
|
{ new Guid("0f57885d-bcb2-4711-ac95-d841ace6d5a7"), "Allows a user to create and submit new expense records, including attaching relevant documents like receipts or invoices.", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "Upload" },
|
||||||
|
{ new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), "Allows a user to examine submitted expenses for accuracy, completeness, and policy compliance before they are approved or rejected.", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "Review" },
|
||||||
|
{ new Guid("385be49f-8fde-440e-bdbc-3dffeb8dd116"), "Allows a user to view only the expense records that they have personally submitted", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "View Self" },
|
||||||
|
{ new Guid("bdee29a2-b73b-402d-8dd1-c4b1f81ccbc3"), "Allows a user to configure and control system settings, such as managing expense types, payment modes, permissions, and overall workflow rules.", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "Manage" },
|
||||||
|
{ new Guid("ea5a1529-4ee8-4828-80ea-0e23c9d4dd11"), "Allows a user to handle post-approval actions such as recording payments, updating financial records, or marking expenses as reimbursed or settled.", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "Process" },
|
||||||
|
{ new Guid("eaafdd76-8aac-45f9-a530-315589c6deca"), "Allows a user to authorize or reject submitted expenses, making them officially accepted or declined within the system.", new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"), true, "Approve" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
columns: new[] { "Id", "PermissionId", "StatusId", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("214354e5-daad-4569-ad69-eb5bf4e87fbc"), new Guid("ea5a1529-4ee8-4828-80ea-0e23c9d4dd11"), new Guid("61578360-3a49-4c34-8604-7b35a3787b95"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("4652d73f-fc71-4fe1-9f2f-1e48b342d741"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("cd15f9b9-be45-4deb-9c71-2f23f872dbcd"), new Guid("eaafdd76-8aac-45f9-a530-315589c6deca"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("ed893799-1a5f-4311-a077-de93c86ca8fd"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("f6f26b2f-2fa6-40b7-8601-cbd4bcdda0cc"), new Guid("eaafdd76-8aac-45f9-a530-315589c6deca"), new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_BillAttachments_DocumentId",
|
||||||
|
table: "BillAttachments",
|
||||||
|
column: "DocumentId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_BillAttachments_ExpensesId",
|
||||||
|
table: "BillAttachments",
|
||||||
|
column: "ExpensesId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_BillAttachments_TenantId",
|
||||||
|
table: "BillAttachments",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpenseLogs_ExpenseId",
|
||||||
|
table: "ExpenseLogs",
|
||||||
|
column: "ExpenseId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpenseLogs_TenantId",
|
||||||
|
table: "ExpenseLogs",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpenseLogs_UpdatedById",
|
||||||
|
table: "ExpenseLogs",
|
||||||
|
column: "UpdatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_CreatedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "CreatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_ExpensesTypeId",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ExpensesTypeId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_PaidById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "PaidById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_PaymentModeId",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "PaymentModeId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_ProjectId",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ProjectId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_StatusId",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "StatusId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_TenantId",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesReimburse_ReimburseById",
|
||||||
|
table: "ExpensesReimburse",
|
||||||
|
column: "ReimburseById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesReimburse_TenantId",
|
||||||
|
table: "ExpensesReimburse",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesReimburseMapping_ExpensesId",
|
||||||
|
table: "ExpensesReimburseMapping",
|
||||||
|
column: "ExpensesId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesReimburseMapping_ExpensesReimburseId",
|
||||||
|
table: "ExpensesReimburseMapping",
|
||||||
|
column: "ExpensesReimburseId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesReimburseMapping_TenantId",
|
||||||
|
table: "ExpensesReimburseMapping",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMapping_NextStatusId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
column: "NextStatusId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMapping_StatusId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
column: "StatusId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMapping_TenantId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMaster_TenantId",
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesTypeMaster_TenantId",
|
||||||
|
table: "ExpensesTypeMaster",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_PaymentModeMatser_TenantId",
|
||||||
|
table: "PaymentModeMatser",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_StatusPermissionMapping_PermissionId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
column: "PermissionId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_StatusPermissionMapping_StatusId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
column: "StatusId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_StatusPermissionMapping_TenantId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
column: "TenantId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "BillAttachments");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpenseLogs");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpensesReimburseMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpensesStatusMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "StatusPermissionMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpensesReimburse");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpensesStatusMaster");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "ExpensesTypeMaster");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "PaymentModeMatser");
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("01e06444-9ca7-4df4-b900-8c3fa051b92f"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("0f57885d-bcb2-4711-ac95-d841ace6d5a7"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("385be49f-8fde-440e-bdbc-3dffeb8dd116"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("bdee29a2-b73b-402d-8dd1-c4b1f81ccbc3"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("ea5a1529-4ee8-4828-80ea-0e23c9d4dd11"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "FeaturePermissions",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("eaafdd76-8aac-45f9-a530-315589c6deca"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "Features",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("a4e25142-449b-4334-a6e5-22f70e4732d7"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4346
Marco.Pms.DataAccess/Migrations/20250730063711_Change_ExpenseStatus_To_Be_System_Scope.Designer.cs
generated
Normal file
4346
Marco.Pms.DataAccess/Migrations/20250730063711_Change_ExpenseStatus_To_Be_System_Scope.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,437 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Change_ExpenseStatus_To_Be_System_Scope : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMapping_Tenants_TenantId",
|
||||||
|
table: "ExpensesStatusMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMaster_Tenants_TenantId",
|
||||||
|
table: "ExpensesStatusMaster");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_StatusPermissionMapping_Tenants_TenantId",
|
||||||
|
table: "StatusPermissionMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_StatusPermissionMapping_TenantId",
|
||||||
|
table: "StatusPermissionMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_ExpensesStatusMaster_TenantId",
|
||||||
|
table: "ExpensesStatusMaster");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_ExpensesStatusMapping_TenantId",
|
||||||
|
table: "ExpensesStatusMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("75bbda6a-6a53-47d1-ad71-5f5f9446a11e"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("fddaaf20-4ccc-4f4e-a724-dd310272b356"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("4652d73f-fc71-4fe1-9f2f-1e48b342d741"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("ed893799-1a5f-4311-a077-de93c86ca8fd"));
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "StatusPermissionMapping");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "ExpensesStatusMaster");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "ExpensesStatusMapping");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "ApprovedById",
|
||||||
|
table: "Expenses",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "ProcessedById",
|
||||||
|
table: "Expenses",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "ReviewedById",
|
||||||
|
table: "Expenses",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
columns: new[] { "Id", "NextStatusId", "StatusId" },
|
||||||
|
values: new object[] { new Guid("4ddddc10-0ffd-4884-accf-d4fa0bd97f54"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729") });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("61578360-3a49-4c34-8604-7b35a3787b95"),
|
||||||
|
columns: new[] { "DisplayName", "Name" },
|
||||||
|
values: new object[] { "Mark as Processed", "Processed" });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"),
|
||||||
|
columns: new[] { "Description", "Name" },
|
||||||
|
values: new object[] { "Expense was declined, often with a reason(approval rejected).", "Rejected by Approver" });
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
columns: new[] { "Id", "Color", "Description", "DisplayName", "IsActive", "IsSystem", "Name" },
|
||||||
|
values: new object[] { new Guid("965eda62-7907-4963-b4a1-657fb0b2724b"), "#ff3e1d", "Expense was declined, often with a reason(review rejected).", "Reject", true, true, "Rejected by Reviewer" });
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
columns: new[] { "Id", "PermissionId", "StatusId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("0b7926fc-a34b-4a5b-8c7d-1003480cf0fa"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8") },
|
||||||
|
{ new Guid("722b0c3c-5a78-456d-b9bb-b6ba1b21d59b"), new Guid("0f57885d-bcb2-4711-ac95-d841ace6d5a7"), new Guid("297e0d8f-f668-41b5-bfea-e03b354251c8") },
|
||||||
|
{ new Guid("7deb0945-e1c9-411f-8b3c-c9bdbe3c3c2d"), new Guid("0f57885d-bcb2-4711-ac95-d841ace6d5a7"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
columns: new[] { "Id", "NextStatusId", "StatusId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("6b867bec-66e6-42a7-9611-f4595af9b9ce"), new Guid("965eda62-7907-4963-b4a1-657fb0b2724b"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7") },
|
||||||
|
{ new Guid("9e2ec648-1ca2-4747-9329-e911b18edb3e"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("965eda62-7907-4963-b4a1-657fb0b2724b") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
columns: new[] { "Id", "PermissionId", "StatusId" },
|
||||||
|
values: new object[] { new Guid("9e2ec648-1ca2-4747-9329-e911b18edb3e"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("965eda62-7907-4963-b4a1-657fb0b2724b") });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_ApprovedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ApprovedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_ProcessedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ProcessedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Expenses_ReviewedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ReviewedById");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ApprovedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ApprovedById",
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ProcessedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ProcessedById",
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ReviewedById",
|
||||||
|
table: "Expenses",
|
||||||
|
column: "ReviewedById",
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ApprovedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ProcessedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Expenses_Employees_ReviewedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_Expenses_ApprovedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_Expenses_ProcessedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_Expenses_ReviewedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("4ddddc10-0ffd-4884-accf-d4fa0bd97f54"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("6b867bec-66e6-42a7-9611-f4595af9b9ce"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("9e2ec648-1ca2-4747-9329-e911b18edb3e"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("0b7926fc-a34b-4a5b-8c7d-1003480cf0fa"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("722b0c3c-5a78-456d-b9bb-b6ba1b21d59b"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("7deb0945-e1c9-411f-8b3c-c9bdbe3c3c2d"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("9e2ec648-1ca2-4747-9329-e911b18edb3e"));
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("965eda62-7907-4963-b4a1-657fb0b2724b"));
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ApprovedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ProcessedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ReviewedById",
|
||||||
|
table: "Expenses");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("1fca1700-1266-477d-bba4-9ac3753aa33c"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("36c00548-241c-43ec-bc95-cacebedb925c"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("5cf7f1df-9d1f-4289-add0-1775ad614f25"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("af1e4492-98ee-4451-8ab7-fd8323f29c32"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("ef1fcfbc-60e0-4f17-9308-c583a05d48fd"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
columns: new[] { "Id", "NextStatusId", "StatusId", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("75bbda6a-6a53-47d1-ad71-5f5f9446a11e"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("fddaaf20-4ccc-4f4e-a724-dd310272b356"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("297e0d8f-f668-41b5-bfea-e03b354251c8"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("61578360-3a49-4c34-8604-7b35a3787b95"),
|
||||||
|
columns: new[] { "DisplayName", "Name", "TenantId" },
|
||||||
|
values: new object[] { "Mark as Paid", "Paid", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("6537018f-f4e9-4cb3-a210-6c3b2da999d7"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"),
|
||||||
|
columns: new[] { "Description", "Name", "TenantId" },
|
||||||
|
values: new object[] { "Expense was declined, often with a reason(either review rejected or approval rejected.", "Rejected", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("f18c5cfd-7815-4341-8da2-2c2d65778e27"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("214354e5-daad-4569-ad69-eb5bf4e87fbc"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("cd15f9b9-be45-4deb-9c71-2f23f872dbcd"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("f6f26b2f-2fa6-40b7-8601-cbd4bcdda0cc"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
columns: new[] { "Id", "PermissionId", "StatusId", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("4652d73f-fc71-4fe1-9f2f-1e48b342d741"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("d1ee5eec-24b6-4364-8673-a8f859c60729"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("ed893799-1a5f-4311-a077-de93c86ca8fd"), new Guid("1f4bda08-1873-449a-bb66-3e8222bd871b"), new Guid("4068007f-c92f-4f37-a907-bc15fe57d4d8"), new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_StatusPermissionMapping_TenantId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMaster_TenantId",
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_ExpensesStatusMapping_TenantId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMapping_Tenants_TenantId",
|
||||||
|
table: "ExpensesStatusMapping",
|
||||||
|
column: "TenantId",
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_ExpensesStatusMaster_Tenants_TenantId",
|
||||||
|
table: "ExpensesStatusMaster",
|
||||||
|
column: "TenantId",
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_StatusPermissionMapping_Tenants_TenantId",
|
||||||
|
table: "StatusPermissionMapping",
|
||||||
|
column: "TenantId",
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4430
Marco.Pms.DataAccess/Migrations/20250730070549_Added_CurrencyMaster_Table.Designer.cs
generated
Normal file
4430
Marco.Pms.DataAccess/Migrations/20250730070549_Added_CurrencyMaster_Table.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,57 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_CurrencyMaster_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CurrencyMaster",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CurrencyCode = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
CurrencyName = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Symbol = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CurrencyMaster", x => x.Id);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "CurrencyMaster",
|
||||||
|
columns: new[] { "Id", "CurrencyCode", "CurrencyName", "IsActive", "Symbol" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("297e237a-56d3-48f6-b39d-ec3991dea8bf"), "JPY", "Japanese Yen", true, "¥" },
|
||||||
|
{ new Guid("2f672568-a67b-4961-acb2-a8c7834e1762"), "USD", "US Dollar", true, "$" },
|
||||||
|
{ new Guid("3e456237-ef06-4ea1-a261-188c9b0c6df6"), "GBP", "Pound Sterling", true, "£" },
|
||||||
|
{ new Guid("4d1155bb-1448-4d97-a732-96c92eb99c45"), "EUR", "Euro", true, "€" },
|
||||||
|
{ new Guid("78e96e4a-7ce0-4164-ae3a-c833ad45ec2c"), "INR", "Indian Rupee", true, "₹" },
|
||||||
|
{ new Guid("b960166a-f7e9-49e3-bb4b-28511f126c08"), "CNY", "Chinese Yuan (Renminbi)", true, "¥" },
|
||||||
|
{ new Guid("efe9b4f6-64d6-446e-a42d-1c7aaf6dd70d"), "RUB", "Russian Ruble", true, "₽" }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CurrencyMaster");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3547
Marco.Pms.DataAccess/Migrations/20250731100859_Added_New_Parameters_In_Tenant_Table.Designer.cs
generated
Normal file
3547
Marco.Pms.DataAccess/Migrations/20250731100859_Added_New_Parameters_In_Tenant_Table.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3550
Marco.Pms.DataAccess/Migrations/20250801101253_Added_New_Parameter_In_Tenant_Table.Designer.cs
generated
Normal file
3550
Marco.Pms.DataAccess/Migrations/20250801101253_Added_New_Parameter_In_Tenant_Table.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_New_Parameter_In_Tenant_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "OfficeNumber",
|
||||||
|
table: "Tenants",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Tenants",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"),
|
||||||
|
column: "OfficeNumber",
|
||||||
|
value: null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "OfficeNumber",
|
||||||
|
table: "Tenants");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3550
Marco.Pms.DataAccess/Migrations/20250801111158_Fixed_Spelling_Mistake_In_Tenant_Table.Designer.cs
generated
Normal file
3550
Marco.Pms.DataAccess/Migrations/20250801111158_Fixed_Spelling_Mistake_In_Tenant_Table.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Fixed_Spelling_Mistake_In_Tenant_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "OragnizationSize",
|
||||||
|
table: "Tenants",
|
||||||
|
newName: "OrganizationSize");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "OrganizationSize",
|
||||||
|
table: "Tenants",
|
||||||
|
newName: "OragnizationSize");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4437
Marco.Pms.DataAccess/Migrations/20250804053705_Added_Updated_At_In_UpdateLogs.Designer.cs
generated
Normal file
4437
Marco.Pms.DataAccess/Migrations/20250804053705_Added_Updated_At_In_UpdateLogs.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_Updated_At_In_UpdateLogs : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "UpdateAt",
|
||||||
|
table: "ExpenseLogs",
|
||||||
|
type: "datetime(6)",
|
||||||
|
nullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "UpdateAt",
|
||||||
|
table: "ExpenseLogs");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3872
Marco.Pms.DataAccess/Migrations/20250804061007_Added_Subscription_Related_Tables.Designer.cs
generated
Normal file
3872
Marco.Pms.DataAccess/Migrations/20250804061007_Added_Subscription_Related_Tables.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,207 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Added_Subscription_Related_Tables : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "SubscriptionStatus",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Name = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_SubscriptionStatus", x => x.Id);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "SubscriptionPlans",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PlanName = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
PriceQuarterly = table.Column<double>(type: "double", nullable: false),
|
||||||
|
PriceMonthly = table.Column<double>(type: "double", nullable: false),
|
||||||
|
PriceHalfMonthly = table.Column<double>(type: "double", nullable: false),
|
||||||
|
PriceYearly = table.Column<double>(type: "double", nullable: false),
|
||||||
|
TrialDays = table.Column<int>(type: "int", nullable: false),
|
||||||
|
MaxUser = table.Column<double>(type: "double", nullable: false),
|
||||||
|
MaxStorage = table.Column<double>(type: "double", nullable: false),
|
||||||
|
FeaturesId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CreateAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
UpdateAt = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
||||||
|
CurrencyId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
UpdatedById = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_SubscriptionPlans", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_CurrencyMaster_CurrencyId",
|
||||||
|
column: x => x.CurrencyId,
|
||||||
|
principalTable: "CurrencyMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_CreatedById",
|
||||||
|
column: x => x.CreatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_UpdatedById",
|
||||||
|
column: x => x.UpdatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TenantSubscriptions",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
PlanId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
StartDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
EndDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
IsTrial = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
StatusId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CurrencyId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
NextBillingDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
CancellationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
||||||
|
AutoRemew = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
UpdateAt = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
||||||
|
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
UpdatedById = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
||||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TenantSubscriptions", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_CurrencyMaster_CurrencyId",
|
||||||
|
column: x => x.CurrencyId,
|
||||||
|
principalTable: "CurrencyMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_Employees_CreatedById",
|
||||||
|
column: x => x.CreatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_Employees_UpdatedById",
|
||||||
|
column: x => x.UpdatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionPlans_PlanId",
|
||||||
|
column: x => x.PlanId,
|
||||||
|
principalTable: "SubscriptionPlans",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionStatus_StatusId",
|
||||||
|
column: x => x.StatusId,
|
||||||
|
principalTable: "SubscriptionStatus",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "SubscriptionStatus",
|
||||||
|
columns: new[] { "Id", "Name" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("1c0e422e-01b6-412f-b72a-1db004cc8a7f"), "Suspended" },
|
||||||
|
{ new Guid("4ed487b1-af22-4e25-aecd-b63fd850cf2d"), "InActive" },
|
||||||
|
{ new Guid("cd3a68ea-41fd-42f0-bd0c-c871c7337727"), "Active" }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CreatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CreatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CurrencyId",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CurrencyId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_UpdatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "UpdatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_CreatedById",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "CreatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_CurrencyId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "CurrencyId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_PlanId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "PlanId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_StatusId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "StatusId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_TenantId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TenantSubscriptions_UpdatedById",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "UpdatedById");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TenantSubscriptions");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "SubscriptionStatus");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3872
Marco.Pms.DataAccess/Migrations/20250804063600_Corrected_Typo_In_Subscription_Table.Designer.cs
generated
Normal file
3872
Marco.Pms.DataAccess/Migrations/20250804063600_Corrected_Typo_In_Subscription_Table.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Corrected_Typo_In_Subscription_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "AutoRemew",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
newName: "AutoRenew");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "AutoRenew",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
newName: "AutoRemew");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3872
Marco.Pms.DataAccess/Migrations/20250804064532_Corrected_Typo_In_SubscriptionPlan_Table.Designer.cs
generated
Normal file
3872
Marco.Pms.DataAccess/Migrations/20250804064532_Corrected_Typo_In_SubscriptionPlan_Table.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Corrected_Typo_In_SubscriptionPlan_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "PriceHalfMonthly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
newName: "PriceHalfYearly");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "PriceHalfYearly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
newName: "PriceHalfMonthly");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,411 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Seprated_SubscriptionPlan_And_SubscriptionPlanDetails : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_StatusMasters_Tenants_TenantId",
|
||||||
|
table: "StatusMasters");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_CurrencyMaster_CurrencyId",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_CreatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_UpdatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionPlans_PlanId",
|
||||||
|
table: "TenantSubscriptions");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CreatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CurrencyId",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_SubscriptionPlans_UpdatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_StatusMasters_TenantId",
|
||||||
|
table: "StatusMasters");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CreateAt",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CreatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CurrencyId",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "FeaturesId",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MaxStorage",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MaxUser",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "PriceHalfYearly",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "PriceMonthly",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "PriceQuarterly",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "PriceYearly",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TrialDays",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "UpdateAt",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "UpdatedById",
|
||||||
|
table: "SubscriptionPlans");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "StatusMasters");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsCancelled",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
type: "tinyint(1)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "MaxUsers",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "SubscriptionPlanDetails",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
Price = table.Column<double>(type: "double", nullable: false),
|
||||||
|
Frequency = table.Column<int>(type: "int", nullable: false),
|
||||||
|
TrialDays = table.Column<int>(type: "int", nullable: false),
|
||||||
|
MaxUser = table.Column<double>(type: "double", nullable: false),
|
||||||
|
MaxStorage = table.Column<double>(type: "double", nullable: false),
|
||||||
|
FeaturesId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CreateAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
UpdateAt = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
||||||
|
PlanId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CurrencyId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
||||||
|
UpdatedById = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
||||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_SubscriptionPlanDetails", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlanDetails_CurrencyMaster_CurrencyId",
|
||||||
|
column: x => x.CurrencyId,
|
||||||
|
principalTable: "CurrencyMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlanDetails_Employees_CreatedById",
|
||||||
|
column: x => x.CreatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlanDetails_Employees_UpdatedById",
|
||||||
|
column: x => x.UpdatedById,
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubscriptionPlanDetails_SubscriptionPlans_PlanId",
|
||||||
|
column: x => x.PlanId,
|
||||||
|
principalTable: "SubscriptionPlans",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlanDetails_CreatedById",
|
||||||
|
table: "SubscriptionPlanDetails",
|
||||||
|
column: "CreatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlanDetails_CurrencyId",
|
||||||
|
table: "SubscriptionPlanDetails",
|
||||||
|
column: "CurrencyId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlanDetails_PlanId",
|
||||||
|
table: "SubscriptionPlanDetails",
|
||||||
|
column: "PlanId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlanDetails_UpdatedById",
|
||||||
|
table: "SubscriptionPlanDetails",
|
||||||
|
column: "UpdatedById");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionPlanDetails_PlanId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "PlanId",
|
||||||
|
principalTable: "SubscriptionPlanDetails",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionPlanDetails_PlanId",
|
||||||
|
table: "TenantSubscriptions");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "SubscriptionPlanDetails");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsCancelled",
|
||||||
|
table: "TenantSubscriptions");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MaxUsers",
|
||||||
|
table: "TenantSubscriptions");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "CreateAt",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "datetime(6)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "CreatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "CurrencyId",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "FeaturesId",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "MaxStorage",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "MaxUser",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "PriceHalfYearly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "PriceMonthly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "PriceQuarterly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<double>(
|
||||||
|
name: "PriceYearly",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "double",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0.0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "TrialDays",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "UpdateAt",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "datetime(6)",
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "UpdatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "TenantId",
|
||||||
|
table: "StatusMasters",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusMasters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("33deaef9-9af1-4f2a-b443-681ea0d04f81"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusMasters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("603e994b-a27f-4e5d-a251-f3d69b0498ba"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusMasters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("b74da4c2-d07e-46f2-9919-e75e49b12731"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusMasters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("cdad86aa-8a56-4ff4-b633-9c629057dfef"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "StatusMasters",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: new Guid("ef1c356e-0fe0-42df-a5d3-8daee355492d"),
|
||||||
|
column: "TenantId",
|
||||||
|
value: new Guid("b3466e83-7e11-464c-b93a-daf047838b26"));
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CreatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CreatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_CurrencyId",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CurrencyId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_SubscriptionPlans_UpdatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "UpdatedById");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_StatusMasters_TenantId",
|
||||||
|
table: "StatusMasters",
|
||||||
|
column: "TenantId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_StatusMasters_Tenants_TenantId",
|
||||||
|
table: "StatusMasters",
|
||||||
|
column: "TenantId",
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_CurrencyMaster_CurrencyId",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CurrencyId",
|
||||||
|
principalTable: "CurrencyMaster",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_CreatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "CreatedById",
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_SubscriptionPlans_Employees_UpdatedById",
|
||||||
|
table: "SubscriptionPlans",
|
||||||
|
column: "UpdatedById",
|
||||||
|
principalTable: "Employees",
|
||||||
|
principalColumn: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_TenantSubscriptions_SubscriptionPlans_PlanId",
|
||||||
|
table: "TenantSubscriptions",
|
||||||
|
column: "PlanId",
|
||||||
|
principalTable: "SubscriptionPlans",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -1,9 +1,9 @@
|
|||||||
using Marco.Pms.Model.MongoDBModels;
|
using Marco.Pms.Model.MongoDBModels.Employees;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
|
|
||||||
namespace Marco.Pms.CacheHelper
|
namespace Marco.Pms.Helpers.CacheHelper
|
||||||
{
|
{
|
||||||
public class EmployeeCache
|
public class EmployeeCache
|
||||||
{
|
{
|
||||||
@ -27,6 +27,7 @@ namespace Marco.Pms.CacheHelper
|
|||||||
|
|
||||||
var update = Builders<EmployeePermissionMongoDB>.Update
|
var update = Builders<EmployeePermissionMongoDB>.Update
|
||||||
.AddToSetEach(e => e.ApplicationRoleIds, newRoleIds)
|
.AddToSetEach(e => e.ApplicationRoleIds, newRoleIds)
|
||||||
|
.Set(r => r.ExpireAt, DateTime.UtcNow.Date.AddDays(1))
|
||||||
.AddToSetEach(e => e.PermissionIds, newPermissionIds);
|
.AddToSetEach(e => e.PermissionIds, newPermissionIds);
|
||||||
|
|
||||||
var options = new UpdateOptions { IsUpsert = true };
|
var options = new UpdateOptions { IsUpsert = true };
|
||||||
@ -46,6 +47,7 @@ namespace Marco.Pms.CacheHelper
|
|||||||
var filter = Builders<EmployeePermissionMongoDB>.Filter.Eq(e => e.Id, employeeId.ToString());
|
var filter = Builders<EmployeePermissionMongoDB>.Filter.Eq(e => e.Id, employeeId.ToString());
|
||||||
|
|
||||||
var update = Builders<EmployeePermissionMongoDB>.Update
|
var update = Builders<EmployeePermissionMongoDB>.Update
|
||||||
|
.Set(r => r.ExpireAt, DateTime.UtcNow.Date.AddDays(1))
|
||||||
.AddToSetEach(e => e.ProjectIds, newprojectIds);
|
.AddToSetEach(e => e.ProjectIds, newprojectIds);
|
||||||
|
|
||||||
var result = await _collection.UpdateOneAsync(filter, update, new UpdateOptions { IsUpsert = true });
|
var result = await _collection.UpdateOneAsync(filter, update, new UpdateOptions { IsUpsert = true });
|
||||||
@ -187,17 +189,12 @@ namespace Marco.Pms.CacheHelper
|
|||||||
// A private method to handle the one-time setup of the collection's indexes.
|
// A private method to handle the one-time setup of the collection's indexes.
|
||||||
private async Task InitializeCollectionAsync()
|
private async Task InitializeCollectionAsync()
|
||||||
{
|
{
|
||||||
// 1. Define the TTL (Time-To-Live) index on the 'ExpireAt' field.
|
|
||||||
var indexKeys = Builders<EmployeePermissionMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
var indexKeys = Builders<EmployeePermissionMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
||||||
var indexOptions = new CreateIndexOptions
|
var indexOptions = new CreateIndexOptions
|
||||||
{
|
{
|
||||||
// This tells MongoDB to automatically delete documents when their 'ExpireAt' time is reached.
|
ExpireAfter = TimeSpan.Zero // required for fixed expiration time
|
||||||
ExpireAfter = TimeSpan.FromSeconds(0)
|
|
||||||
};
|
};
|
||||||
var indexModel = new CreateIndexModel<EmployeePermissionMongoDB>(indexKeys, indexOptions);
|
var indexModel = new CreateIndexModel<EmployeePermissionMongoDB>(indexKeys, indexOptions);
|
||||||
|
|
||||||
// 2. Create the index. This is an idempotent operation if the index already exists.
|
|
||||||
// Use CreateOneAsync since we are only creating a single index.
|
|
||||||
await _collection.Indexes.CreateOneAsync(indexModel);
|
await _collection.Indexes.CreateOneAsync(indexModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
178
Marco.Pms.Helpers/CacheHelper/ExpenseCache.cs
Normal file
178
Marco.Pms.Helpers/CacheHelper/ExpenseCache.cs
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
using Marco.Pms.Model.MongoDBModels.Expenses;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using MongoDB.Bson;
|
||||||
|
using MongoDB.Driver;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Helpers.CacheHelper
|
||||||
|
{
|
||||||
|
public class ExpenseCache
|
||||||
|
{
|
||||||
|
private readonly IMongoCollection<ExpenseDetailsMongoDB> _collection;
|
||||||
|
public ExpenseCache(IConfiguration configuration)
|
||||||
|
{
|
||||||
|
|
||||||
|
var connectionString = configuration["MongoDB:ConnectionString"];
|
||||||
|
var mongoUrl = new MongoUrl(connectionString);
|
||||||
|
var client = new MongoClient(mongoUrl); // Your MongoDB connection string
|
||||||
|
var mongoDB = client.GetDatabase(mongoUrl.DatabaseName); // Your MongoDB Database name
|
||||||
|
_collection = mongoDB.GetCollection<ExpenseDetailsMongoDB>("Expenses");
|
||||||
|
}
|
||||||
|
public async Task AddExpenseToCacheAsync(ExpenseDetailsMongoDB expense)
|
||||||
|
{
|
||||||
|
await _collection.InsertOneAsync(expense);
|
||||||
|
|
||||||
|
await InitializeCollectionAsync();
|
||||||
|
}
|
||||||
|
public async Task AddExpensesListToCacheAsync(List<ExpenseDetailsMongoDB> expenses)
|
||||||
|
{
|
||||||
|
// 1. Add a guard clause to avoid an unnecessary database call for an empty list.
|
||||||
|
if (expenses == null || !expenses.Any())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Perform the insert operation. This is the only responsibility of this method.
|
||||||
|
await _collection.InsertManyAsync(expenses);
|
||||||
|
await InitializeCollectionAsync();
|
||||||
|
}
|
||||||
|
public async Task<(int totalPages, long totalCount, List<ExpenseDetailsMongoDB> expenseList)> GetExpenseListFromCacheAsync(Guid tenantId, Guid loggedInEmployeeId, bool viewAll,
|
||||||
|
bool viewSelf, int pageNumber, int pageSize, ExpensesFilter? expenseFilter, string? searchString)
|
||||||
|
{
|
||||||
|
var filterBuilder = Builders<ExpenseDetailsMongoDB>.Filter;
|
||||||
|
var filter = filterBuilder.Empty;
|
||||||
|
|
||||||
|
// Permission-based filter
|
||||||
|
if (!viewAll && viewSelf)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.Eq(e => e.CreatedBy.Id, loggedInEmployeeId.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.Or(
|
||||||
|
filterBuilder.Eq(e => e.CreatedBy.Id, loggedInEmployeeId.ToString()),
|
||||||
|
filterBuilder.Ne(e => e.Status.Id, "297e0d8f-f668-41b5-bfea-e03b354251c8")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply filters
|
||||||
|
|
||||||
|
if (expenseFilter != null)
|
||||||
|
{
|
||||||
|
if (expenseFilter.StartDate.HasValue && expenseFilter.EndDate.HasValue && expenseFilter.IsTransactionDate == false)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.Gte(e => e.CreatedAt, expenseFilter.StartDate.Value.Date)
|
||||||
|
& filterBuilder.Lte(e => e.CreatedAt, expenseFilter.EndDate.Value.Date.AddDays(1).AddTicks(-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expenseFilter.StartDate.HasValue && expenseFilter.EndDate.HasValue && expenseFilter.IsTransactionDate)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.Gte(e => e.TransactionDate, expenseFilter.StartDate.Value.Date)
|
||||||
|
& filterBuilder.Lte(e => e.TransactionDate, expenseFilter.EndDate.Value.Date.AddDays(1).AddTicks(-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expenseFilter.ProjectIds?.Any() == true)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.In(e => e.Project.Id, expenseFilter.ProjectIds.Select(p => p.ToString()).ToList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expenseFilter.StatusIds?.Any() == true)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.In(e => e.Status.Id, expenseFilter.StatusIds.Select(p => p.ToString()).ToList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expenseFilter.PaidById?.Any() == true)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.In(e => e.PaidBy.Id, expenseFilter.PaidById.Select(p => p.ToString()).ToList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expenseFilter.CreatedByIds?.Any() == true && viewAll)
|
||||||
|
{
|
||||||
|
filter &= filterBuilder.In(e => e.CreatedBy.Id, expenseFilter.CreatedByIds.Select(p => p.ToString()).ToList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchString))
|
||||||
|
{
|
||||||
|
var searchPattern = new BsonRegularExpression(searchString, "i");
|
||||||
|
|
||||||
|
// The base text searches remain the same
|
||||||
|
var searchClauses = new List<FilterDefinition<ExpenseDetailsMongoDB>>
|
||||||
|
{
|
||||||
|
filterBuilder.Regex(e => e.Description, searchPattern),
|
||||||
|
filterBuilder.Regex(e => e.TransactionId, searchPattern)
|
||||||
|
};
|
||||||
|
|
||||||
|
// Build the complex filter for PaidBy.FullName
|
||||||
|
var paidByFilter = new BsonDocument("$expr",
|
||||||
|
new BsonDocument("$regexMatch", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "input", new BsonDocument("$concat", new BsonArray { "$PaidBy.FirstName", " ", "$PaidBy.LastName" }) },
|
||||||
|
{ "regex", searchString }, // BsonRegularExpression can't be used here, pass the string
|
||||||
|
{ "options", "i" } // Case-insensitivity option
|
||||||
|
})
|
||||||
|
);
|
||||||
|
searchClauses.Add(paidByFilter);
|
||||||
|
|
||||||
|
// Build the complex filter for CreatedBy.FullName
|
||||||
|
var createdByFilter = new BsonDocument("$expr",
|
||||||
|
new BsonDocument("$regexMatch", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "input", new BsonDocument("$concat", new BsonArray { "$CreatedBy.FirstName", " ", "$CreatedBy.LastName" }) },
|
||||||
|
{ "regex", searchString },
|
||||||
|
{ "options", "i" }
|
||||||
|
})
|
||||||
|
);
|
||||||
|
searchClauses.Add(createdByFilter);
|
||||||
|
|
||||||
|
// Combine all clauses with an OR
|
||||||
|
filter &= filterBuilder.Or(searchClauses);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Total count
|
||||||
|
var totalCount = await _collection.CountDocumentsAsync(filter);
|
||||||
|
var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
|
||||||
|
|
||||||
|
// Fetch paginated data
|
||||||
|
var expenses = await _collection
|
||||||
|
.Find(filter)
|
||||||
|
.Skip((pageNumber - 1) * pageSize)
|
||||||
|
.Limit(pageSize)
|
||||||
|
.SortByDescending(e => e.CreatedAt)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
return (totalPages, totalCount, expenses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<ExpenseDetailsMongoDB> GetExpenseDetailsByIdAsync(Guid id, Guid tenantId)
|
||||||
|
{
|
||||||
|
var filter = Builders<ExpenseDetailsMongoDB>.Filter.And(
|
||||||
|
Builders<ExpenseDetailsMongoDB>.Filter.Eq(e => e.Id, id.ToString()),
|
||||||
|
Builders<ExpenseDetailsMongoDB>.Filter.Eq(e => e.TenantId, tenantId.ToString())
|
||||||
|
);
|
||||||
|
var expense = await _collection.Find(filter).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
return expense;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> DeleteExpenseFromCacheAsync(Guid id, Guid tenantId)
|
||||||
|
{
|
||||||
|
var filter = Builders<ExpenseDetailsMongoDB>.Filter.And(
|
||||||
|
Builders<ExpenseDetailsMongoDB>.Filter.Eq(e => e.Id, id.ToString()),
|
||||||
|
Builders<ExpenseDetailsMongoDB>.Filter.Eq(e => e.TenantId, tenantId.ToString())
|
||||||
|
);
|
||||||
|
var result = await _collection.DeleteOneAsync(filter);
|
||||||
|
return result.DeletedCount > 0;
|
||||||
|
}
|
||||||
|
private async Task InitializeCollectionAsync()
|
||||||
|
{
|
||||||
|
var indexKeys = Builders<ExpenseDetailsMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
||||||
|
var indexOptions = new CreateIndexOptions
|
||||||
|
{
|
||||||
|
ExpireAfter = TimeSpan.Zero // required for fixed expiration time
|
||||||
|
};
|
||||||
|
var indexModel = new CreateIndexModel<ExpenseDetailsMongoDB>(indexKeys, indexOptions);
|
||||||
|
await _collection.Indexes.CreateOneAsync(indexModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,14 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Master;
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.MongoDBModels;
|
using Marco.Pms.Model.MongoDBModels.Masters;
|
||||||
|
using Marco.Pms.Model.MongoDBModels.Project;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using MongoDB.Bson;
|
using MongoDB.Bson;
|
||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
|
|
||||||
namespace Marco.Pms.CacheHelper
|
namespace Marco.Pms.Helpers
|
||||||
{
|
{
|
||||||
public class ProjectCache
|
public class ProjectCache
|
||||||
{
|
{
|
||||||
@ -29,13 +30,7 @@ namespace Marco.Pms.CacheHelper
|
|||||||
{
|
{
|
||||||
await _projectCollection.InsertOneAsync(projectDetails);
|
await _projectCollection.InsertOneAsync(projectDetails);
|
||||||
|
|
||||||
var indexKeys = Builders<ProjectMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
await InitializeCollectionAsync();
|
||||||
var indexOptions = new CreateIndexOptions
|
|
||||||
{
|
|
||||||
ExpireAfter = TimeSpan.Zero // required for fixed expiration time
|
|
||||||
};
|
|
||||||
var indexModel = new CreateIndexModel<ProjectMongoDB>(indexKeys, indexOptions);
|
|
||||||
await _projectCollection.Indexes.CreateOneAsync(indexModel);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public async Task AddProjectDetailsListToCache(List<ProjectMongoDB> projectDetailsList)
|
public async Task AddProjectDetailsListToCache(List<ProjectMongoDB> projectDetailsList)
|
||||||
@ -52,17 +47,12 @@ namespace Marco.Pms.CacheHelper
|
|||||||
}
|
}
|
||||||
private async Task InitializeCollectionAsync()
|
private async Task InitializeCollectionAsync()
|
||||||
{
|
{
|
||||||
// 1. Define the TTL (Time-To-Live) index on the 'ExpireAt' field.
|
|
||||||
var indexKeys = Builders<ProjectMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
var indexKeys = Builders<ProjectMongoDB>.IndexKeys.Ascending(x => x.ExpireAt);
|
||||||
var indexOptions = new CreateIndexOptions
|
var indexOptions = new CreateIndexOptions
|
||||||
{
|
{
|
||||||
// This tells MongoDB to automatically delete documents when their 'ExpireAt' time is reached.
|
ExpireAfter = TimeSpan.Zero // required for fixed expiration time
|
||||||
ExpireAfter = TimeSpan.FromSeconds(0)
|
|
||||||
};
|
};
|
||||||
var indexModel = new CreateIndexModel<ProjectMongoDB>(indexKeys, indexOptions);
|
var indexModel = new CreateIndexModel<ProjectMongoDB>(indexKeys, indexOptions);
|
||||||
|
|
||||||
// 2. Create the index. This is an idempotent operation if the index already exists.
|
|
||||||
// Use CreateOneAsync since we are only creating a single index.
|
|
||||||
await _projectCollection.Indexes.CreateOneAsync(indexModel);
|
await _projectCollection.Indexes.CreateOneAsync(indexModel);
|
||||||
}
|
}
|
||||||
public async Task<bool> UpdateProjectDetailsOnlyToCache(Project project, StatusMaster projectStatus)
|
public async Task<bool> UpdateProjectDetailsOnlyToCache(Project project, StatusMaster projectStatus)
|
@ -1,8 +1,8 @@
|
|||||||
using Marco.Pms.Model.MongoDBModels;
|
using Marco.Pms.Model.MongoDBModels.Utility;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
|
|
||||||
namespace Marco.Pms.CacheHelper
|
namespace Marco.Pms.Helpers.CacheHelper
|
||||||
{
|
{
|
||||||
public class ReportCache
|
public class ReportCache
|
||||||
{
|
{
|
53
Marco.Pms.Helpers/Utility/FeatureDetailsHelper.cs
Normal file
53
Marco.Pms.Helpers/Utility/FeatureDetailsHelper.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using MongoDB.Driver;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Helpers.Utility
|
||||||
|
{
|
||||||
|
public class FeatureDetailsHelper
|
||||||
|
{
|
||||||
|
private readonly IMongoCollection<FeatureDetails> _collection;
|
||||||
|
private readonly ILogger<FeatureDetailsHelper> _logger;
|
||||||
|
public FeatureDetailsHelper(IConfiguration configuration, ILogger<FeatureDetailsHelper> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
var connectionString = configuration["MongoDB:ModificationConnectionString"];
|
||||||
|
var mongoUrl = new MongoUrl(connectionString);
|
||||||
|
var client = new MongoClient(mongoUrl); // Your MongoDB connection string
|
||||||
|
var mongoDB = client.GetDatabase(mongoUrl.DatabaseName); // Your MongoDB Database name
|
||||||
|
_collection = mongoDB.GetCollection<FeatureDetails>("FeatureDetails");
|
||||||
|
}
|
||||||
|
public async Task<FeatureDetails?> GetFeatureDetails(Guid Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var filter = Builders<FeatureDetails>.Filter.Eq(e => e.Id, Id);
|
||||||
|
|
||||||
|
var result = await _collection
|
||||||
|
.Find(filter)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception occured while fetchig features for subscription plan");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public async Task<bool> AddFeatureDetails(FeatureDetails featureDetails)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _collection.InsertOneAsync(featureDetails);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception occured while fetchig features for subscription plan");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
128
Marco.Pms.Helpers/Utility/UtilityMongoDBHelper.cs
Normal file
128
Marco.Pms.Helpers/Utility/UtilityMongoDBHelper.cs
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
using Marco.Pms.Model.MongoDBModels.Utility;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using MongoDB.Bson;
|
||||||
|
using MongoDB.Driver;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Helpers.Utility
|
||||||
|
{
|
||||||
|
public class UtilityMongoDBHelper
|
||||||
|
{
|
||||||
|
private readonly IMongoDatabase _mongoDatabase;
|
||||||
|
private readonly IConfiguration _configuration;
|
||||||
|
private readonly ILogger<UtilityMongoDBHelper> _logger;
|
||||||
|
public UtilityMongoDBHelper(IConfiguration configuration, ILogger<UtilityMongoDBHelper> logger)
|
||||||
|
{
|
||||||
|
_configuration = configuration;
|
||||||
|
_logger = logger;
|
||||||
|
var connectionString = configuration["MongoDB:ModificationConnectionString"];
|
||||||
|
var mongoUrl = new MongoUrl(connectionString);
|
||||||
|
var client = new MongoClient(mongoUrl); // Your MongoDB connection string
|
||||||
|
_mongoDatabase = client.GetDatabase(mongoUrl.DatabaseName); // Your MongoDB Database name
|
||||||
|
}
|
||||||
|
|
||||||
|
#region =================================================================== Update Log Helper Functions ===================================================================
|
||||||
|
public async Task PushToUpdateLogsAsync(UpdateLogsObject oldObject, string collectionName)
|
||||||
|
{
|
||||||
|
var collection = _mongoDatabase.GetCollection<UpdateLogsObject>(collectionName);
|
||||||
|
await collection.InsertOneAsync(oldObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<UpdateLogsObject>> GetFromUpdateLogsByEntityIdAsync(Guid entityId, string collectionName)
|
||||||
|
{
|
||||||
|
var collection = _mongoDatabase.GetCollection<UpdateLogsObject>(collectionName);
|
||||||
|
var filter = Builders<UpdateLogsObject>.Filter.Eq(p => p.EntityId, entityId.ToString());
|
||||||
|
|
||||||
|
List<UpdateLogsObject> result = await collection
|
||||||
|
.Find(filter)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<UpdateLogsObject>> GetFromUpdateLogsByUpdetedByIdAsync(Guid updatedById, string collectionName)
|
||||||
|
{
|
||||||
|
var collection = _mongoDatabase.GetCollection<UpdateLogsObject>(collectionName);
|
||||||
|
var filter = Builders<UpdateLogsObject>.Filter.Eq(p => p.UpdatedById, updatedById.ToString());
|
||||||
|
|
||||||
|
List<UpdateLogsObject> result = await collection
|
||||||
|
.Find(filter)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BsonDocument EntityToBsonDocument(object entity)
|
||||||
|
{
|
||||||
|
var bson = new BsonDocument();
|
||||||
|
|
||||||
|
var props = entity.GetType().GetProperties();
|
||||||
|
foreach (var prop in props)
|
||||||
|
{
|
||||||
|
var value = prop.GetValue(entity);
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
bson[prop.Name] = BsonNull.Value;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value is Guid guidValue)
|
||||||
|
{
|
||||||
|
bson[prop.Name] = guidValue.ToString(); // store Guid as string
|
||||||
|
}
|
||||||
|
else if (value is string || value.GetType().IsPrimitive || value is DateTime)
|
||||||
|
{
|
||||||
|
bson[prop.Name] = BsonValue.Create(value); // simple types
|
||||||
|
}
|
||||||
|
else if (value is IEnumerable list && !(value is string))
|
||||||
|
{
|
||||||
|
var array = new BsonArray();
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
array.Add(EntityToBsonDocument(item)); // recursive
|
||||||
|
}
|
||||||
|
bson[prop.Name] = array;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nested object
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bson;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region =================================================================== S3 deletion Helper Functions ===================================================================
|
||||||
|
|
||||||
|
public async Task PushToS3DeletionAsync(List<S3DeletionObject> deletionObject)
|
||||||
|
{
|
||||||
|
var bucketName = _configuration["AWS:BucketName"];
|
||||||
|
if (bucketName != null)
|
||||||
|
{
|
||||||
|
deletionObject = deletionObject.Select(d => new S3DeletionObject
|
||||||
|
{
|
||||||
|
BucketName = bucketName,
|
||||||
|
Key = d.Key,
|
||||||
|
Deleted = false
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
_logger.LogInformation("Delection object for bucket {BucketName} added to mongoDB", bucketName);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var collection = _mongoDatabase.GetCollection<S3DeletionObject>("S3Delection");
|
||||||
|
await collection.InsertManyAsync(deletionObject);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Error occured while saving delection object for S3 to MogoDB");
|
||||||
|
}
|
||||||
|
_logger.LogInformation("Delection Objects added to MongoDB Successfully");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
@ -12,6 +12,7 @@ namespace Marco.Pms.Model.Directory
|
|||||||
//public Guid? ProjectId { get; set; }
|
//public Guid? ProjectId { get; set; }
|
||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
public string Description { get; set; } = string.Empty;
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public string Designation { get; set; } = string.Empty;
|
||||||
public string Organization { get; set; } = string.Empty;
|
public string Organization { get; set; } = string.Empty;
|
||||||
public string? Address { get; set; }
|
public string? Address { get; set; }
|
||||||
public bool IsActive { get; set; } = true;
|
public bool IsActive { get; set; } = true;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
public List<Guid>? BucketIds { get; set; }
|
public List<Guid>? BucketIds { get; set; }
|
||||||
public Guid? ContactCategoryId { get; set; }
|
public Guid? ContactCategoryId { get; set; }
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
|
public string? Designation { get; set; }
|
||||||
public string? Organization { get; set; }
|
public string? Organization { get; set; }
|
||||||
public string? Address { get; set; }
|
public string? Address { get; set; }
|
||||||
public List<ContactTagDto>? Tags { get; set; }
|
public List<ContactTagDto>? Tags { get; set; }
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
public List<Guid>? BucketIds { get; set; }
|
public List<Guid>? BucketIds { get; set; }
|
||||||
public Guid? ContactCategoryId { get; set; }
|
public Guid? ContactCategoryId { get; set; }
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
|
public string? Designation { get; set; }
|
||||||
public string? Organization { get; set; }
|
public string? Organization { get; set; }
|
||||||
public string? Address { get; set; }
|
public string? Address { get; set; }
|
||||||
public List<ContactTagDto>? Tags { get; set; }
|
public List<ContactTagDto>? Tags { get; set; }
|
||||||
|
22
Marco.Pms.Model/Dtos/Expenses/CreateExpensesDto.cs
Normal file
22
Marco.Pms.Model/Dtos/Expenses/CreateExpensesDto.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Dtos.Expenses
|
||||||
|
{
|
||||||
|
public class CreateExpensesDto
|
||||||
|
{
|
||||||
|
public required Guid ProjectId { get; set; }
|
||||||
|
public required Guid ExpensesTypeId { get; set; }
|
||||||
|
public required Guid PaymentModeId { get; set; }
|
||||||
|
public required Guid PaidById { get; set; }
|
||||||
|
public DateTime TransactionDate { get; set; } = DateTime.Now;
|
||||||
|
public string? TransactionId { get; set; }
|
||||||
|
public required string Description { get; set; }
|
||||||
|
public string? Location { get; set; }
|
||||||
|
public string? GSTNumber { get; set; }
|
||||||
|
public required string SupplerName { get; set; }
|
||||||
|
public required double Amount { get; set; }
|
||||||
|
public int? NoOfPersons { get; set; } = 0;
|
||||||
|
public bool PreApproved { get; set; } = false;
|
||||||
|
public required List<FileUploadModel> BillAttachments { get; set; }
|
||||||
|
}
|
||||||
|
}
|
12
Marco.Pms.Model/Dtos/Expenses/ExpenseRecordDto.cs
Normal file
12
Marco.Pms.Model/Dtos/Expenses/ExpenseRecordDto.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Expenses
|
||||||
|
{
|
||||||
|
public class ExpenseRecordDto
|
||||||
|
{
|
||||||
|
public Guid ExpenseId { get; set; }
|
||||||
|
public Guid StatusId { get; set; }
|
||||||
|
public string? Comment { get; set; }
|
||||||
|
public string? ReimburseTransactionId { get; set; }
|
||||||
|
public DateTime? ReimburseDate { get; set; }
|
||||||
|
public Guid? ReimburseById { get; set; }
|
||||||
|
}
|
||||||
|
}
|
23
Marco.Pms.Model/Dtos/Expenses/UpdateExpensesDto.cs
Normal file
23
Marco.Pms.Model/Dtos/Expenses/UpdateExpensesDto.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Dtos.Expenses
|
||||||
|
{
|
||||||
|
public class UpdateExpensesDto
|
||||||
|
{
|
||||||
|
public required Guid Id { get; set; }
|
||||||
|
public required Guid ProjectId { get; set; }
|
||||||
|
public required Guid ExpensesTypeId { get; set; }
|
||||||
|
public required Guid PaymentModeId { get; set; }
|
||||||
|
public required Guid PaidById { get; set; }
|
||||||
|
public DateTime TransactionDate { get; set; } = DateTime.Now;
|
||||||
|
public string? TransactionId { get; set; }
|
||||||
|
public required string Description { get; set; }
|
||||||
|
public string? Location { get; set; }
|
||||||
|
public string? GSTNumber { get; set; }
|
||||||
|
public required string SupplerName { get; set; }
|
||||||
|
public required double Amount { get; set; }
|
||||||
|
public int? NoOfPersons { get; set; } = 0;
|
||||||
|
public bool PreApproved { get; set; } = false;
|
||||||
|
public List<FileUploadModel>? BillAttachments { get; set; }
|
||||||
|
}
|
||||||
|
}
|
12
Marco.Pms.Model/Dtos/Master/ExpensesStatusMasterDto.cs
Normal file
12
Marco.Pms.Model/Dtos/Master/ExpensesStatusMasterDto.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
|
{
|
||||||
|
public class ExpensesStatusMasterDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public required string Name { get; set; } = string.Empty;
|
||||||
|
public string DisplayName { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public List<Guid>? PermissionIds { get; set; }
|
||||||
|
public required string? Color { get; set; }
|
||||||
|
}
|
||||||
|
}
|
10
Marco.Pms.Model/Dtos/Master/ExpensesTypeMasterDto.cs
Normal file
10
Marco.Pms.Model/Dtos/Master/ExpensesTypeMasterDto.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
|
{
|
||||||
|
public class ExpensesTypeMasterDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public required string Name { get; set; }
|
||||||
|
public required bool NoOfPersonsRequired { get; set; }
|
||||||
|
public string? Description { get; set; }
|
||||||
|
}
|
||||||
|
}
|
9
Marco.Pms.Model/Dtos/Master/PaymentModeMatserDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Master/PaymentModeMatserDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
|
{
|
||||||
|
public class PaymentModeMatserDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,6 @@
|
|||||||
public Guid EmpID { get; set; }
|
public Guid EmpID { get; set; }
|
||||||
public Guid JobRoleId { get; set; }
|
public Guid JobRoleId { get; set; }
|
||||||
public Guid ProjectId { get; set; }
|
public Guid ProjectId { get; set; }
|
||||||
|
|
||||||
public bool Status { get; set; }
|
public bool Status { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14,7 +13,6 @@
|
|||||||
{
|
{
|
||||||
public Guid ProjectId { get; set; }
|
public Guid ProjectId { get; set; }
|
||||||
public Guid JobRoleId { get; set; }
|
public Guid JobRoleId { get; set; }
|
||||||
|
|
||||||
public bool Status { get; set; }
|
public bool Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
Marco.Pms.Model/Dtos/Tenant/AddSubscriptionDto.cs
Normal file
12
Marco.Pms.Model/Dtos/Tenant/AddSubscriptionDto.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class AddSubscriptionDto
|
||||||
|
{
|
||||||
|
public Guid TenantId { get; set; }
|
||||||
|
public Guid PlanId { get; set; }
|
||||||
|
public Guid CurrencyId { get; set; }
|
||||||
|
public double MaxUsers { get; set; }
|
||||||
|
public bool IsTrial { get; set; } = false;
|
||||||
|
public bool AutoRenew { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
12
Marco.Pms.Model/Dtos/Tenant/AttendanceDetailsDto.cs
Normal file
12
Marco.Pms.Model/Dtos/Tenant/AttendanceDetailsDto.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class AttendanceDetailsDto
|
||||||
|
{
|
||||||
|
public List<Guid>? FeatureId { get; set; }
|
||||||
|
public string Name { get; set; } = "Attendance Management";
|
||||||
|
public bool Enabled { get; set; } = false;
|
||||||
|
public bool ManualEntry { get; set; } = true;
|
||||||
|
public bool LocationTracking { get; set; } = true;
|
||||||
|
public bool ShiftManagement { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
21
Marco.Pms.Model/Dtos/Tenant/CreateTenantDto.cs
Normal file
21
Marco.Pms.Model/Dtos/Tenant/CreateTenantDto.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class CreateTenantDto
|
||||||
|
{
|
||||||
|
public required string FirstName { get; set; }
|
||||||
|
public required string LastName { get; set; }
|
||||||
|
public required string Email { get; set; }
|
||||||
|
public string? Description { get; set; }
|
||||||
|
public string? DomainName { get; set; }
|
||||||
|
public required string BillingAddress { get; set; }
|
||||||
|
public string? TaxId { get; set; }
|
||||||
|
public string? logoImage { get; set; }
|
||||||
|
public required string OrganizationName { get; set; }
|
||||||
|
public string? OfficeNumber { get; set; }
|
||||||
|
public required string ContactNumber { get; set; }
|
||||||
|
public required DateTime OnBoardingDate { get; set; }
|
||||||
|
public required string OrganizationSize { get; set; }
|
||||||
|
public required Guid IndustryId { get; set; }
|
||||||
|
public required string Reference { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
Marco.Pms.Model/Dtos/Tenant/DirectoryDetailsDto.cs
Normal file
11
Marco.Pms.Model/Dtos/Tenant/DirectoryDetailsDto.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class DirectoryDetailsDto
|
||||||
|
{
|
||||||
|
public List<Guid>? FeatureId { get; set; }
|
||||||
|
public string Name { get; set; } = "Directory Management";
|
||||||
|
public bool Enabled { get; set; } = false;
|
||||||
|
public int BucketLimit { get; set; } = 25;
|
||||||
|
public bool OrganizationChart { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
9
Marco.Pms.Model/Dtos/Tenant/ExpenseModuleDetailsDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Tenant/ExpenseModuleDetailsDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class ExpenseModuleDetailsDto
|
||||||
|
{
|
||||||
|
public List<Guid>? FeatureId { get; set; }
|
||||||
|
public string Name { get; set; } = "Expense Management";
|
||||||
|
public bool Enabled { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
10
Marco.Pms.Model/Dtos/Tenant/FeatureDetailsDto.cs
Normal file
10
Marco.Pms.Model/Dtos/Tenant/FeatureDetailsDto.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class FeatureDetailsDto
|
||||||
|
{
|
||||||
|
public ModulesDetailsDto? Modules { get; set; }
|
||||||
|
public ReportDetailsDto? Reports { get; set; }
|
||||||
|
public SupportDetailsDto? Supports { get; set; }
|
||||||
|
public List<SubscriptionCheckListDto> SubscriptionCheckList { get; set; } = new List<SubscriptionCheckListDto>();
|
||||||
|
}
|
||||||
|
}
|
10
Marco.Pms.Model/Dtos/Tenant/ModulesDetailsDto.cs
Normal file
10
Marco.Pms.Model/Dtos/Tenant/ModulesDetailsDto.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class ModulesDetailsDto
|
||||||
|
{
|
||||||
|
public ProjectManagementDetailsDto? ProjectManagement { get; set; }
|
||||||
|
public AttendanceDetailsDto? Attendance { get; set; }
|
||||||
|
public DirectoryDetailsDto? Directory { get; set; }
|
||||||
|
public ExpenseModuleDetailsDto? Expense { get; set; }
|
||||||
|
}
|
||||||
|
}
|
13
Marco.Pms.Model/Dtos/Tenant/ProjectManagementDetailsDto.cs
Normal file
13
Marco.Pms.Model/Dtos/Tenant/ProjectManagementDetailsDto.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class ProjectManagementDetailsDto
|
||||||
|
{
|
||||||
|
public List<Guid>? FeatureId { get; set; }
|
||||||
|
public string Name { get; set; } = "Project Management";
|
||||||
|
public bool Enabled { get; set; } = false;
|
||||||
|
public int MaxProject { get; set; } = 10;
|
||||||
|
public double MaxTaskPerProject { get; set; } = 100000;
|
||||||
|
public bool GanttChart { get; set; } = false;
|
||||||
|
public bool ResourceAllocation { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
9
Marco.Pms.Model/Dtos/Tenant/ReportDetailsDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Tenant/ReportDetailsDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class ReportDetailsDto
|
||||||
|
{
|
||||||
|
public bool BasicReports { get; set; } = true;
|
||||||
|
public bool CustomReports { get; set; } = false;
|
||||||
|
public List<string> ExportData { get; set; } = new List<string>();
|
||||||
|
}
|
||||||
|
}
|
8
Marco.Pms.Model/Dtos/Tenant/SubscriptionCheckListDto.cs
Normal file
8
Marco.Pms.Model/Dtos/Tenant/SubscriptionCheckListDto.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class SubscriptionCheckListDto
|
||||||
|
{
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
13
Marco.Pms.Model/Dtos/Tenant/SubscriptionPlanDetailsDto.cs
Normal file
13
Marco.Pms.Model/Dtos/Tenant/SubscriptionPlanDetailsDto.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class SubscriptionPlanDetailsDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public double Price { get; set; }
|
||||||
|
public required int TrialDays { get; set; }
|
||||||
|
public required double MaxUser { get; set; }
|
||||||
|
public double MaxStorage { get; set; }
|
||||||
|
public required FeatureDetailsDto Features { get; set; }
|
||||||
|
public Guid CurrencyId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
13
Marco.Pms.Model/Dtos/Tenant/SubscriptionPlanDto.cs
Normal file
13
Marco.Pms.Model/Dtos/Tenant/SubscriptionPlanDto.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class SubscriptionPlanDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public required string PlanName { get; set; }
|
||||||
|
public required string Description { get; set; }
|
||||||
|
public SubscriptionPlanDetailsDto? MonthlyPlan { get; set; }
|
||||||
|
public SubscriptionPlanDetailsDto? QuarterlyPlan { get; set; }
|
||||||
|
public SubscriptionPlanDetailsDto? HalfYearlyPlan { get; set; }
|
||||||
|
public SubscriptionPlanDetailsDto? YearlyPlan { get; set; }
|
||||||
|
}
|
||||||
|
}
|
9
Marco.Pms.Model/Dtos/Tenant/SupportDetailsDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Tenant/SupportDetailsDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class SupportDetailsDto
|
||||||
|
{
|
||||||
|
public bool EmailSupport { get; set; } = true;
|
||||||
|
public bool PhoneSupport { get; set; } = false;
|
||||||
|
public bool PrioritySupport { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
10
Marco.Pms.Model/Dtos/Tenant/UpdateSubscriptionDto.cs
Normal file
10
Marco.Pms.Model/Dtos/Tenant/UpdateSubscriptionDto.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class UpdateSubscriptionDto
|
||||||
|
{
|
||||||
|
public Guid TenantId { get; set; }
|
||||||
|
public Guid PlanId { get; set; }
|
||||||
|
public Guid CurrencyId { get; set; }
|
||||||
|
public double? MaxUsers { get; set; }
|
||||||
|
}
|
||||||
|
}
|
19
Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs
Normal file
19
Marco.Pms.Model/Dtos/Tenant/UpdateTenantDto.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Tenant
|
||||||
|
{
|
||||||
|
public class UpdateTenantDto
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public required string FirstName { get; set; }
|
||||||
|
public required string LastName { get; set; }
|
||||||
|
public string? Description { get; set; }
|
||||||
|
public string? DomainName { get; set; }
|
||||||
|
public required string BillingAddress { get; set; }
|
||||||
|
public string? TaxId { get; set; }
|
||||||
|
public string? logoImage { get; set; }
|
||||||
|
public string? OfficeNumber { get; set; }
|
||||||
|
public required string ContactNumber { get; set; }
|
||||||
|
public required string OrganizationSize { get; set; }
|
||||||
|
public required Guid IndustryId { get; set; }
|
||||||
|
public required string Reference { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,25 +0,0 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using Marco.Pms.Model.Master;
|
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
|
||||||
{
|
|
||||||
public class Tenant
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public string? Name { get; set; }
|
|
||||||
public string? Description { get; set; }
|
|
||||||
public string? DomainName { get; set; }
|
|
||||||
public string? ContactName { get; set; }
|
|
||||||
public string? ContactNumber { get; set; }
|
|
||||||
public DateTime OnBoardingDate { get; set; }
|
|
||||||
public string? OragnizationSize { get; set; }
|
|
||||||
public Guid? IndustryId { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey("IndustryId")]
|
|
||||||
[ValidateNever]
|
|
||||||
public Industry? Industry { get; set; }
|
|
||||||
|
|
||||||
public bool IsActive { get; set; } = true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,6 +2,9 @@
|
|||||||
{
|
{
|
||||||
public static class PermissionsMaster
|
public static class PermissionsMaster
|
||||||
{
|
{
|
||||||
|
public static readonly Guid ManageTenants = Guid.Parse("d032cb1a-3f30-462c-bef0-7ace73a71c0b");
|
||||||
|
public static readonly Guid ModifyTenant = Guid.Parse("00e20637-ce8d-4417-bec4-9b31b5e65092");
|
||||||
|
public static readonly Guid ViewTenant = Guid.Parse("647145c6-2108-4c98-aab4-178602236e55");
|
||||||
public static readonly Guid DirectoryAdmin = Guid.Parse("4286a13b-bb40-4879-8c6d-18e9e393beda");
|
public static readonly Guid DirectoryAdmin = Guid.Parse("4286a13b-bb40-4879-8c6d-18e9e393beda");
|
||||||
public static readonly Guid DirectoryManager = Guid.Parse("62668630-13ce-4f52-a0f0-db38af2230c5");
|
public static readonly Guid DirectoryManager = Guid.Parse("62668630-13ce-4f52-a0f0-db38af2230c5");
|
||||||
public static readonly Guid DirectoryUser = Guid.Parse("0f919170-92d4-4337-abd3-49b66fc871bb");
|
public static readonly Guid DirectoryUser = Guid.Parse("0f919170-92d4-4337-abd3-49b66fc871bb");
|
||||||
@ -23,6 +26,13 @@
|
|||||||
public static readonly Guid SelfAttendance = Guid.Parse("ccb0589f-712b-43de-92ed-5b6088e7dc4e");
|
public static readonly Guid SelfAttendance = Guid.Parse("ccb0589f-712b-43de-92ed-5b6088e7dc4e");
|
||||||
public static readonly Guid ViewMasters = Guid.Parse("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d");
|
public static readonly Guid ViewMasters = Guid.Parse("5ffbafe0-7ab0-48b1-bb50-c1bf76b65f9d");
|
||||||
public static readonly Guid ManageMasters = Guid.Parse("588a8824-f924-4955-82d8-fc51956cf323");
|
public static readonly Guid ManageMasters = Guid.Parse("588a8824-f924-4955-82d8-fc51956cf323");
|
||||||
|
public static readonly Guid ExpenseViewSelf = Guid.Parse("385be49f-8fde-440e-bdbc-3dffeb8dd116");
|
||||||
|
public static readonly Guid ExpenseViewAll = Guid.Parse("01e06444-9ca7-4df4-b900-8c3fa051b92f");
|
||||||
|
public static readonly Guid ExpenseUpload = Guid.Parse("0f57885d-bcb2-4711-ac95-d841ace6d5a7");
|
||||||
|
public static readonly Guid ExpenseReview = Guid.Parse("1f4bda08-1873-449a-bb66-3e8222bd871b");
|
||||||
|
public static readonly Guid ExpenseApprove = Guid.Parse("eaafdd76-8aac-45f9-a530-315589c6deca");
|
||||||
|
public static readonly Guid ExpenseProcess = Guid.Parse("ea5a1529-4ee8-4828-80ea-0e23c9d4dd11");
|
||||||
|
public static readonly Guid ExpenseManage = Guid.Parse("bdee29a2-b73b-402d-8dd1-c4b1f81ccbc3");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
Marco.Pms.Model/Expenses/BillAttachments.cs
Normal file
22
Marco.Pms.Model/Expenses/BillAttachments.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using Marco.Pms.Model.DocumentManager;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class BillAttachments : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid ExpensesId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ExpensesId")]
|
||||||
|
public Expenses? Expenses { get; set; }
|
||||||
|
public Guid DocumentId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("DocumentId")]
|
||||||
|
public Document? Document { get; set; }
|
||||||
|
}
|
||||||
|
}
|
25
Marco.Pms.Model/Expenses/ExpenseLog.cs
Normal file
25
Marco.Pms.Model/Expenses/ExpenseLog.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using Marco.Pms.Model.Employees;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class ExpenseLog : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid ExpenseId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ExpenseId")]
|
||||||
|
public Expenses? Expense { get; set; }
|
||||||
|
public Guid UpdatedById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("UpdatedById")]
|
||||||
|
public Employee? UpdatedBy { get; set; }
|
||||||
|
public DateTime? UpdateAt { get; set; }
|
||||||
|
public string Action { get; set; } = string.Empty;
|
||||||
|
public string? Comment { get; set; }
|
||||||
|
}
|
||||||
|
}
|
70
Marco.Pms.Model/Expenses/Expenses.cs
Normal file
70
Marco.Pms.Model/Expenses/Expenses.cs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
using Marco.Pms.Model.Employees;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
|
using Marco.Pms.Model.Projects;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class Expenses : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid ProjectId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ProjectId")]
|
||||||
|
public Project? Project { get; set; }
|
||||||
|
public Guid ExpensesTypeId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ExpensesTypeId")]
|
||||||
|
public ExpensesTypeMaster? ExpensesType { get; set; }
|
||||||
|
public Guid PaymentModeId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("PaymentModeId")]
|
||||||
|
public PaymentModeMatser? PaymentMode { get; set; }
|
||||||
|
public Guid PaidById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("PaidById")]
|
||||||
|
public Employee? PaidBy { get; set; }
|
||||||
|
public Guid CreatedById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("CreatedById")]
|
||||||
|
public Employee? CreatedBy { get; set; }
|
||||||
|
public Guid? ReviewedById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ReviewedById")]
|
||||||
|
public Employee? ReviewedBy { get; set; }
|
||||||
|
public Guid? ApprovedById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ApprovedById")]
|
||||||
|
public Employee? ApprovedBy { get; set; }
|
||||||
|
public Guid? ProcessedById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ProcessedById")]
|
||||||
|
public Employee? ProcessedBy { get; set; }
|
||||||
|
public DateTime TransactionDate { get; set; }
|
||||||
|
public DateTime CreatedAt { get; set; }
|
||||||
|
public string? TransactionId { get; set; }
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public string? Location { get; set; }
|
||||||
|
public string? GSTNumber { get; set; }
|
||||||
|
public string SupplerName { get; set; } = string.Empty;
|
||||||
|
public double Amount { get; set; }
|
||||||
|
public int? NoOfPersons { get; set; }
|
||||||
|
public Guid StatusId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("StatusId")]
|
||||||
|
public ExpensesStatusMaster? Status { get; set; }
|
||||||
|
public bool PreApproved { get; set; } = false;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
20
Marco.Pms.Model/Expenses/ExpensesReimburse.cs
Normal file
20
Marco.Pms.Model/Expenses/ExpensesReimburse.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using Marco.Pms.Model.Employees;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class ExpensesReimburse : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string ReimburseTransactionId { get; set; } = string.Empty;
|
||||||
|
public DateTime ReimburseDate { get; set; }
|
||||||
|
public Guid ReimburseById { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ReimburseById")]
|
||||||
|
public Employee? ReimburseBy { get; set; }
|
||||||
|
public string ReimburseNote { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
21
Marco.Pms.Model/Expenses/ExpensesReimburseMapping.cs
Normal file
21
Marco.Pms.Model/Expenses/ExpensesReimburseMapping.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class ExpensesReimburseMapping : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid ExpensesId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ExpensesId")]
|
||||||
|
public Expenses? Expenses { get; set; }
|
||||||
|
public Guid ExpensesReimburseId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("ExpensesReimburseId")]
|
||||||
|
public ExpensesReimburse? ExpensesReimburse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
21
Marco.Pms.Model/Expenses/ExpensesStatusMapping.cs
Normal file
21
Marco.Pms.Model/Expenses/ExpensesStatusMapping.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using Marco.Pms.Model.Master;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class ExpensesStatusMapping
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid StatusId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("StatusId")]
|
||||||
|
public ExpensesStatusMaster? Status { get; set; }
|
||||||
|
public Guid NextStatusId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("NextStatusId")]
|
||||||
|
public ExpensesStatusMaster? NextStatus { get; set; }
|
||||||
|
}
|
||||||
|
}
|
22
Marco.Pms.Model/Expenses/StatusPermissionMapping.cs
Normal file
22
Marco.Pms.Model/Expenses/StatusPermissionMapping.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using Marco.Pms.Model.Entitlements;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Expenses
|
||||||
|
{
|
||||||
|
public class StatusPermissionMapping
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public Guid StatusId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("StatusId")]
|
||||||
|
public ExpensesStatusMaster? Status { get; set; }
|
||||||
|
public Guid PermissionId { get; set; }
|
||||||
|
|
||||||
|
[ValidateNever]
|
||||||
|
[ForeignKey("PermissionId")]
|
||||||
|
public FeaturePermission? Permission { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,7 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
Name = createContactDto.Name ?? string.Empty,
|
Name = createContactDto.Name ?? string.Empty,
|
||||||
ContactCategoryId = createContactDto.ContactCategoryId,
|
ContactCategoryId = createContactDto.ContactCategoryId,
|
||||||
Description = createContactDto.Description ?? string.Empty,
|
Description = createContactDto.Description ?? string.Empty,
|
||||||
|
Designation = createContactDto.Designation ?? string.Empty,
|
||||||
Organization = createContactDto?.Organization ?? string.Empty,
|
Organization = createContactDto?.Organization ?? string.Empty,
|
||||||
Address = createContactDto != null ? createContactDto.Address : string.Empty,
|
Address = createContactDto != null ? createContactDto.Address : string.Empty,
|
||||||
CreatedById = employeeId,
|
CreatedById = employeeId,
|
||||||
@ -34,6 +35,7 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
CreatedAt = contact.CreatedAt,
|
CreatedAt = contact.CreatedAt,
|
||||||
CreatedById = contact.CreatedById,
|
CreatedById = contact.CreatedById,
|
||||||
Description = updateContactDto.Description ?? string.Empty,
|
Description = updateContactDto.Description ?? string.Empty,
|
||||||
|
Designation = updateContactDto.Designation ?? string.Empty,
|
||||||
Organization = updateContactDto?.Organization ?? string.Empty,
|
Organization = updateContactDto?.Organization ?? string.Empty,
|
||||||
Address = updateContactDto != null ? updateContactDto.Address : string.Empty,
|
Address = updateContactDto != null ? updateContactDto.Address : string.Empty,
|
||||||
TenantId = tenantId
|
TenantId = tenantId
|
||||||
@ -47,6 +49,7 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
Name = contact.Name,
|
Name = contact.Name,
|
||||||
ContactCategory = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : null,
|
ContactCategory = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : null,
|
||||||
Description = contact.Description ?? string.Empty,
|
Description = contact.Description ?? string.Empty,
|
||||||
|
Designation = contact.Designation ?? string.Empty,
|
||||||
Organization = contact.Organization ?? string.Empty,
|
Organization = contact.Organization ?? string.Empty,
|
||||||
Address = contact.Address ?? string.Empty
|
Address = contact.Address ?? string.Empty
|
||||||
};
|
};
|
||||||
@ -59,6 +62,7 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
Name = contact.Name,
|
Name = contact.Name,
|
||||||
ContactCategory = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : null,
|
ContactCategory = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : null,
|
||||||
Description = contact.Description ?? string.Empty,
|
Description = contact.Description ?? string.Empty,
|
||||||
|
Designation = contact.Designation ?? string.Empty,
|
||||||
Organization = contact.Organization ?? string.Empty,
|
Organization = contact.Organization ?? string.Empty,
|
||||||
Address = contact.Address ?? string.Empty,
|
Address = contact.Address ?? string.Empty,
|
||||||
CreatedAt = contact.CreatedAt,
|
CreatedAt = contact.CreatedAt,
|
||||||
|
@ -35,8 +35,10 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
PhoneNumber = model.PhoneNumber,
|
PhoneNumber = model.PhoneNumber,
|
||||||
Photo = base64String,
|
Photo = base64String,
|
||||||
IsActive = model.IsActive,
|
IsActive = model.IsActive,
|
||||||
|
IsRootUser = model.ApplicationUser!.IsRootUser!.Value,
|
||||||
IsSystem = model.IsSystem,
|
IsSystem = model.IsSystem,
|
||||||
JoiningDate = model.JoiningDate
|
JoiningDate = model.JoiningDate,
|
||||||
|
TenantId = model.TenantId
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static BasicEmployeeVM ToBasicEmployeeVMFromEmployee(this Employee employee)
|
public static BasicEmployeeVM ToBasicEmployeeVMFromEmployee(this Employee employee)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
|
11
Marco.Pms.Model/Master/CurrencyMaster.cs
Normal file
11
Marco.Pms.Model/Master/CurrencyMaster.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace Marco.Pms.Model.Master
|
||||||
|
{
|
||||||
|
public class CurrencyMaster
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string CurrencyCode { get; set; } = string.Empty;
|
||||||
|
public string CurrencyName { get; set; } = string.Empty;
|
||||||
|
public string Symbol { get; set; } = string.Empty;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
13
Marco.Pms.Model/Master/ExpensesStatusMaster.cs
Normal file
13
Marco.Pms.Model/Master/ExpensesStatusMaster.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
namespace Marco.Pms.Model.Master
|
||||||
|
{
|
||||||
|
public class ExpensesStatusMaster
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string DisplayName { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public string Color { get; set; } = string.Empty;
|
||||||
|
public bool IsSystem { get; set; } = false;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
13
Marco.Pms.Model/Master/ExpensesTypeMaster.cs
Normal file
13
Marco.Pms.Model/Master/ExpensesTypeMaster.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Master
|
||||||
|
{
|
||||||
|
public class ExpensesTypeMaster : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public bool NoOfPersonsRequired { get; set; }
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
12
Marco.Pms.Model/Master/PaymentModeMatser.cs
Normal file
12
Marco.Pms.Model/Master/PaymentModeMatser.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Master
|
||||||
|
{
|
||||||
|
public class PaymentModeMatser : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public bool IsActive { get; set; } = true;
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user