public async Task <List <PermissionActionViewModel> > GetPermissons(string businessId, Guid userId) { var grantItems = (from g in (await _grantPermissionRepository.FindAll()).AsNoTracking() join p in await _businessActionService.FindAll() on g.BusinessActionId equals p.Id where g.UserId == userId && p.BusinessId == businessId select new PermissionActionViewModel { Description = p.Description, IsGranted = true, PermissionID = p.Id, PermissionName = p.Name }); var allPermissons = from p in (await _businessActionService.FindAll()).AsNoTracking().AsParallel().AsOrdered().WithDegreeOfParallelism(3).GroupBy(x => x.Name).Select(x => x.FirstOrDefault()) where p.BusinessId == businessId select new PermissionActionViewModel { PermissionID = p.Id, PermissionName = p.Name, Description = p.Description, IsGranted = false }; var listpermissionId = grantItems.Select(p => p.PermissionID); foreach (var item in allPermissons) { if (!listpermissionId.Contains(item.PermissionID)) { grantItems.ToList().Add(item); } } return(grantItems.ToList()); }
public async Task <List <BusinessActionViewModel> > GetAll(BusinessActionRequest request) { return(new BusinessActionViewModel().Map(await _repository.FindAll(x => x.BusinessId == request.BusinessId)).ToList()); }