Untitled
unknown
plain_text
9 months ago
4.2 kB
3
Indexable
public async Task<UpdatedBusinessTripViewModel> SaveOrSubmit(BusinessTripRequest businessTripRequest, int actionID, UserModel user)
{
UpdatedBusinessTripViewModel updatedBTRequest = null;
var dbBusinessTrip = new BusinessTripRequest();
using (var transaction = Context.Database.BeginTransaction())
{
try
{
var action = (actionID == Constants.Common.Action.Submit.ToInt())
? Constants.Common.Action.Submit.ToInt()
: Constants.Common.Action.Save.ToInt();
if (businessTripRequest.BusinessTripRequestID == 0)
{
dbBusinessTrip = SaveAllRequest(businessTripRequest, user.CompanyId);
//Approval Hierarchy
//dbBusinessTrip = SaveRequest(businessTripRequest, user.CompanyId);
}
else
{
dbBusinessTrip = UpdateRequest(businessTripRequest, user.CompanyId);
}
UnitOfWork.SaveChanges();
GenerateAuditTrail(dbBusinessTrip.BusinessTripRequestID,
action,
user);
UnitOfWork.SaveChanges();
await Context.Entry(dbBusinessTrip).ReloadAsync().ConfigureAwait(false);
updatedBTRequest = new UpdatedBusinessTripViewModel
{
BusinessTripRequestID = dbBusinessTrip.BusinessTripRequestID,
EmployeeFirstName = dbBusinessTrip.Employee.FirstName,
EmployeeName = dbBusinessTrip.Employee.EmployeeName,
StartOfTrip = dbBusinessTrip.StartOfTrip,
EndOfTrip = dbBusinessTrip.EndOfTrip,
NatureOfTrip = Constants.BusinessTripRequest.NatureOfTrip[dbBusinessTrip.NatureOfTripID ?? 0],
NoOfDays = dbBusinessTrip.NoOfDays,
Destination = dbBusinessTrip.Destination,
ApproverEmailAddress = dbBusinessTrip.BusinessTripRequestApprovers
.FirstOrDefault(x => x.OrdinalPosition == dbBusinessTrip.CurrentApprover)
?.Approver
.EmailAddress,
ApproverFirstName = dbBusinessTrip.BusinessTripRequestApprovers
.FirstOrDefault(x => x.OrdinalPosition == dbBusinessTrip.CurrentApprover)
?.Approver
.FirstName,
CurrentOrdinal = 1,
Approvers = dbBusinessTrip.BusinessTripRequestApprovers
.Select(x => new BusinessTripRequestApproverViewModel
{
ApproverID = x.ApproverID,
ApproverEmail = x.Approver.EmailAddress,
ApproverFirstName = x.Approver.FirstName,
Ordinal = x.OrdinalPosition,
DateProcessed = x.DateProcessed,
StatusID = x.StatusID,
StatusName = x.BusinessTripRequestApproverStatus?.StatusName
}).ToList()
};
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
return updatedBTRequest;
}Editor is loading...
Leave a Comment