public IResult GetAllOpenings() { var result = new Result { Operation = Operation.Read, Status = Status.Success }; try { var allOpenings = _openingRepository.GetAll(); var openingIds = allOpenings.Select(x => x.OpeningId).Distinct().ToList(); var approvalTransactions = _approvalRepository.GetAllApprovalTransactions(openingIds).ToList(); result.Body = allOpenings.Select(opening => { var approvalTransaction = approvalTransactions.FirstOrDefault(x => x.EntityId == opening.OpeningId); var openingViewModel = new OpeningViewModel(); MapPrimaryandSecondarySkills(openingViewModel, opening); if (approvalTransaction != null) { openingViewModel.IsApproved = approvalTransaction.IsApproved; openingViewModel.Status = approvalTransaction.ApprovalAction.ApprovalActionName; } return(openingViewModel.MapFromModel(opening)); }).ToList(); } catch (Exception e) { result.Message = e.Message; result.Status = Status.Fail; } return(result); }