Ashutosh_Feature#208_WorkCategory_Master_Table #43
@ -6,8 +6,9 @@ using Marco.Pms.Model.DocumentManager;
|
|||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Forum;
|
using Marco.Pms.Model.Forum;
|
||||||
using Marco.Pms.Model.Industries;
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
using Marco.Pms.Model.Roles;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
@ -87,6 +88,7 @@ namespace Marco.Pms.DataAccess.Data
|
|||||||
public DbSet<TicketTagMaster> TicketTagMasters { get; set; }
|
public DbSet<TicketTagMaster> TicketTagMasters { get; set; }
|
||||||
public DbSet<Document> Documents { get; set; }
|
public DbSet<Document> Documents { get; set; }
|
||||||
public DbSet<TicketTag> TicketTags { get; set; }
|
public DbSet<TicketTag> TicketTags { get; set; }
|
||||||
|
public DbSet<WorkCategoryMaster> WorkCategoryMasters { get; set; }
|
||||||
|
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
@ -402,6 +404,33 @@ namespace Marco.Pms.DataAccess.Data
|
|||||||
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26")
|
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26")
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
modelBuilder.Entity<WorkCategoryMaster>().HasData(
|
||||||
|
new WorkCategoryMaster
|
||||||
|
{
|
||||||
|
Id = new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"),
|
||||||
|
Name = "Fresh Work",
|
||||||
|
Description = "Created new task in a professional or creative context",
|
||||||
|
IsSystem = true,
|
||||||
|
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26")
|
||||||
|
},
|
||||||
|
new WorkCategoryMaster
|
||||||
|
{
|
||||||
|
Id = new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"),
|
||||||
|
Name = "Rework",
|
||||||
|
Description = "Revising, modifying, or correcting a task to improve its quality or fix issues",
|
||||||
|
IsSystem = true,
|
||||||
|
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26")
|
||||||
|
},
|
||||||
|
new WorkCategoryMaster
|
||||||
|
{
|
||||||
|
Id = new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"),
|
||||||
|
Name = "Quality Issue",
|
||||||
|
Description = "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.",
|
||||||
|
IsSystem = true,
|
||||||
|
TenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26")
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ManageApplicationStructure(ModelBuilder modelBuilder)
|
private static void ManageApplicationStructure(ModelBuilder modelBuilder)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels.Projects;
|
||||||
using Marco.Pms.Utility;
|
using Marco.Pms.Utility;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
2500
Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs
generated
Normal file
2500
Marco.Pms.DataAccess/Migrations/20250510074238_Added_WorkCategory_Master_Table.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,63 @@
|
|||||||
|
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_WorkCategory_Master_Table : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "WorkCategoryMasters",
|
||||||
|
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"),
|
||||||
|
IsSystem = 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_WorkCategoryMasters", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_WorkCategoryMasters_Tenants_TenantId",
|
||||||
|
column: x => x.TenantId,
|
||||||
|
principalTable: "Tenants",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "WorkCategoryMasters",
|
||||||
|
columns: new[] { "Id", "Description", "IsSystem", "Name", "TenantId" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ new Guid("11a79929-1d07-42dc-9e98-82d0d2f4a240"), "Any defect, deviation, or non-conformance in a task that fails to meet established standards or customer expectations.", true, "Quality Issue", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("86bb2cc8-f6b5-4fdd-bbee-c389c713a44b"), "Created new task in a professional or creative context", true, "Fresh Work", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") },
|
||||||
|
{ new Guid("9ebfa19c-53b9-481b-b863-c25d2f843201"), "Revising, modifying, or correcting a task to improve its quality or fix issues", true, "Rework", new Guid("b3466e83-7e11-464c-b93a-daf047838b26") }
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_WorkCategoryMasters_TenantId",
|
||||||
|
table: "WorkCategoryMasters",
|
||||||
|
column: "TenantId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "WorkCategoryMasters");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Dtos.Forum
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
{
|
{
|
||||||
public class TicketPriorityMasterDto
|
public class TicketPriorityMasterDto
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Dtos.Forum
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
{
|
{
|
||||||
public class TicketStatusMasterDto
|
public class TicketStatusMasterDto
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Dtos.Forum
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
{
|
{
|
||||||
public class TicketTagMasterDto
|
public class TicketTagMasterDto
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Dtos.Forum
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
{
|
{
|
||||||
public class TicketTypeMasterDto
|
public class TicketTypeMasterDto
|
||||||
{
|
{
|
9
Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Master/WorkCategoryMasterDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace Marco.Pms.Model.Dtos.Master
|
||||||
|
{
|
||||||
|
public class WorkCategoryMasterDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string? Description { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
|
using Marco.Pms.Model.Roles;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Roles;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Employees
|
||||||
{
|
{
|
||||||
public class EmployeeRoleMapping : TenantRelation
|
public class EmployeeRoleMapping : TenantRelation
|
||||||
{
|
{
|
@ -1,5 +1,5 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Marco.Pms.Model.Industries;
|
using Marco.Pms.Model.Master;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Entitlements
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Entitlements
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace Marco.Pms.Model.Forum
|
using Marco.Pms.Model.Master;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Forum
|
||||||
{
|
{
|
||||||
public class TicketTag
|
public class TicketTag
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Marco.Pms.Model.Activities;
|
using Marco.Pms.Model.Activities;
|
||||||
using Marco.Pms.Model.Dtos.Activities;
|
using Marco.Pms.Model.Dtos.Activities;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.ViewModels.Activities;
|
using Marco.Pms.Model.ViewModels.Activities;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Marco.Pms.Model.Dtos.Roles;
|
using Marco.Pms.Model.Dtos.Roles;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Roles;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels;
|
||||||
|
using Marco.Pms.Model.ViewModels.Roles;
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
{
|
{
|
||||||
@ -73,4 +74,4 @@ namespace Marco.Pms.Model.Mapper
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
using Marco.Pms.Model.Dtos.Employees;
|
using Marco.Pms.Model.Dtos.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Employees;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using Marco.Pms.Model.DocumentManager;
|
using Marco.Pms.Model.DocumentManager;
|
||||||
using Marco.Pms.Model.Dtos.Forum;
|
using Marco.Pms.Model.Dtos.Forum;
|
||||||
|
using Marco.Pms.Model.Dtos.Master;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Forum;
|
using Marco.Pms.Model.Forum;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.ViewModels.Forum;
|
using Marco.Pms.Model.ViewModels.Forum;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
|
31
Marco.Pms.Model/Mapper/MasterMapper.cs
Normal file
31
Marco.Pms.Model/Mapper/MasterMapper.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
using Marco.Pms.Model.Dtos.Master;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Mapper
|
||||||
|
{
|
||||||
|
public static class MasterMapper
|
||||||
|
{
|
||||||
|
// -------------------------------- Work Category --------------------------------
|
||||||
|
public static WorkCategoryMaster ToWorkCategoryMasterFromWorkCategoryMasterDto(this WorkCategoryMasterDto categoryMasterDto, Guid tenantId)
|
||||||
|
{
|
||||||
|
return new WorkCategoryMaster
|
||||||
|
{
|
||||||
|
Id = categoryMasterDto.Id ?? Guid.Empty,
|
||||||
|
Name = categoryMasterDto.Name,
|
||||||
|
Description = categoryMasterDto.Description ?? "",
|
||||||
|
TenantId = tenantId
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static WorkCategoryMasterVM ToWorkCategoryMasterVMFromWorkCategoryMaster(this WorkCategoryMaster categoryMaster)
|
||||||
|
{
|
||||||
|
return new WorkCategoryMasterVM
|
||||||
|
{
|
||||||
|
Id = categoryMaster.Id,
|
||||||
|
Name = categoryMaster.Name,
|
||||||
|
Description = categoryMaster.Description ?? "",
|
||||||
|
IsSystem = categoryMaster.IsSystem
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Dtos.Project;
|
using Marco.Pms.Model.Dtos.Project;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels.Projects;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
namespace Marco.Pms.Model.Mapper
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class ActivityMaster : TenantRelation
|
public class ActivityMaster : TenantRelation
|
||||||
{
|
{
|
@ -1,7 +1,8 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class Feature
|
public class Feature
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Industries
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class Industry
|
public class Industry
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class Module
|
public class Module
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class StatusMaster : TenantRelation
|
public class StatusMaster : TenantRelation
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Forum
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class TicketPriorityMaster
|
public class TicketPriorityMaster
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Forum
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class TicketStatusMaster
|
public class TicketStatusMaster
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Forum
|
namespace Marco.Pms.Model.Master
|
||||||
{
|
{
|
||||||
public class TicketTagMaster
|
public class TicketTagMaster
|
||||||
{
|
{
|
12
Marco.Pms.Model/Master/WorkCategoryMaster.cs
Normal file
12
Marco.Pms.Model/Master/WorkCategoryMaster.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.Master
|
||||||
|
{
|
||||||
|
public class WorkCategoryMaster : TenantRelation
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public bool IsSystem { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Roles
|
||||||
{
|
{
|
||||||
public class ApplicationRole
|
public class ApplicationRole
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Entitlements
|
namespace Marco.Pms.Model.Roles
|
||||||
{
|
{
|
||||||
public class JobRole : TenantRelation
|
public class JobRole : TenantRelation
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Employee
|
||||||
{
|
{
|
||||||
public class EmployeeRolesVM
|
public class EmployeeRolesVM
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Master
|
||||||
{
|
{
|
||||||
public class FeaturePermissionVM
|
public class FeaturePermissionVM
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Master
|
||||||
{
|
{
|
||||||
public class FeatureVM
|
public class FeatureVM
|
||||||
{
|
{
|
11
Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs
Normal file
11
Marco.Pms.Model/ViewModels/Master/WorkCategoryMasterVM.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
namespace Marco.Pms.Model.ViewModels.Master
|
||||||
|
{
|
||||||
|
public class WorkCategoryMasterVM
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string? Description { get; set; }
|
||||||
|
public bool IsSystem { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,4 @@
|
|||||||
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Dtos.Project
|
|
||||||
{
|
{
|
||||||
public class BuildingVM
|
public class BuildingVM
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Dtos.Project
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class FloorsVM
|
public class FloorsVM
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class InfraVM
|
public class InfraVM
|
||||||
{
|
{
|
@ -2,7 +2,7 @@
|
|||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class ProjectDetailsVM
|
public class ProjectDetailsVM
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class ProjectListVM
|
public class ProjectListVM
|
||||||
{
|
{
|
@ -1,4 +1,6 @@
|
|||||||
namespace Marco.Pms.Model.Dtos.Project
|
using Marco.Pms.Model.Dtos.Project;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class ProjectVM : ProjectDto
|
public class ProjectVM : ProjectDto
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Dtos.Project
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class WorkAreaVM
|
public class WorkAreaVM
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Dtos.Project
|
namespace Marco.Pms.Model.ViewModels.Projects
|
||||||
{
|
{
|
||||||
public class WorkItemVM
|
public class WorkItemVM
|
||||||
{
|
{
|
@ -1,4 +1,6 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.ViewModels.Roles
|
||||||
{
|
{
|
||||||
public class ApplicationRolesVM
|
public class ApplicationRolesVM
|
||||||
{
|
{
|
@ -1,4 +1,6 @@
|
|||||||
namespace Marco.Pms.Model.ViewModels
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
|
||||||
|
namespace Marco.Pms.Model.ViewModels.Roles
|
||||||
{
|
{
|
||||||
|
|
||||||
public class RolesVM
|
public class RolesVM
|
@ -8,7 +8,6 @@ using Marco.Pms.Model.Entitlements;
|
|||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels;
|
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
using Marco.Pms.Model.ViewModels.Employee;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ using Marco.Pms.Model.Dtos.Forum;
|
|||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Forum;
|
using Marco.Pms.Model.Forum;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels.Forum;
|
using Marco.Pms.Model.ViewModels.Forum;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Dtos.Util;
|
using Marco.Pms.Model.Dtos.Util;
|
||||||
using Marco.Pms.Model.Industries;
|
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Dtos.Activities;
|
using Marco.Pms.Model.Dtos.Activities;
|
||||||
using Marco.Pms.Model.Dtos.Forum;
|
using Marco.Pms.Model.Dtos.Master;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Forum;
|
using Marco.Pms.Model.Forum;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Master;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels.Activities;
|
using Marco.Pms.Model.ViewModels.Activities;
|
||||||
using Marco.Pms.Model.ViewModels.Forum;
|
using Marco.Pms.Model.ViewModels.Forum;
|
||||||
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@ -29,6 +31,8 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
_userHelper = userHelper;
|
_userHelper = userHelper;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Activity --------------------------------
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("activities")]
|
[Route("activities")]
|
||||||
public async Task<IActionResult> GetActivitiesMaster()
|
public async Task<IActionResult> GetActivitiesMaster()
|
||||||
@ -178,6 +182,9 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
_logger.LogInfo("Activity Deleted Successfully from tenant {tenantId}", tenantId);
|
_logger.LogInfo("Activity Deleted Successfully from tenant {tenantId}", tenantId);
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Activity Deleted Successfully", 200));
|
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Activity Deleted Successfully", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Industry --------------------------------
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("industries")]
|
[Route("industries")]
|
||||||
public async Task<IActionResult> GetIndustries()
|
public async Task<IActionResult> GetIndustries()
|
||||||
@ -189,6 +196,8 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return Ok(ApiResponse<object>.SuccessResponse(industries, System.String.Format("{0} industry records fetched successfully", industries.Count), 200));
|
return Ok(ApiResponse<object>.SuccessResponse(industries, System.String.Format("{0} industry records fetched successfully", industries.Count), 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Ticket Status --------------------------------
|
||||||
|
|
||||||
[HttpGet("ticket-status")]
|
[HttpGet("ticket-status")]
|
||||||
public async Task<IActionResult> GetTicketStatusMaster()
|
public async Task<IActionResult> GetTicketStatusMaster()
|
||||||
{
|
{
|
||||||
@ -204,53 +213,8 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return Ok(ApiResponse<object>.SuccessResponse(statusVMs, System.String.Format("{0} Ticket Status records fetched successfully", statusVMs.Count), 200));
|
return Ok(ApiResponse<object>.SuccessResponse(statusVMs, System.String.Format("{0} Ticket Status records fetched successfully", statusVMs.Count), 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("ticket-types")]
|
|
||||||
public async Task<IActionResult> GetTicketTypeMaster()
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
List<TicketTypeVM> typeVMs = new List<TicketTypeVM>();
|
|
||||||
List<TicketTypeMaster> typeMasters = await _context.TicketTypeMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
|
||||||
foreach (var typeMaster in typeMasters)
|
|
||||||
{
|
|
||||||
typeVMs.Add(typeMaster.ToTicketTypeVMFromTicketTypeMaster());
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInfo("{count} Ticket Type records fetched successfully from tenant {tenantId}", typeVMs.Count, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVMs, System.String.Format("{0} Ticket Type records fetched successfully", typeVMs.Count), 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("ticket-priorities")]
|
|
||||||
public async Task<IActionResult> GetTicketPriorityMaster()
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
List<TicketPriorityVM> priorityVMs = new List<TicketPriorityVM>();
|
|
||||||
List<TicketPriorityMaster> priorityMasters = await _context.TicketPriorityMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
|
||||||
foreach (var priorityMaster in priorityMasters)
|
|
||||||
{
|
|
||||||
priorityVMs.Add(priorityMaster.ToTicketPriorityVMFromTicketPriorityMaster());
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInfo("{count} Ticket Priority records fetched successfully from tenant {tenantId}", priorityVMs.Count, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(priorityVMs, System.String.Format("{0} Ticket Priority records fetched successfully", priorityVMs.Count), 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("ticket-tags")]
|
|
||||||
public async Task<IActionResult> GetTicketTagMaster()
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
List<TicketTagVM> tagVMs = new List<TicketTagVM>();
|
|
||||||
List<TicketTagMaster> tagMasters = await _context.TicketTagMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
|
||||||
foreach (var tagMaster in tagMasters)
|
|
||||||
{
|
|
||||||
tagVMs.Add(tagMaster.ToTicketTagVMFromTicketTagMaster());
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInfo("{count} Ticket Tag records fetched successfully from tenant {tenantId}", tagVMs.Count, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(tagVMs, System.String.Format("{0} Ticket Tag records fetched successfully", tagVMs.Count), 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("ticket-status")]
|
[HttpPost("ticket-status")]
|
||||||
public async Task<IActionResult> CreateTicketStatusMaster(TicketStatusMasterDto statusMasterDto)
|
public async Task<IActionResult> CreateTicketStatusMaster([FromBody] TicketStatusMasterDto statusMasterDto)
|
||||||
{
|
{
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
if (statusMasterDto != null)
|
if (statusMasterDto != null)
|
||||||
@ -267,68 +231,11 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return BadRequest(ApiResponse<object>.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("ticket-types")]
|
[HttpPost("ticket-status/edit/{id}")]
|
||||||
public async Task<IActionResult> CreateTicketTypeMaster(TicketTypeMasterDto typeMasterDto)
|
public async Task<IActionResult> UpdateTicketStatusMaster(Guid id, [FromBody] TicketStatusMasterDto statusMasterDto)
|
||||||
{
|
{
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
if (typeMasterDto != null)
|
if (statusMasterDto != null && statusMasterDto.Id != id)
|
||||||
{
|
|
||||||
TicketTypeMaster? typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId);
|
|
||||||
_context.TicketTypeMasters.Update(typeMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster();
|
|
||||||
_logger.LogInfo("Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket type master added successfully", 200));
|
|
||||||
|
|
||||||
}
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("ticket-priorities")]
|
|
||||||
public async Task<IActionResult> CreateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto)
|
|
||||||
{
|
|
||||||
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
if (priorityMasterDto != null)
|
|
||||||
{
|
|
||||||
TicketPriorityMaster? typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId);
|
|
||||||
_context.TicketPriorityMasters.Update(typeMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster();
|
|
||||||
_logger.LogInfo("Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket Priority master added successfully", 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("ticket-tags")]
|
|
||||||
public async Task<IActionResult> CreateTicketTagMaster(TicketTagMasterDto tagMasterDto)
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
if (tagMasterDto != null)
|
|
||||||
{
|
|
||||||
TicketTagMaster? tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId);
|
|
||||||
_context.TicketTagMasters.Update(tagMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster();
|
|
||||||
_logger.LogInfo("Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}", tagMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket tag master added successfully", 200));
|
|
||||||
|
|
||||||
}
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
[HttpPost("ticket-status/edit")]
|
|
||||||
public async Task<IActionResult> UpdateTicketStatusMaster(TicketStatusMasterDto statusMasterDto)
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
if (statusMasterDto != null)
|
|
||||||
{
|
{
|
||||||
TicketStatusMaster? statusMaster = await _context.TicketStatusMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == statusMasterDto.Id);
|
TicketStatusMaster? statusMaster = await _context.TicketStatusMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == statusMasterDto.Id);
|
||||||
if (statusMaster != null)
|
if (statusMaster != null)
|
||||||
@ -348,78 +255,6 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return BadRequest(ApiResponse<object>.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Sent Empty payload", "Sent Empty payload", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("ticket-types/edit")]
|
|
||||||
public async Task<IActionResult> UpdateTicketTypeMaster(TicketTypeMasterDto typeMasterDto)
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
if (typeMasterDto != null)
|
|
||||||
{
|
|
||||||
TicketTypeMaster? typeMaster = await _context.TicketTypeMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == typeMasterDto.Id);
|
|
||||||
if (typeMaster != null)
|
|
||||||
{
|
|
||||||
typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId);
|
|
||||||
_context.TicketTypeMasters.Update(typeMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster();
|
|
||||||
_logger.LogInfo("Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket type master updated successfully", 200));
|
|
||||||
}
|
|
||||||
_logger.LogError("Ticket type master {TicketTypeId} not found in database", typeMasterDto.Id != null ? typeMasterDto.Id.Value : Guid.Empty);
|
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Ticket type master not found", "Ticket type master not found", 404));
|
|
||||||
}
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("ticket-priorities/edit")]
|
|
||||||
public async Task<IActionResult> UpdateTicketPriorityMaster(TicketPriorityMasterDto priorityMasterDto)
|
|
||||||
{
|
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
|
||||||
if (priorityMasterDto != null)
|
|
||||||
{
|
|
||||||
TicketPriorityMaster? typeMaster = await _context.TicketPriorityMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == priorityMasterDto.Id);
|
|
||||||
if (typeMaster != null)
|
|
||||||
{
|
|
||||||
typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId);
|
|
||||||
_context.TicketPriorityMasters.Update(typeMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster();
|
|
||||||
_logger.LogInfo("Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket Priority master updated successfully", 200));
|
|
||||||
}
|
|
||||||
_logger.LogError("Ticket Priority master {TicketPriorityId} not found in database", priorityMasterDto.Id != null ? priorityMasterDto.Id.Value : Guid.Empty);
|
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Ticket Priority master not found", "Ticket Priority master not found", 404));
|
|
||||||
}
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("ticket-tags/edit")]
|
|
||||||
public async Task<IActionResult> UpdateTicketTagMaster(TicketTagMasterDto tagMasterDto)
|
|
||||||
{
|
|
||||||
var tenantId = _userHelper.GetTenantId();
|
|
||||||
if (tagMasterDto != null)
|
|
||||||
{
|
|
||||||
TicketTagMaster? tagMaster = await _context.TicketTagMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == tagMasterDto.Id);
|
|
||||||
if (tagMaster != null)
|
|
||||||
{
|
|
||||||
tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId);
|
|
||||||
_context.TicketTagMasters.Update(tagMaster);
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
|
|
||||||
TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster();
|
|
||||||
_logger.LogInfo("Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}", tagMaster.Id, tenantId);
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket tag master updated successfully", 200));
|
|
||||||
}
|
|
||||||
_logger.LogError("Ticket tag master {TicketTypeId} not found in database", tagMasterDto.Id != null ? tagMasterDto.Id.Value : Guid.Empty);
|
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Ticket tag master not found", "Ticket tag master not found", 404));
|
|
||||||
}
|
|
||||||
_logger.LogError("User sent empyt payload");
|
|
||||||
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpDelete("ticket-status/{id}")]
|
[HttpDelete("ticket-status/{id}")]
|
||||||
public async Task<IActionResult> DeleteTicketStatusMaster(Guid id)
|
public async Task<IActionResult> DeleteTicketStatusMaster(Guid id)
|
||||||
{
|
{
|
||||||
@ -448,6 +283,66 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Ticket Type --------------------------------
|
||||||
|
|
||||||
|
[HttpGet("ticket-types")]
|
||||||
|
public async Task<IActionResult> GetTicketTypeMaster()
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
List<TicketTypeVM> typeVMs = new List<TicketTypeVM>();
|
||||||
|
List<TicketTypeMaster> typeMasters = await _context.TicketTypeMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
||||||
|
foreach (var typeMaster in typeMasters)
|
||||||
|
{
|
||||||
|
typeVMs.Add(typeMaster.ToTicketTypeVMFromTicketTypeMaster());
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInfo("{count} Ticket Type records fetched successfully from tenant {tenantId}", typeVMs.Count, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVMs, System.String.Format("{0} Ticket Type records fetched successfully", typeVMs.Count), 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("ticket-types")]
|
||||||
|
public async Task<IActionResult> CreateTicketTypeMaster([FromBody] TicketTypeMasterDto typeMasterDto)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (typeMasterDto != null)
|
||||||
|
{
|
||||||
|
TicketTypeMaster? typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId);
|
||||||
|
_context.TicketTypeMasters.Add(typeMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster();
|
||||||
|
_logger.LogInfo("Ticket Type master {TicketTypeId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket type master added successfully", 200));
|
||||||
|
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("ticket-types/edit/{id}")]
|
||||||
|
public async Task<IActionResult> UpdateTicketTypeMaster(Guid id, [FromBody] TicketTypeMasterDto typeMasterDto)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (typeMasterDto != null && typeMasterDto.Id != id)
|
||||||
|
{
|
||||||
|
TicketTypeMaster? typeMaster = await _context.TicketTypeMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == typeMasterDto.Id);
|
||||||
|
if (typeMaster != null)
|
||||||
|
{
|
||||||
|
typeMaster = typeMasterDto.ToTicketTypeMasterFromTicketTypeMasterDto(tenantId);
|
||||||
|
_context.TicketTypeMasters.Update(typeMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketTypeVM typeVM = typeMaster.ToTicketTypeVMFromTicketTypeMaster();
|
||||||
|
_logger.LogInfo("Ticket Type master {TicketTypeId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket type master updated successfully", 200));
|
||||||
|
}
|
||||||
|
_logger.LogError("Ticket type master {TicketTypeId} not found in database", typeMasterDto.Id != null ? typeMasterDto.Id.Value : Guid.Empty);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Ticket type master not found", "Ticket type master not found", 404));
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
[HttpDelete("ticket-types/{id}")]
|
[HttpDelete("ticket-types/{id}")]
|
||||||
public async Task<IActionResult> DeleteTicketTypeMaster(Guid id)
|
public async Task<IActionResult> DeleteTicketTypeMaster(Guid id)
|
||||||
{
|
{
|
||||||
@ -476,6 +371,66 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Ticket Priority --------------------------------
|
||||||
|
|
||||||
|
[HttpGet("ticket-priorities")]
|
||||||
|
public async Task<IActionResult> GetTicketPriorityMaster()
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
List<TicketPriorityVM> priorityVMs = new List<TicketPriorityVM>();
|
||||||
|
List<TicketPriorityMaster> priorityMasters = await _context.TicketPriorityMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
||||||
|
foreach (var priorityMaster in priorityMasters)
|
||||||
|
{
|
||||||
|
priorityVMs.Add(priorityMaster.ToTicketPriorityVMFromTicketPriorityMaster());
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInfo("{count} Ticket Priority records fetched successfully from tenant {tenantId}", priorityVMs.Count, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(priorityVMs, System.String.Format("{0} Ticket Priority records fetched successfully", priorityVMs.Count), 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("ticket-priorities")]
|
||||||
|
public async Task<IActionResult> CreateTicketPriorityMaster([FromBody] TicketPriorityMasterDto priorityMasterDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (priorityMasterDto != null)
|
||||||
|
{
|
||||||
|
TicketPriorityMaster? typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId);
|
||||||
|
_context.TicketPriorityMasters.Add(typeMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster();
|
||||||
|
_logger.LogInfo("Ticket Priority master {TicketPriorityId} added successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket Priority master added successfully", 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
[HttpPost("ticket-priorities/edit/{id}")]
|
||||||
|
public async Task<IActionResult> UpdateTicketPriorityMaster(Guid id, [FromBody] TicketPriorityMasterDto priorityMasterDto)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (priorityMasterDto != null && priorityMasterDto.Id != null)
|
||||||
|
{
|
||||||
|
TicketPriorityMaster? typeMaster = await _context.TicketPriorityMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == priorityMasterDto.Id);
|
||||||
|
if (typeMaster != null)
|
||||||
|
{
|
||||||
|
typeMaster = priorityMasterDto.ToTicketPriorityMasterFromTicketPriorityMasterDto(tenantId);
|
||||||
|
_context.TicketPriorityMasters.Update(typeMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketPriorityVM typeVM = typeMaster.ToTicketPriorityVMFromTicketPriorityMaster();
|
||||||
|
_logger.LogInfo("Ticket Priority master {TicketPriorityId} updated successfully from tenant {tenantId}", typeMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket Priority master updated successfully", 200));
|
||||||
|
}
|
||||||
|
_logger.LogError("Ticket Priority master {TicketPriorityId} not found in database", priorityMasterDto.Id != null ? priorityMasterDto.Id.Value : Guid.Empty);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Ticket Priority master not found", "Ticket Priority master not found", 404));
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
[HttpDelete("ticket-priorities/{id}")]
|
[HttpDelete("ticket-priorities/{id}")]
|
||||||
public async Task<IActionResult> DeleteTicketPriorityMaster(Guid id)
|
public async Task<IActionResult> DeleteTicketPriorityMaster(Guid id)
|
||||||
{
|
{
|
||||||
@ -504,6 +459,66 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Ticket Tag --------------------------------
|
||||||
|
|
||||||
|
[HttpGet("ticket-tags")]
|
||||||
|
public async Task<IActionResult> GetTicketTagMaster()
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
List<TicketTagVM> tagVMs = new List<TicketTagVM>();
|
||||||
|
List<TicketTagMaster> tagMasters = await _context.TicketTagMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
||||||
|
foreach (var tagMaster in tagMasters)
|
||||||
|
{
|
||||||
|
tagVMs.Add(tagMaster.ToTicketTagVMFromTicketTagMaster());
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInfo("{count} Ticket Tag records fetched successfully from tenant {tenantId}", tagVMs.Count, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(tagVMs, System.String.Format("{0} Ticket Tag records fetched successfully", tagVMs.Count), 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("ticket-tags")]
|
||||||
|
public async Task<IActionResult> CreateTicketTagMaster([FromBody] TicketTagMasterDto tagMasterDto)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (tagMasterDto != null)
|
||||||
|
{
|
||||||
|
TicketTagMaster? tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId);
|
||||||
|
_context.TicketTagMasters.Add(tagMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster();
|
||||||
|
_logger.LogInfo("Ticket Tag master {TicketTypeId} added successfully from tenant {tenantId}", tagMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket tag master added successfully", 200));
|
||||||
|
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("ticket-tags/edit/{id}")]
|
||||||
|
public async Task<IActionResult> UpdateTicketTagMaster(Guid id, [FromBody] TicketTagMasterDto tagMasterDto)
|
||||||
|
{
|
||||||
|
var tenantId = _userHelper.GetTenantId();
|
||||||
|
if (tagMasterDto != null && tagMasterDto.Id != id)
|
||||||
|
{
|
||||||
|
TicketTagMaster? tagMaster = await _context.TicketTagMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == tagMasterDto.Id);
|
||||||
|
if (tagMaster != null)
|
||||||
|
{
|
||||||
|
tagMaster = tagMasterDto.ToTicketTagMasterFromTicketTagMasterDto(tenantId);
|
||||||
|
_context.TicketTagMasters.Update(tagMaster);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
TicketTagVM typeVM = tagMaster.ToTicketTagVMFromTicketTagMaster();
|
||||||
|
_logger.LogInfo("Ticket Tag master {TicketTypeId} updated successfully from tenant {tenantId}", tagMaster.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(typeVM, "Ticket tag master updated successfully", 200));
|
||||||
|
}
|
||||||
|
_logger.LogError("Ticket tag master {TicketTypeId} not found in database", tagMasterDto.Id != null ? tagMasterDto.Id.Value : Guid.Empty);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Ticket tag master not found", "Ticket tag master not found", 404));
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
[HttpDelete("ticket-tags/{id}")]
|
[HttpDelete("ticket-tags/{id}")]
|
||||||
public async Task<IActionResult> DeleteTicketTagMaster(Guid id)
|
public async Task<IActionResult> DeleteTicketTagMaster(Guid id)
|
||||||
{
|
{
|
||||||
@ -531,5 +546,126 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
return NotFound(ApiResponse<object>.ErrorResponse("Ticket tag not found", "Ticket tag not found", 404));
|
return NotFound(ApiResponse<object>.ErrorResponse("Ticket tag not found", "Ticket tag not found", 404));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------- Work Category --------------------------------
|
||||||
|
|
||||||
|
[HttpGet("work-categories")]
|
||||||
|
public async Task<IActionResult> GetWorkCategoryMasterList()
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
List<WorkCategoryMasterVM> workCategoryMasterVMs = new List<WorkCategoryMasterVM>();
|
||||||
|
List<WorkCategoryMaster> workCategories = await _context.WorkCategoryMasters.Where(s => s.TenantId == tenantId).ToListAsync();
|
||||||
|
foreach (var workCategory in workCategories)
|
||||||
|
{
|
||||||
|
workCategoryMasterVMs.Add(workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster());
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInfo("{count} Work Category records fetched successfully from tenant {tenantId}", workCategoryMasterVMs.Count, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(workCategoryMasterVMs, System.String.Format("{0} Work Category records fetched successfully", workCategoryMasterVMs.Count), 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("work-category/{id})")]
|
||||||
|
public async Task<IActionResult> GetWorkCategoryMaster(Guid id)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == id);
|
||||||
|
if (workCategory != null)
|
||||||
|
{
|
||||||
|
WorkCategoryMasterVM workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster();
|
||||||
|
_logger.LogInfo("{WorkCategoryId} Work Category fetched successfully from tenant {tenantId}", workCategoryMasterVM.Id ?? Guid.Empty, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(workCategoryMasterVM, "Work Category fetched successfully", 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInfo("{WorkCategoryId} Work Category not found in database", id);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Work Category not found", "Work Category not found", 404));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("work-category")]
|
||||||
|
public async Task<IActionResult> CreateWorkCategoryMaster([FromBody] WorkCategoryMasterDto workCategoryMasterDto)
|
||||||
|
{
|
||||||
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
|
if (workCategoryMasterDto != null)
|
||||||
|
{
|
||||||
|
WorkCategoryMaster? existingWorkCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(w => w.Name == workCategoryMasterDto.Name);
|
||||||
|
if (existingWorkCategory != null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Work Category of name {WorkCategoryName} already exist", existingWorkCategory.Name);
|
||||||
|
return Conflict(ApiResponse<object>.ErrorResponse("Work Category already exist", "Work Category already exist", 409));
|
||||||
|
}
|
||||||
|
WorkCategoryMaster? workCategory = workCategoryMasterDto.ToWorkCategoryMasterFromWorkCategoryMasterDto(tenantId);
|
||||||
|
WorkCategoryMasterVM workCategoryMasterVM = new WorkCategoryMasterVM();
|
||||||
|
if (workCategory != null && workCategory.Id == Guid.Empty)
|
||||||
|
{
|
||||||
|
|
||||||
|
_context.WorkCategoryMasters.Add(workCategory);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster();
|
||||||
|
}
|
||||||
|
_logger.LogInfo("Work category master {WorkCategoryId} added successfully from tenant {tenantId}", workCategoryMasterVM.Id ?? Guid.Empty, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(workCategoryMasterVM, "Work category master added successfully", 200));
|
||||||
|
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("work-category/edit/{id}")]
|
||||||
|
public async Task<IActionResult> UpdateWorkCategoryMaster(Guid id, [FromBody] WorkCategoryMasterDto workCategoryMasterDto)
|
||||||
|
{
|
||||||
|
var tenantId = _userHelper.GetTenantId();
|
||||||
|
if (workCategoryMasterDto != null && workCategoryMasterDto.Id != id)
|
||||||
|
{
|
||||||
|
WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == workCategoryMasterDto.Id);
|
||||||
|
if (workCategory != null)
|
||||||
|
{
|
||||||
|
if (workCategory.IsSystem)
|
||||||
|
{
|
||||||
|
_logger.LogError("User tries to update system-defined work category");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Cannot update system-defined work", "Cannot update system-defined work", 400));
|
||||||
|
}
|
||||||
|
workCategory = workCategoryMasterDto.ToWorkCategoryMasterFromWorkCategoryMasterDto(tenantId);
|
||||||
|
_context.WorkCategoryMasters.Update(workCategory);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
WorkCategoryMasterVM workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster();
|
||||||
|
_logger.LogInfo("Work category master {WorkCategoryId} updated successfully from tenant {tenantId}", workCategory.Id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(workCategoryMasterVM, "Work category master updated successfully", 200));
|
||||||
|
}
|
||||||
|
_logger.LogError("Work category master {WorkCategoryId} not found in database", workCategoryMasterDto.Id ?? Guid.Empty);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Work category master not found", "Work category master not found", 404));
|
||||||
|
}
|
||||||
|
_logger.LogError("User sent empyt payload");
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpDelete("work-category/{id}")]
|
||||||
|
public async Task<IActionResult> DeleteWorkCategoryMaster(Guid id)
|
||||||
|
{
|
||||||
|
var tenantId = _userHelper.GetTenantId();
|
||||||
|
var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
|
WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(t => t.TenantId == tenantId && t.Id == id);
|
||||||
|
if (workCategory != null)
|
||||||
|
{
|
||||||
|
if (workCategory.IsSystem == false)
|
||||||
|
{
|
||||||
|
_context.WorkCategoryMasters.Remove(workCategory);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
_logger.LogInfo("Work category {WorkCategoryId} deleted successfully from tenant {tenantId}", id, tenantId);
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Work category deleted successfully", 200));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Employee with {LoggedEmployeeId} tries to delete system-defined work category {WorkCategoryId}", LoggedEmployee.Id, id);
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Can not delete system-defined work category", "Can not delete system-defined work category", 400));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.LogError("Work category {WorkCategoryId} not found in database", id);
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("Work category not found", "Work category not found", 404));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ using Marco.Pms.Model.Entitlements;
|
|||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels;
|
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
using Marco.Pms.Model.ViewModels.Employee;
|
||||||
|
using Marco.Pms.Model.ViewModels.Projects;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@ -653,4 +653,4 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,10 +2,14 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Dtos.Employees;
|
using Marco.Pms.Model.Dtos.Employees;
|
||||||
using Marco.Pms.Model.Dtos.Roles;
|
using Marco.Pms.Model.Dtos.Roles;
|
||||||
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Roles;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels;
|
||||||
|
using Marco.Pms.Model.ViewModels.Master;
|
||||||
|
using Marco.Pms.Model.ViewModels.Roles;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
|
using Marco.Pms.Model.Roles;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user