diff --git a/Marco.Pms.Services/Controllers/CollectionController.cs b/Marco.Pms.Services/Controllers/CollectionController.cs index 320eb74..fdcb9b8 100644 --- a/Marco.Pms.Services/Controllers/CollectionController.cs +++ b/Marco.Pms.Services/Controllers/CollectionController.cs @@ -1144,6 +1144,7 @@ namespace Marco.Pms.Services.Controllers // Create a scope for permission service resolution using var scope = _serviceScopeFactory.CreateScope(); var _permission = scope.ServiceProvider.GetRequiredService(); + var _updateLogHelper = scope.ServiceProvider.GetRequiredService(); // Get the currently logged-in employee var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); @@ -1196,15 +1197,31 @@ namespace Marco.Pms.Services.Controllers try { + var invoiceStateBeforeChange = _updateLogHelper.EntityToBsonDocument(invoice); + // Mark invoice as completed. invoice.MarkAsCompleted = true; + invoice.UpdatedAt = DateTime.UtcNow; + invoice.UpdatedById = loggedInEmployee.Id; // Persist the change to the database. await _context.SaveChangesAsync(); _logger.LogInfo("Invoice {InvoiceId} marked as completed by user {UserId}", invoiceId, loggedInEmployee.Id); - return Ok(ApiResponse.SuccessResponse(new { }, "Invoice is marked as completed successfully", 200)); + await _updateLogHelper.PushToUpdateLogsAsync(new UpdateLogsObject + { + EntityId = invoice.Id.ToString(), + UpdatedById = loggedInEmployee.Id.ToString(), + OldObject = invoiceStateBeforeChange, + UpdatedAt = DateTime.UtcNow + }, "InvoiceModificationLog"); + + var response = _mapper.Map(invoice); + response.UpdatedBy = _mapper.Map(loggedInEmployee); + response.BalanceAmount = response.BasicAmount + response.TaxAmount; + + return Ok(ApiResponse.SuccessResponse(response, "Invoice is marked as completed successfully", 200)); } catch (Exception ex) {