Untitled
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; }
Leave a Comment