Compare commits
No commits in common. "b30369baa580ce97f47cd36f9850cc1c9a82e2be" and "7e20807325e01c9fe065521e5b954c25751f3cc6" have entirely different histories.
b30369baa5
...
7e20807325
@ -1,7 +1,6 @@
|
|||||||
using Marco.Pms.Model.Activities;
|
using Marco.Pms.Model.Activities;
|
||||||
using Marco.Pms.Model.AttendanceModule;
|
using Marco.Pms.Model.AttendanceModule;
|
||||||
using Marco.Pms.Model.Authentication;
|
using Marco.Pms.Model.Authentication;
|
||||||
using Marco.Pms.Model.Collection;
|
|
||||||
using Marco.Pms.Model.Directory;
|
using Marco.Pms.Model.Directory;
|
||||||
using Marco.Pms.Model.DocumentManager;
|
using Marco.Pms.Model.DocumentManager;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
@ -134,12 +133,6 @@ namespace Marco.Pms.DataAccess.Data
|
|||||||
public DbSet<ProjectServiceMapping> ProjectServiceMappings { get; set; }
|
public DbSet<ProjectServiceMapping> ProjectServiceMappings { get; set; }
|
||||||
public DbSet<ProjectOrgMapping> ProjectOrgMappings { get; set; }
|
public DbSet<ProjectOrgMapping> ProjectOrgMappings { get; set; }
|
||||||
|
|
||||||
// Collection
|
|
||||||
public DbSet<Invoice> Invoices { get; set; }
|
|
||||||
public DbSet<InvoiceComment> InvoiceComments { get; set; }
|
|
||||||
public DbSet<InvoiceAttachment> InvoiceAttachments { get; set; }
|
|
||||||
public DbSet<ReceivedInvoicePayment> ReceivedInvoicePayments { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,256 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace Marco.Pms.DataAccess.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class Added_Collection_Related_Tables : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "Invoices",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
Title = table.Column<string>(type: "longtext", nullable: false)
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
||||||
Description = table.Column<string>(type: "longtext", nullable: false)
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
||||||
InvoiceNumber = table.Column<string>(type: "longtext", nullable: false)
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
||||||
ProjectId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
InvoiceDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
ClientSubmitedDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
ExceptedPaymentDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
Amount = table.Column<double>(type: "double", nullable: false),
|
|
||||||
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
||||||
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
UpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
||||||
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_Invoices", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Invoices_Employees_CreatedById",
|
|
||||||
column: x => x.CreatedById,
|
|
||||||
principalTable: "Employees",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Invoices_Employees_UpdatedById",
|
|
||||||
column: x => x.UpdatedById,
|
|
||||||
principalTable: "Employees",
|
|
||||||
principalColumn: "Id");
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Invoices_Projects_ProjectId",
|
|
||||||
column: x => x.ProjectId,
|
|
||||||
principalTable: "Projects",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_Invoices_Tenants_TenantId",
|
|
||||||
column: x => x.TenantId,
|
|
||||||
principalTable: "Tenants",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
})
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4");
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "InvoiceAttachments",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
InvoiceId = 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_InvoiceAttachments", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceAttachments_Documents_DocumentId",
|
|
||||||
column: x => x.DocumentId,
|
|
||||||
principalTable: "Documents",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceAttachments_Invoices_InvoiceId",
|
|
||||||
column: x => x.InvoiceId,
|
|
||||||
principalTable: "Invoices",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceAttachments_Tenants_TenantId",
|
|
||||||
column: x => x.TenantId,
|
|
||||||
principalTable: "Tenants",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
})
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4");
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "InvoiceComments",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
Comment = table.Column<string>(type: "longtext", nullable: false)
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
||||||
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
CreatedById = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
InvoiceId = 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_InvoiceComments", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceComments_Employees_CreatedById",
|
|
||||||
column: x => x.CreatedById,
|
|
||||||
principalTable: "Employees",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceComments_Invoices_InvoiceId",
|
|
||||||
column: x => x.InvoiceId,
|
|
||||||
principalTable: "Invoices",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_InvoiceComments_Tenants_TenantId",
|
|
||||||
column: x => x.TenantId,
|
|
||||||
principalTable: "Tenants",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
})
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4");
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "ReceivedInvoicePayments",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
InvoiceId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
||||||
PaymentReceivedDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
TransactionId = table.Column<string>(type: "longtext", nullable: false)
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
||||||
Amount = table.Column<double>(type: "double", nullable: false),
|
|
||||||
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
||||||
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
||||||
CreatedById = 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_ReceivedInvoicePayments", x => x.Id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_ReceivedInvoicePayments_Employees_CreatedById",
|
|
||||||
column: x => x.CreatedById,
|
|
||||||
principalTable: "Employees",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_ReceivedInvoicePayments_Invoices_InvoiceId",
|
|
||||||
column: x => x.InvoiceId,
|
|
||||||
principalTable: "Invoices",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "FK_ReceivedInvoicePayments_Tenants_TenantId",
|
|
||||||
column: x => x.TenantId,
|
|
||||||
principalTable: "Tenants",
|
|
||||||
principalColumn: "Id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
})
|
|
||||||
.Annotation("MySql:CharSet", "utf8mb4");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceAttachments_DocumentId",
|
|
||||||
table: "InvoiceAttachments",
|
|
||||||
column: "DocumentId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceAttachments_InvoiceId",
|
|
||||||
table: "InvoiceAttachments",
|
|
||||||
column: "InvoiceId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceAttachments_TenantId",
|
|
||||||
table: "InvoiceAttachments",
|
|
||||||
column: "TenantId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceComments_CreatedById",
|
|
||||||
table: "InvoiceComments",
|
|
||||||
column: "CreatedById");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceComments_InvoiceId",
|
|
||||||
table: "InvoiceComments",
|
|
||||||
column: "InvoiceId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_InvoiceComments_TenantId",
|
|
||||||
table: "InvoiceComments",
|
|
||||||
column: "TenantId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Invoices_CreatedById",
|
|
||||||
table: "Invoices",
|
|
||||||
column: "CreatedById");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Invoices_ProjectId",
|
|
||||||
table: "Invoices",
|
|
||||||
column: "ProjectId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Invoices_TenantId",
|
|
||||||
table: "Invoices",
|
|
||||||
column: "TenantId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_Invoices_UpdatedById",
|
|
||||||
table: "Invoices",
|
|
||||||
column: "UpdatedById");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_ReceivedInvoicePayments_CreatedById",
|
|
||||||
table: "ReceivedInvoicePayments",
|
|
||||||
column: "CreatedById");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_ReceivedInvoicePayments_InvoiceId",
|
|
||||||
table: "ReceivedInvoicePayments",
|
|
||||||
column: "InvoiceId");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "IX_ReceivedInvoicePayments_TenantId",
|
|
||||||
table: "ReceivedInvoicePayments",
|
|
||||||
column: "TenantId");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "InvoiceAttachments");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "InvoiceComments");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "ReceivedInvoicePayments");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "Invoices");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -369,171 +369,6 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
b.ToTable("RefreshTokens");
|
b.ToTable("RefreshTokens");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.Invoice", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<double>("Amount")
|
|
||||||
.HasColumnType("double");
|
|
||||||
|
|
||||||
b.Property<DateTime>("ClientSubmitedDate")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedAt")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreatedById")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<string>("Description")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("longtext");
|
|
||||||
|
|
||||||
b.Property<DateTime>("ExceptedPaymentDate")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("InvoiceDate")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<string>("InvoiceNumber")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("longtext");
|
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
|
||||||
.HasColumnType("tinyint(1)");
|
|
||||||
|
|
||||||
b.Property<Guid>("ProjectId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("TenantId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<string>("Title")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("longtext");
|
|
||||||
|
|
||||||
b.Property<DateTime?>("UpdatedAt")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<Guid?>("UpdatedById")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreatedById");
|
|
||||||
|
|
||||||
b.HasIndex("ProjectId");
|
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
|
||||||
|
|
||||||
b.HasIndex("UpdatedById");
|
|
||||||
|
|
||||||
b.ToTable("Invoices");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.InvoiceAttachment", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("DocumentId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("InvoiceId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("TenantId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("DocumentId");
|
|
||||||
|
|
||||||
b.HasIndex("InvoiceId");
|
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
|
||||||
|
|
||||||
b.ToTable("InvoiceAttachments");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.InvoiceComment", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<string>("Comment")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("longtext");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedAt")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreatedById")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("InvoiceId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("TenantId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreatedById");
|
|
||||||
|
|
||||||
b.HasIndex("InvoiceId");
|
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
|
||||||
|
|
||||||
b.ToTable("InvoiceComments");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.ReceivedInvoicePayment", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<double>("Amount")
|
|
||||||
.HasColumnType("double");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedAt")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<Guid>("CreatedById")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<Guid>("InvoiceId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
|
||||||
.HasColumnType("tinyint(1)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("PaymentReceivedDate")
|
|
||||||
.HasColumnType("datetime(6)");
|
|
||||||
|
|
||||||
b.Property<Guid>("TenantId")
|
|
||||||
.HasColumnType("char(36)");
|
|
||||||
|
|
||||||
b.Property<string>("TransactionId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("longtext");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("CreatedById");
|
|
||||||
|
|
||||||
b.HasIndex("InvoiceId");
|
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
|
||||||
|
|
||||||
b.ToTable("ReceivedInvoicePayments");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Directory.Bucket", b =>
|
modelBuilder.Entity("Marco.Pms.Model.Directory.Bucket", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
@ -4959,120 +4794,6 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
b.Navigation("User");
|
b.Navigation("User");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.Invoice", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Marco.Pms.Model.Employees.Employee", "CreatedBy")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreatedById")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.Projects.Project", "Project")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("ProjectId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.TenantModels.Tenant", "Tenant")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("TenantId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.Employees.Employee", "UpdatedBy")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UpdatedById");
|
|
||||||
|
|
||||||
b.Navigation("CreatedBy");
|
|
||||||
|
|
||||||
b.Navigation("Project");
|
|
||||||
|
|
||||||
b.Navigation("Tenant");
|
|
||||||
|
|
||||||
b.Navigation("UpdatedBy");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.InvoiceAttachment", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Marco.Pms.Model.DocumentManager.Document", "Document")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("DocumentId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.Collection.Invoice", "Invoice")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("InvoiceId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.TenantModels.Tenant", "Tenant")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("TenantId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("Document");
|
|
||||||
|
|
||||||
b.Navigation("Invoice");
|
|
||||||
|
|
||||||
b.Navigation("Tenant");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.InvoiceComment", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Marco.Pms.Model.Employees.Employee", "CreatedBy")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreatedById")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.Collection.Invoice", "Invoice")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("InvoiceId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.TenantModels.Tenant", "Tenant")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("TenantId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("CreatedBy");
|
|
||||||
|
|
||||||
b.Navigation("Invoice");
|
|
||||||
|
|
||||||
b.Navigation("Tenant");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Collection.ReceivedInvoicePayment", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Marco.Pms.Model.Employees.Employee", "CreatedBy")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("CreatedById")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.Collection.Invoice", "Invoice")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("InvoiceId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.TenantModels.Tenant", "Tenant")
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("TenantId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("CreatedBy");
|
|
||||||
|
|
||||||
b.Navigation("Invoice");
|
|
||||||
|
|
||||||
b.Navigation("Tenant");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Marco.Pms.Model.Directory.Bucket", b =>
|
modelBuilder.Entity("Marco.Pms.Model.Directory.Bucket", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Marco.Pms.Model.Employees.Employee", "CreatedBy")
|
b.HasOne("Marco.Pms.Model.Employees.Employee", "CreatedBy")
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
using Marco.Pms.Model.Employees;
|
|
||||||
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.Collection
|
|
||||||
{
|
|
||||||
public class Invoice : TenantRelation
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public string Title { get; set; } = default!;
|
|
||||||
public string Description { get; set; } = default!;
|
|
||||||
public string InvoiceNumber { get; set; } = default!;
|
|
||||||
public Guid ProjectId { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("ProjectId")]
|
|
||||||
public Project? Project { get; set; }
|
|
||||||
public DateTime InvoiceDate { get; set; }
|
|
||||||
public DateTime ClientSubmitedDate { get; set; }
|
|
||||||
public DateTime ExceptedPaymentDate { get; set; }
|
|
||||||
public double Amount { get; set; }
|
|
||||||
public bool IsActive { get; set; } = true;
|
|
||||||
public DateTime CreatedAt { get; set; }
|
|
||||||
public Guid CreatedById { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("CreatedById")]
|
|
||||||
public Employee? CreatedBy { get; set; }
|
|
||||||
public DateTime? UpdatedAt { get; set; }
|
|
||||||
public Guid? UpdatedById { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("UpdatedById")]
|
|
||||||
public Employee? UpdatedBy { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
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.Collection
|
|
||||||
{
|
|
||||||
public class InvoiceAttachment : TenantRelation
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public Guid InvoiceId { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("InvoiceId")]
|
|
||||||
public Invoice? Invoice { get; set; }
|
|
||||||
public Guid DocumentId { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("DocumentId")]
|
|
||||||
public Document? Document { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
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.Collection
|
|
||||||
{
|
|
||||||
public class InvoiceComment : TenantRelation
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public string Comment { get; set; } = default!;
|
|
||||||
public DateTime CreatedAt { get; set; }
|
|
||||||
public Guid CreatedById { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("CreatedById")]
|
|
||||||
public Employee? CreatedBy { get; set; }
|
|
||||||
public Guid InvoiceId { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("InvoiceId")]
|
|
||||||
public Invoice? Invoice { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
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.Collection
|
|
||||||
{
|
|
||||||
public class ReceivedInvoicePayment : TenantRelation
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public Guid InvoiceId { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("InvoiceId")]
|
|
||||||
public Invoice? Invoice { get; set; }
|
|
||||||
public DateTime PaymentReceivedDate { get; set; }
|
|
||||||
public string TransactionId { get; set; } = default!;
|
|
||||||
public double Amount { get; set; }
|
|
||||||
public bool IsActive { get; set; } = true;
|
|
||||||
public DateTime CreatedAt { get; set; }
|
|
||||||
public Guid CreatedById { get; set; }
|
|
||||||
|
|
||||||
[ValidateNever]
|
|
||||||
[ForeignKey("CreatedById")]
|
|
||||||
public Employee? CreatedBy { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
using Marco.Pms.Model.Utilities;
|
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Dtos.Collection
|
|
||||||
{
|
|
||||||
public class InvoiceDto
|
|
||||||
{
|
|
||||||
public Guid? Id { get; set; }
|
|
||||||
public required string Title { get; set; }
|
|
||||||
public string? Description { get; set; }
|
|
||||||
public required string InvoiceNumber { get; set; }
|
|
||||||
public required Guid ProjectId { get; set; }
|
|
||||||
public required DateTime InvoiceDate { get; set; }
|
|
||||||
public required DateTime ClientSubmitedDate { get; set; }
|
|
||||||
public required DateTime ExceptedPaymentDate { get; set; }
|
|
||||||
public required double Amount { get; set; }
|
|
||||||
public List<FileUploadModel>? Attachments { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
using Marco.Pms.Model.ViewModels.Activities;
|
|
||||||
using Marco.Pms.Model.ViewModels.Projects;
|
|
||||||
|
|
||||||
namespace Marco.Pms.Model.ViewModels.Collection
|
|
||||||
{
|
|
||||||
public class InvoiceListVM
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public string Title { get; set; } = default!;
|
|
||||||
public string Description { get; set; } = default!;
|
|
||||||
public string InvoiceNumber { get; set; } = default!;
|
|
||||||
public BasicProjectVM? Project { get; set; }
|
|
||||||
public DateTime InvoiceDate { get; set; }
|
|
||||||
public DateTime ClientSubmitedDate { get; set; }
|
|
||||||
public DateTime ExceptedPaymentDate { get; set; }
|
|
||||||
public double Amount { get; set; }
|
|
||||||
public bool IsActive { get; set; } = true;
|
|
||||||
public DateTime CreatedAt { get; set; }
|
|
||||||
public BasicEmployeeVM? CreatedBy { get; set; }
|
|
||||||
public DateTime? UpdatedAt { get; set; }
|
|
||||||
public BasicEmployeeVM? UpdatedBy { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,175 +0,0 @@
|
|||||||
using AutoMapper;
|
|
||||||
using Marco.Pms.DataAccess.Data;
|
|
||||||
using Marco.Pms.Model.Collection;
|
|
||||||
using Marco.Pms.Model.DocumentManager;
|
|
||||||
using Marco.Pms.Model.Dtos.Collection;
|
|
||||||
using Marco.Pms.Model.Utilities;
|
|
||||||
using Marco.Pms.Model.ViewModels.Activities;
|
|
||||||
using Marco.Pms.Model.ViewModels.Collection;
|
|
||||||
using Marco.Pms.Model.ViewModels.Projects;
|
|
||||||
using Marco.Pms.Services.Service;
|
|
||||||
using MarcoBMS.Services.Helpers;
|
|
||||||
using MarcoBMS.Services.Service;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
namespace Marco.Pms.Services.Controllers
|
|
||||||
{
|
|
||||||
[Route("api/[controller]")]
|
|
||||||
[ApiController]
|
|
||||||
[Authorize]
|
|
||||||
public class CollectionController : ControllerBase
|
|
||||||
{
|
|
||||||
private readonly IDbContextFactory<ApplicationDbContext> _dbContextFactory;
|
|
||||||
private readonly IServiceScopeFactory _serviceScopeFactory;
|
|
||||||
private readonly UserHelper _userHelper;
|
|
||||||
private readonly S3UploadService _s3Service;
|
|
||||||
private readonly IMapper _mapper;
|
|
||||||
private readonly ILoggingService _logger;
|
|
||||||
private readonly Guid tenantId;
|
|
||||||
public CollectionController(IDbContextFactory<ApplicationDbContext> dbContextFactory,
|
|
||||||
IServiceScopeFactory serviceScopeFactory,
|
|
||||||
S3UploadService s3Service,
|
|
||||||
UserHelper userhelper,
|
|
||||||
ILoggingService logger,
|
|
||||||
IMapper mapper)
|
|
||||||
{
|
|
||||||
_dbContextFactory = dbContextFactory;
|
|
||||||
_serviceScopeFactory = serviceScopeFactory;
|
|
||||||
_userHelper = userhelper;
|
|
||||||
_s3Service = s3Service;
|
|
||||||
_mapper = mapper;
|
|
||||||
_logger = logger;
|
|
||||||
tenantId = userhelper.GetTenantId();
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("invoice/create")]
|
|
||||||
public async Task<IActionResult> CreateInvoiceAsync(InvoiceDto model)
|
|
||||||
{
|
|
||||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
|
||||||
using var scope = _serviceScopeFactory.CreateScope();
|
|
||||||
var permissionService = scope.ServiceProvider.GetRequiredService<PermissionServices>();
|
|
||||||
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
|
||||||
|
|
||||||
_logger.LogInfo("Starting invoice creation for ProjectId: {ProjectId} by EmployeeId: {EmployeeId}",
|
|
||||||
model.ProjectId, loggedInEmployee.Id);
|
|
||||||
|
|
||||||
// Validate date sequence
|
|
||||||
if (model.InvoiceDate.Date > model.ClientSubmitedDate.Date)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Invoice date {InvoiceDate} is later than client submitted date {ClientSubmitedDate}",
|
|
||||||
model.InvoiceDate, model.ClientSubmitedDate);
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse(
|
|
||||||
"Invoice date is later than client submitted date",
|
|
||||||
"Invoice date is later than client submitted date", 400));
|
|
||||||
}
|
|
||||||
if (model.ClientSubmitedDate.Date > model.ExceptedPaymentDate.Date)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Client submitted date {ClientSubmitedDate} is later than expected payment date {ExpectedPaymentDate}",
|
|
||||||
model.ClientSubmitedDate, model.ExceptedPaymentDate);
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse(
|
|
||||||
"Client submitted date is later than expected payment date",
|
|
||||||
"Client submitted date is later than expected payment date", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetch project
|
|
||||||
var project = await context.Projects
|
|
||||||
.FirstOrDefaultAsync(p => p.Id == model.ProjectId && p.TenantId == tenantId);
|
|
||||||
if (project == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Project not found: ProjectId {ProjectId}, TenantId {TenantId}",
|
|
||||||
model.ProjectId, tenantId);
|
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Project not found", "Project not found", 404));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Begin transaction scope with async flow support
|
|
||||||
await using var transaction = await context.Database.BeginTransactionAsync();
|
|
||||||
var invoice = new Invoice();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Map and create invoice
|
|
||||||
invoice = _mapper.Map<Invoice>(model);
|
|
||||||
invoice.IsActive = true;
|
|
||||||
invoice.CreatedAt = DateTime.UtcNow;
|
|
||||||
invoice.CreatedById = loggedInEmployee.Id;
|
|
||||||
invoice.TenantId = tenantId;
|
|
||||||
|
|
||||||
context.Invoices.Add(invoice);
|
|
||||||
await context.SaveChangesAsync(); // Save to generate invoice.Id
|
|
||||||
|
|
||||||
// Handle attachments
|
|
||||||
var documents = new List<Document>();
|
|
||||||
var invoiceAttachments = new List<InvoiceAttachment>();
|
|
||||||
if (model.Attachments?.Any() == true)
|
|
||||||
{
|
|
||||||
var batchId = Guid.NewGuid();
|
|
||||||
|
|
||||||
foreach (var attachment in model.Attachments)
|
|
||||||
{
|
|
||||||
string base64 = attachment.Base64Data?.Split(',').LastOrDefault() ?? "";
|
|
||||||
if (string.IsNullOrWhiteSpace(base64))
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Base64 data is missing for attachment {FileName}", attachment.FileName ?? "");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("Base64 data is missing", "Image data missing", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileType = _s3Service.GetContentTypeFromBase64(base64);
|
|
||||||
var fileName = _s3Service.GenerateFileName(fileType, tenantId, "invoice");
|
|
||||||
var objectKey = $"tenant-{tenantId}/Project/{model.ProjectId}/Invoice/{fileName}";
|
|
||||||
|
|
||||||
await _s3Service.UploadFileAsync(base64, fileType, objectKey);
|
|
||||||
|
|
||||||
var document = new Document
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid(),
|
|
||||||
BatchId = batchId,
|
|
||||||
UploadedById = loggedInEmployee.Id,
|
|
||||||
FileName = attachment.FileName ?? fileName,
|
|
||||||
ContentType = attachment.ContentType,
|
|
||||||
S3Key = objectKey,
|
|
||||||
FileSize = attachment.FileSize,
|
|
||||||
UploadedAt = DateTime.UtcNow,
|
|
||||||
TenantId = tenantId
|
|
||||||
};
|
|
||||||
documents.Add(document);
|
|
||||||
|
|
||||||
var invoiceAttachment = new InvoiceAttachment
|
|
||||||
{
|
|
||||||
InvoiceId = invoice.Id,
|
|
||||||
DocumentId = document.Id,
|
|
||||||
TenantId = tenantId
|
|
||||||
};
|
|
||||||
invoiceAttachments.Add(invoiceAttachment);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.Documents.AddRange(documents);
|
|
||||||
context.InvoiceAttachments.AddRange(invoiceAttachments);
|
|
||||||
await context.SaveChangesAsync(); // Save attachments and mappings
|
|
||||||
}
|
|
||||||
|
|
||||||
// Commit transaction
|
|
||||||
await transaction.CommitAsync();
|
|
||||||
_logger.LogInfo("Invoice {InvoiceId} created successfully with {AttachmentCount} attachments.",
|
|
||||||
invoice.Id, documents.Count);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
await transaction.RollbackAsync();
|
|
||||||
_logger.LogError(ex, "Transaction rolled back during invoice creation for ProjectId {ProjectId}", model.ProjectId);
|
|
||||||
return StatusCode(500, ApiResponse<object>.ErrorResponse(
|
|
||||||
"Transaction failed: " + ex.Message,
|
|
||||||
"An error occurred while creating the invoice", 500));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build response
|
|
||||||
var response = _mapper.Map<InvoiceListVM>(invoice);
|
|
||||||
response.Project = _mapper.Map<BasicProjectVM>(project);
|
|
||||||
response.CreatedBy = _mapper.Map<BasicEmployeeVM>(loggedInEmployee);
|
|
||||||
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(response, "Invoice Created Successfully", 201));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,9 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Marco.Pms.Model.AppMenu;
|
using Marco.Pms.Model.AppMenu;
|
||||||
using Marco.Pms.Model.Collection;
|
|
||||||
using Marco.Pms.Model.Directory;
|
using Marco.Pms.Model.Directory;
|
||||||
using Marco.Pms.Model.DocumentManager;
|
using Marco.Pms.Model.DocumentManager;
|
||||||
using Marco.Pms.Model.Dtos.Activities;
|
using Marco.Pms.Model.Dtos.Activities;
|
||||||
using Marco.Pms.Model.Dtos.AppMenu;
|
using Marco.Pms.Model.Dtos.AppMenu;
|
||||||
using Marco.Pms.Model.Dtos.Collection;
|
|
||||||
using Marco.Pms.Model.Dtos.Directory;
|
using Marco.Pms.Model.Dtos.Directory;
|
||||||
using Marco.Pms.Model.Dtos.DocumentManager;
|
using Marco.Pms.Model.Dtos.DocumentManager;
|
||||||
using Marco.Pms.Model.Dtos.Employees;
|
using Marco.Pms.Model.Dtos.Employees;
|
||||||
@ -28,7 +26,6 @@ using Marco.Pms.Model.Projects;
|
|||||||
using Marco.Pms.Model.TenantModels;
|
using Marco.Pms.Model.TenantModels;
|
||||||
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
||||||
using Marco.Pms.Model.ViewModels.Activities;
|
using Marco.Pms.Model.ViewModels.Activities;
|
||||||
using Marco.Pms.Model.ViewModels.Collection;
|
|
||||||
using Marco.Pms.Model.ViewModels.Directory;
|
using Marco.Pms.Model.ViewModels.Directory;
|
||||||
using Marco.Pms.Model.ViewModels.DocumentManager;
|
using Marco.Pms.Model.ViewModels.DocumentManager;
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
using Marco.Pms.Model.ViewModels.Employee;
|
||||||
@ -258,11 +255,6 @@ namespace Marco.Pms.Services.MappingProfiles
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ======================================================= Collection =======================================================
|
|
||||||
CreateMap<InvoiceDto, Invoice>();
|
|
||||||
CreateMap<Invoice, InvoiceListVM>();
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region ======================================================= Master =======================================================
|
#region ======================================================= Master =======================================================
|
||||||
|
|
||||||
CreateMap<FeaturePermission, FeaturePermissionVM>();
|
CreateMap<FeaturePermission, FeaturePermissionVM>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user