Exemplo n.º 1
0
        public List <OrgUserDTO> GetOrgUsers(OrgUserListType listType, Guid?organisationId = null)
        {
            IQueryable <OrgUser> dataSource = UnitOfWork.OrgUsersRepository
                                              .AllIncluding(u => u.Type)
                                              .OrderBy(u => u.Surname)
                                              .ThenBy(u => u.FirstName)
                                              .AsQueryable();

            if (organisationId.HasValue)
            {
                dataSource = dataSource.Where(u => u.OrganisationId == organisationId);
            }

            if (listType != OrgUserListType.AllAccounts)
            {
                var accountType = (AccountType)(int)listType;
                dataSource = dataSource.Where(x => x.AccountType == accountType);
            }

            var result = dataSource
                         .ToList()
                         .Select(u => Mapper.Map <OrgUserDTO>(u))
                         .ToList();

            return(result);
        }
Exemplo n.º 2
0
        public IHttpActionResult Get(OrgUserListType listType, Guid?organisationId = null)
        {
            if (CurrentUser is OrgUser)
            {
                var cacheKey   = $"{CACHE_KEY}_{listType}_{CurrentOrgUser.OrganisationId}";
                var cacheEntry = MemoryCacher.GetValue(cacheKey);

                if (cacheEntry == null)
                {
                    var users = UserService.GetOrgUsers(listType, CurrentOrgUser.OrganisationId);
                    MemoryCacher.Add(cacheKey, users, DateTimeOffset.UtcNow.AddMinutes(1));

                    return(Ok(users));
                }
                else
                {
                    var result = (List <OrgUserDTO>)cacheEntry;
                    return(new CachedResult <List <OrgUserDTO> >(result, TimeSpan.FromMinutes(1), this));
                }
            }

            // else if current user is SuperUser or PlatformUser
            var _cacheKey   = organisationId.HasValue ? $"{CACHE_KEY}_{listType}_{organisationId.Value}" : $"{CACHE_KEY}_{listType}";
            var _cacheEntry = MemoryCacher.GetValue(_cacheKey);

            if (_cacheEntry == null)
            {
                var users = UserService.GetOrgUsers(listType, organisationId);
                MemoryCacher.Add(_cacheKey, users, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Ok(users));
            }
            else
            {
                var retVal = (List <OrgUserDTO>)_cacheEntry;
                return(new CachedResult <List <OrgUserDTO> >(retVal, TimeSpan.FromMinutes(1), this));
            }
        }