Corrected the spelling mistake JobTicketId in job attendance
This commit is contained in:
parent
55c2ca73de
commit
a3ffe1d3d6
8873
Marco.Pms.DataAccess/Migrations/20251125072208_Corrected_JobTicketId_Spelling_In_JobAttendance.Designer.cs
generated
Normal file
8873
Marco.Pms.DataAccess/Migrations/20251125072208_Corrected_JobTicketId_Spelling_In_JobAttendance.Designer.cs
generated
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,106 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Marco.Pms.DataAccess.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Corrected_JobTicketId_Spelling_In_JobAttendance : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_JobAttendance_JobTickets_JobTcketId",
|
||||||
|
table: "JobAttendance");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_JobAttendanceLogs_JobTickets_JobTcketId",
|
||||||
|
table: "JobAttendanceLogs");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "JobTcketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
newName: "JobTicketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_JobAttendanceLogs_JobTcketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
newName: "IX_JobAttendanceLogs_JobTicketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "JobTcketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
newName: "JobTicketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_JobAttendance_JobTcketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
newName: "IX_JobAttendance_JobTicketId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_JobAttendance_JobTickets_JobTicketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
column: "JobTicketId",
|
||||||
|
principalTable: "JobTickets",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_JobAttendanceLogs_JobTickets_JobTicketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
column: "JobTicketId",
|
||||||
|
principalTable: "JobTickets",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_JobAttendance_JobTickets_JobTicketId",
|
||||||
|
table: "JobAttendance");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_JobAttendanceLogs_JobTickets_JobTicketId",
|
||||||
|
table: "JobAttendanceLogs");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "JobTicketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
newName: "JobTcketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_JobAttendanceLogs_JobTicketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
newName: "IX_JobAttendanceLogs_JobTcketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "JobTicketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
newName: "JobTcketId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_JobAttendance_JobTicketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
newName: "IX_JobAttendance_JobTcketId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_JobAttendance_JobTickets_JobTcketId",
|
||||||
|
table: "JobAttendance",
|
||||||
|
column: "JobTcketId",
|
||||||
|
principalTable: "JobTickets",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_JobAttendanceLogs_JobTickets_JobTcketId",
|
||||||
|
table: "JobAttendanceLogs",
|
||||||
|
column: "JobTcketId",
|
||||||
|
principalTable: "JobTickets",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5054,7 +5054,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
b.Property<Guid>("EmployeeId")
|
b.Property<Guid>("EmployeeId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<Guid>("JobTcketId")
|
b.Property<Guid>("JobTicketId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<DateTime>("TaggedInAt")
|
b.Property<DateTime>("TaggedInAt")
|
||||||
@ -5076,7 +5076,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
|
|
||||||
b.HasIndex("EmployeeId");
|
b.HasIndex("EmployeeId");
|
||||||
|
|
||||||
b.HasIndex("JobTcketId");
|
b.HasIndex("JobTicketId");
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
b.HasIndex("TenantId");
|
||||||
|
|
||||||
@ -5104,7 +5104,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
b.Property<Guid>("JobAttendanceId")
|
b.Property<Guid>("JobAttendanceId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<Guid>("JobTcketId")
|
b.Property<Guid>("JobTicketId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<string>("Latitude")
|
b.Property<string>("Latitude")
|
||||||
@ -5130,7 +5130,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
|
|
||||||
b.HasIndex("JobAttendanceId");
|
b.HasIndex("JobAttendanceId");
|
||||||
|
|
||||||
b.HasIndex("JobTcketId");
|
b.HasIndex("JobTicketId");
|
||||||
|
|
||||||
b.HasIndex("TenantId");
|
b.HasIndex("TenantId");
|
||||||
|
|
||||||
@ -8253,7 +8253,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.ServiceProject.JobTicket", "JobTicket")
|
b.HasOne("Marco.Pms.Model.ServiceProject.JobTicket", "JobTicket")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("JobTcketId")
|
.HasForeignKey("JobTicketId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
@ -8290,7 +8290,7 @@ namespace Marco.Pms.DataAccess.Migrations
|
|||||||
|
|
||||||
b.HasOne("Marco.Pms.Model.ServiceProject.JobTicket", "JobTicket")
|
b.HasOne("Marco.Pms.Model.ServiceProject.JobTicket", "JobTicket")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("JobTcketId")
|
.HasForeignKey("JobTicketId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ namespace Marco.Pms.Model.Dtos.ServiceProject
|
|||||||
{
|
{
|
||||||
public class JobAttendanceDto
|
public class JobAttendanceDto
|
||||||
{
|
{
|
||||||
public required Guid JobTcketId { get; set; }
|
public required Guid JobTicketId { get; set; }
|
||||||
public required TAGGING_MARK_TYPE Action { get; set; }
|
public required TAGGING_MARK_TYPE Action { get; set; }
|
||||||
public string? Latitude { get; set; }
|
public string? Latitude { get; set; }
|
||||||
public string? Longitude { get; set; }
|
public string? Longitude { get; set; }
|
||||||
|
|||||||
@ -8,10 +8,10 @@ namespace Marco.Pms.Model.ServiceProject
|
|||||||
public class JobAttendance : TenantRelation
|
public class JobAttendance : TenantRelation
|
||||||
{
|
{
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public Guid JobTcketId { get; set; }
|
public Guid JobTicketId { get; set; }
|
||||||
|
|
||||||
[ValidateNever]
|
[ValidateNever]
|
||||||
[ForeignKey("JobTcketId")]
|
[ForeignKey("JobTicketId")]
|
||||||
public JobTicket? JobTicket { get; set; }
|
public JobTicket? JobTicket { get; set; }
|
||||||
public TAGGING_MARK_TYPE Action { get; set; }
|
public TAGGING_MARK_TYPE Action { get; set; }
|
||||||
public Guid EmployeeId { get; set; }
|
public Guid EmployeeId { get; set; }
|
||||||
|
|||||||
@ -14,10 +14,10 @@ namespace Marco.Pms.Model.ServiceProject
|
|||||||
[ValidateNever]
|
[ValidateNever]
|
||||||
[ForeignKey("JobAttendanceId")]
|
[ForeignKey("JobAttendanceId")]
|
||||||
public JobAttendance? JobAttendance { get; set; }
|
public JobAttendance? JobAttendance { get; set; }
|
||||||
public Guid JobTcketId { get; set; }
|
public Guid JobTicketId { get; set; }
|
||||||
|
|
||||||
[ValidateNever]
|
[ValidateNever]
|
||||||
[ForeignKey("JobTcketId")]
|
[ForeignKey("JobTicketId")]
|
||||||
public JobTicket? JobTicket { get; set; }
|
public JobTicket? JobTicket { get; set; }
|
||||||
public Guid? DocumentId { get; set; }
|
public Guid? DocumentId { get; set; }
|
||||||
|
|
||||||
|
|||||||
@ -1700,7 +1700,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
// Fetch the most recent attendance record for the logged-in employee for the specified job
|
// Fetch the most recent attendance record for the logged-in employee for the specified job
|
||||||
var jobAttendance = await _context.JobAttendance
|
var jobAttendance = await _context.JobAttendance
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(ja => ja.JobTcketId == jobTicket.Id && ja.EmployeeId == loggedInEmployee.Id && ja.TenantId == tenantId)
|
.Where(ja => ja.JobTicketId == jobTicket.Id && ja.EmployeeId == loggedInEmployee.Id && ja.TenantId == tenantId)
|
||||||
.OrderByDescending(ja => ja.TaggedInTime)
|
.OrderByDescending(ja => ja.TaggedInTime)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
@ -2866,7 +2866,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Include(ja => ja.JobTicket).ThenInclude(jt => jt!.Status)
|
.Include(ja => ja.JobTicket).ThenInclude(jt => jt!.Status)
|
||||||
.Include(ja => ja.Employee).ThenInclude(e => e!.JobRole)
|
.Include(ja => ja.Employee).ThenInclude(e => e!.JobRole)
|
||||||
.Where(ja => ja.JobTcketId == jobTicketId && ja.EmployeeId == loggedInEmployee.Id && ja.TenantId == tenantId)
|
.Where(ja => ja.JobTicketId == jobTicketId && ja.EmployeeId == loggedInEmployee.Id && ja.TenantId == tenantId)
|
||||||
.OrderByDescending(ja => ja.TaggedInTime)
|
.OrderByDescending(ja => ja.TaggedInTime)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
@ -3016,7 +3016,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Include(ja => ja.JobTicket).ThenInclude(jt => jt!.Status)
|
.Include(ja => ja.JobTicket).ThenInclude(jt => jt!.Status)
|
||||||
.Include(ja => ja.Employee).ThenInclude(e => e!.JobRole)
|
.Include(ja => ja.Employee).ThenInclude(e => e!.JobRole)
|
||||||
.Where(ja => ja.JobTcketId == jobTicketId
|
.Where(ja => ja.JobTicketId == jobTicketId
|
||||||
&& ja.TaggedInTime.Date >= fromDate
|
&& ja.TaggedInTime.Date >= fromDate
|
||||||
&& ja.TaggedInTime.Date <= toDate
|
&& ja.TaggedInTime.Date <= toDate
|
||||||
&& ja.TenantId == tenantId)
|
&& ja.TenantId == tenantId)
|
||||||
@ -3056,7 +3056,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
return ApiResponse<object>.ErrorResponse("Access Denied", "Invalid tenant context.", 403);
|
return ApiResponse<object>.ErrorResponse("Access Denied", "Invalid tenant context.", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInfo("ManageJobTaggingAsync called for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogInfo("ManageJobTaggingAsync called for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -3064,27 +3064,27 @@ namespace Marco.Pms.Services.Service
|
|||||||
var jobTicket = await _context.JobTickets
|
var jobTicket = await _context.JobTickets
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Include(jt => jt.Status)
|
.Include(jt => jt.Status)
|
||||||
.FirstOrDefaultAsync(jt => jt.Id == model.JobTcketId && jt.TenantId == tenantId && !jt.IsArchive);
|
.FirstOrDefaultAsync(jt => jt.Id == model.JobTicketId && jt.TenantId == tenantId && !jt.IsArchive);
|
||||||
if (jobTicket == null)
|
if (jobTicket == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("JobTicket not found. JobTicketId: {JobTicketId}, TenantId: {TenantId}", model.JobTcketId, tenantId);
|
_logger.LogWarning("JobTicket not found. JobTicketId: {JobTicketId}, TenantId: {TenantId}", model.JobTicketId, tenantId);
|
||||||
return ApiResponse<object>.ErrorResponse("The job could not be found. Please check the job details and try again.", "The job could not be found. Please check the job details and try again.", 404);
|
return ApiResponse<object>.ErrorResponse("The job could not be found. Please check the job details and try again.", "The job could not be found. Please check the job details and try again.", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the current user is part of the job team
|
// Check if the current user is part of the job team
|
||||||
var jobEmployeeMapping = await _context.JobEmployeeMappings
|
var jobEmployeeMapping = await _context.JobEmployeeMappings
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.FirstOrDefaultAsync(jem => jem.JobTicketId == model.JobTcketId && jem.AssigneeId == loggedInEmployee.Id && jem.TenantId == tenantId);
|
.FirstOrDefaultAsync(jem => jem.JobTicketId == model.JobTicketId && jem.AssigneeId == loggedInEmployee.Id && jem.TenantId == tenantId);
|
||||||
if (jobEmployeeMapping == null)
|
if (jobEmployeeMapping == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("User is not part of job team. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogWarning("User is not part of job team. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("User is not part of job team", "User is not part of job team", 400);
|
return ApiResponse<object>.ErrorResponse("User is not part of job team", "User is not part of job team", 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the last attendance record for the user and job
|
// Get the last attendance record for the user and job
|
||||||
var jobAttendance = await _context.JobAttendance
|
var jobAttendance = await _context.JobAttendance
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(ja => ja.EmployeeId == loggedInEmployee.Id && ja.JobTcketId == model.JobTcketId)
|
.Where(ja => ja.EmployeeId == loggedInEmployee.Id && ja.JobTicketId == model.JobTicketId)
|
||||||
.OrderByDescending(ja => ja.TaggedInAt)
|
.OrderByDescending(ja => ja.TaggedInAt)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
@ -3103,7 +3103,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
var newJobAttendance = new JobAttendance
|
var newJobAttendance = new JobAttendance
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
Id = Guid.NewGuid(),
|
||||||
JobTcketId = model.JobTcketId,
|
JobTicketId = model.JobTicketId,
|
||||||
EmployeeId = loggedInEmployee.Id,
|
EmployeeId = loggedInEmployee.Id,
|
||||||
Action = TAGGING_MARK_TYPE.TAG_IN,
|
Action = TAGGING_MARK_TYPE.TAG_IN,
|
||||||
TaggedInTime = markedAt,
|
TaggedInTime = markedAt,
|
||||||
@ -3112,7 +3112,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
};
|
};
|
||||||
_context.JobAttendance.Add(newJobAttendance);
|
_context.JobAttendance.Add(newJobAttendance);
|
||||||
updateJobAttendance = newJobAttendance;
|
updateJobAttendance = newJobAttendance;
|
||||||
_logger.LogInfo("New Tag In created for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogInfo("New Tag In created for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
}
|
}
|
||||||
else if (isLastTaggedOut && jobAttendance.TaggedInTime.Date == currentTime.Date)
|
else if (isLastTaggedOut && jobAttendance.TaggedInTime.Date == currentTime.Date)
|
||||||
{
|
{
|
||||||
@ -3125,11 +3125,11 @@ namespace Marco.Pms.Services.Service
|
|||||||
|
|
||||||
_context.JobAttendance.Update(jobAttendance);
|
_context.JobAttendance.Update(jobAttendance);
|
||||||
updateJobAttendance = jobAttendance;
|
updateJobAttendance = jobAttendance;
|
||||||
_logger.LogInfo("Existing JobAttendance updated to Tag In for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogInfo("Existing JobAttendance updated to Tag In for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Attempted to Tag In without tagging out last session. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogWarning("Attempted to Tag In without tagging out last session. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("First, mark the last tag as out before tagging in.", "First, mark the last tag as out before tagging in.", 400);
|
return ApiResponse<object>.ErrorResponse("First, mark the last tag as out before tagging in.", "First, mark the last tag as out before tagging in.", 400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3144,17 +3144,17 @@ namespace Marco.Pms.Services.Service
|
|||||||
|
|
||||||
_context.JobAttendance.Update(jobAttendance);
|
_context.JobAttendance.Update(jobAttendance);
|
||||||
updateJobAttendance = jobAttendance;
|
updateJobAttendance = jobAttendance;
|
||||||
_logger.LogInfo("JobAttendance updated to Tag Out for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogInfo("JobAttendance updated to Tag Out for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Attempted to Tag Out without previous Tag In. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogWarning("Attempted to Tag Out without previous Tag In. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("First, mark the last tag as in before tagging out.", "First, mark the last tag as in before tagging out.", 400);
|
return ApiResponse<object>.ErrorResponse("First, mark the last tag as in before tagging out.", "First, mark the last tag as in before tagging out.", 400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Invalid action provided: {Action}. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", model.Action, loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogWarning("Invalid action provided: {Action}. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", model.Action, loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("Provided invalid action", "Provided invalid action", 400);
|
return ApiResponse<object>.ErrorResponse("Provided invalid action", "Provided invalid action", 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3166,7 +3166,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
string base64 = model.Attachment.Base64Data?.Split(',').LastOrDefault() ?? "";
|
string base64 = model.Attachment.Base64Data?.Split(',').LastOrDefault() ?? "";
|
||||||
if (string.IsNullOrWhiteSpace(base64))
|
if (string.IsNullOrWhiteSpace(base64))
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Base64 data missing in attachment. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogWarning("Base64 data missing in attachment. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("Base64 data is missing", "Attachment data missing", 400);
|
return ApiResponse<object>.ErrorResponse("Base64 data is missing", "Attachment data missing", 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3189,7 +3189,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
};
|
};
|
||||||
|
|
||||||
_context.Documents.Add(document);
|
_context.Documents.Add(document);
|
||||||
_logger.LogInfo("Attachment uploaded and document record created. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}, DocumentId: {DocumentId}", loggedInEmployee.Id, model.JobTcketId, document.Id);
|
_logger.LogInfo("Attachment uploaded and document record created. EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}, DocumentId: {DocumentId}", loggedInEmployee.Id, model.JobTicketId, document.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create attendance log entry for audit trail
|
// Create attendance log entry for audit trail
|
||||||
@ -3204,7 +3204,7 @@ namespace Marco.Pms.Services.Service
|
|||||||
Longitude = model.Longitude,
|
Longitude = model.Longitude,
|
||||||
Comment = model.Comment,
|
Comment = model.Comment,
|
||||||
JobAttendanceId = updateJobAttendance.Id,
|
JobAttendanceId = updateJobAttendance.Id,
|
||||||
JobTcketId = model.JobTcketId,
|
JobTicketId = model.JobTicketId,
|
||||||
DocumentId = document?.Id,
|
DocumentId = document?.Id,
|
||||||
TenantId = tenantId
|
TenantId = tenantId
|
||||||
};
|
};
|
||||||
@ -3218,13 +3218,13 @@ namespace Marco.Pms.Services.Service
|
|||||||
response.JobTicket = _mapper.Map<BasicJobTicketVM>(jobTicket);
|
response.JobTicket = _mapper.Map<BasicJobTicketVM>(jobTicket);
|
||||||
response.Employee = _mapper.Map<BasicEmployeeVM>(loggedInEmployee);
|
response.Employee = _mapper.Map<BasicEmployeeVM>(loggedInEmployee);
|
||||||
|
|
||||||
_logger.LogInfo("Tagging managed successfully for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogInfo("Tagging managed successfully for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
|
|
||||||
return ApiResponse<object>.SuccessResponse(response, "Tagging managed successfully", 200);
|
return ApiResponse<object>.SuccessResponse(response, "Tagging managed successfully", 200);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "Error occurred in ManageJobTaggingAsync for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTcketId);
|
_logger.LogError(ex, "Error occurred in ManageJobTaggingAsync for EmployeeId: {EmployeeId}, JobTicketId: {JobTicketId}", loggedInEmployee.Id, model.JobTicketId);
|
||||||
return ApiResponse<object>.ErrorResponse("An unexpected error occurred.", ex.Message, 500);
|
return ApiResponse<object>.ErrorResponse("An unexpected error occurred.", ex.Message, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user