Solved the issue of not showing final status in list and details API of expesne model

This commit is contained in:
ashutosh.nehete 2025-07-24 10:38:31 +05:30
parent a1db851edd
commit 57d7b4c07b

View File

@ -1042,16 +1042,24 @@ namespace Marco.Pms.Services.Service
NextStatus = g.Select(s => s.NextStatus).ToList() NextStatus = g.Select(s => s.NextStatus).ToList()
}).ToListAsync(); }).ToListAsync();
}); });
var statusTask = Task.Run(async () =>
{
await using var dbContext = await _dbContextFactory.CreateDbContextAsync();
return await dbContext.ExpensesStatusMaster
.AsNoTracking()
.Where(es => statusIds.Contains(es.Id))
.ToListAsync();
});
// Await all prerequisite checks at once. // Await all prerequisite checks at once.
await Task.WhenAll(projectTask, expenseTypeTask, paymentModeTask, statusMappingTask, paidByTask, createdByTask); await Task.WhenAll(projectTask, expenseTypeTask, paymentModeTask, statusMappingTask, paidByTask, createdByTask, statusTask);
var projects = await projectTask; var projects = projectTask.Result;
var expenseTypes = await expenseTypeTask; var expenseTypes = expenseTypeTask.Result;
var paymentModes = await paymentModeTask; var paymentModes = paymentModeTask.Result;
var statusMappings = await statusMappingTask; var statusMappings = statusMappingTask.Result;
var paidBys = await paidByTask; var paidBys = paidByTask.Result;
var createdBys = await createdByTask; var createdBys = createdByTask.Result;
expenseList = model.Select(m => expenseList = model.Select(m =>
{ {
@ -1061,6 +1069,11 @@ namespace Marco.Pms.Services.Service
response.PaidBy = paidBys.Where(p => p.Id == m.PaidById).Select(p => _mapper.Map<BasicEmployeeVM>(p)).FirstOrDefault(); response.PaidBy = paidBys.Where(p => p.Id == m.PaidById).Select(p => _mapper.Map<BasicEmployeeVM>(p)).FirstOrDefault();
response.CreatedBy = createdBys.Where(e => e.Id == m.CreatedById).Select(e => _mapper.Map<BasicEmployeeVM>(e)).FirstOrDefault(); response.CreatedBy = createdBys.Where(e => e.Id == m.CreatedById).Select(e => _mapper.Map<BasicEmployeeVM>(e)).FirstOrDefault();
response.Status = statusMappings.Where(s => s.StatusId == m.StatusId).Select(s => _mapper.Map<ExpensesStatusMasterVM>(s.Status)).FirstOrDefault(); response.Status = statusMappings.Where(s => s.StatusId == m.StatusId).Select(s => _mapper.Map<ExpensesStatusMasterVM>(s.Status)).FirstOrDefault();
if (response.Status == null)
{
var status = statusTask.Result;
response.Status = status.Where(s => s.Id == m.StatusId).Select(s => _mapper.Map<ExpensesStatusMasterVM>(s)).FirstOrDefault();
}
response.NextStatus = statusMappings.Where(s => s.StatusId == m.StatusId).Select(s => _mapper.Map<List<ExpensesStatusMasterVM>>(s.NextStatus)).FirstOrDefault(); response.NextStatus = statusMappings.Where(s => s.StatusId == m.StatusId).Select(s => _mapper.Map<List<ExpensesStatusMasterVM>>(s.NextStatus)).FirstOrDefault();
response.PaymentMode = paymentModes.Where(pm => pm.Id == m.PaymentModeId).Select(pm => _mapper.Map<PaymentModeMatserVM>(pm)).FirstOrDefault(); response.PaymentMode = paymentModes.Where(pm => pm.Id == m.PaymentModeId).Select(pm => _mapper.Map<PaymentModeMatserVM>(pm)).FirstOrDefault();
response.ExpensesType = expenseTypes.Where(et => et.Id == m.ExpensesTypeId).Select(et => _mapper.Map<ExpensesTypeMasterVM>(et)).FirstOrDefault(); response.ExpensesType = expenseTypes.Where(et => et.Id == m.ExpensesTypeId).Select(et => _mapper.Map<ExpensesTypeMasterVM>(et)).FirstOrDefault();
@ -1112,16 +1125,22 @@ namespace Marco.Pms.Services.Service
NextStatus = g.Select(s => s.NextStatus).ToList() NextStatus = g.Select(s => s.NextStatus).ToList()
}).FirstOrDefaultAsync(); }).FirstOrDefaultAsync();
}); });
var statusTask = Task.Run(async () =>
{
await using var dbContext = await _dbContextFactory.CreateDbContextAsync();
return await dbContext.ExpensesStatusMaster
.AsNoTracking()
.FirstOrDefaultAsync(es => es.Id == Guid.Parse(model.StatusId));
});
// Await all prerequisite checks at once. // Await all prerequisite checks at once.
await Task.WhenAll(projectTask, expenseTypeTask, paymentModeTask, statusMappingTask, paidByTask, createdByTask); await Task.WhenAll(projectTask, expenseTypeTask, paymentModeTask, statusMappingTask, paidByTask, createdByTask, statusTask);
var project = await projectTask; var project = projectTask.Result;
var expenseType = await expenseTypeTask; var expenseType = expenseTypeTask.Result;
var paymentMode = await paymentModeTask; var paymentMode = paymentModeTask.Result;
var statusMapping = await statusMappingTask; var statusMapping = statusMappingTask.Result;
var paidBy = await paidByTask; var paidBy = paidByTask.Result;
var createdBy = await createdByTask; var createdBy = createdByTask.Result;
var response = _mapper.Map<ExpenseDetailsVM>(model); var response = _mapper.Map<ExpenseDetailsVM>(model);
@ -1133,6 +1152,11 @@ namespace Marco.Pms.Services.Service
if (statusMapping != null) if (statusMapping != null)
{ {
response.Status = _mapper.Map<ExpensesStatusMasterVM>(statusMapping.Status); response.Status = _mapper.Map<ExpensesStatusMasterVM>(statusMapping.Status);
if (response.Status == null)
{
var status = statusTask.Result;
response.Status = _mapper.Map<ExpensesStatusMasterVM>(status);
}
response.NextStatus = _mapper.Map<List<ExpensesStatusMasterVM>>(statusMapping.NextStatus); response.NextStatus = _mapper.Map<List<ExpensesStatusMasterVM>>(statusMapping.NextStatus);
} }