Example #1
0
        public async Task <ArrayPage <Credential> > GetActiveUserCredentials(Guid ownerId, string credentialName, ArrayPageRequest request = null)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery = _query
                            .Query <Entities.Authentication.Credential>(d => d.Owner)
                            .Where(d => credentialName == d.Name);

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <Credential>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.Authentication.Credential, Credential>(
                    _transformer,
                    TransformCommand.Query)
            });
        }
Example #2
0
        public Operation <ArrayPage <Farm> > GetFarms(ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            await _dataAuth.AuthorizeAccess(typeof(Farm).FullName);

            return((await _queries
                    .GetFarms(request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult)));
        });
Example #3
0
        public Operation <ArrayPage <Cooperative> > GetAllCooperatives(ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            //make sure current user can access cooperatives
            await _dataAccessAuthorizer.AuthorizeAccess(typeof(Cooperative).FullName);

            return((await _queries
                    .GetAllCooperatives(request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult)));
        });
Example #4
0
        public Operation <ArrayPage <HarvestBatch> > GetHarvestBatches(ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            //data access authorization
            await _dataAuth.AuthorizeAccess(typeof(HarvestBatch).FullName);

            return((await _queries
                    .GetHarvestBatches(request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult)));
        });
Example #5
0
        public Operation <ArrayPage <Farmer> > GetFarmers(ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            //data access authorization
            await _dataAuth.AuthorizeAccess(typeof(Farmer).FullName);

            return((await _queries
                    .GetAllFarmers(request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreCommandResult)));
        });
Example #6
0
        public Operation <ArrayPage <Farm> > GetRegisteredFarms(Guid cooperativeId, ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            //validate parameter
            cooperativeId
            .ThrowIf(default(Guid), new GaiaException(PolluxErrorCodes.InvalidArgument));

            //make sure current user can access farms
            await _dataAccessAuthorizer.AuthorizeAccess(typeof(Farm).FullName);

            return((await _queries
                    .GetRegisteredFarms(cooperativeId, request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult)));
        });
Example #7
0
        private async Task <CooperativeAdmin[]> _GetAllAdmins(Guid cooperativeId)
        {
            var request = ArrayPageRequest.CreateNormalizedRequest();
            var admins  = new List <CooperativeAdmin>();
            ArrayPage <CooperativeAdmin> page;

            while ((page = await _queries.GetAdmins(cooperativeId, request)).Page.Length > 0)
            {
                admins.AddRange(page.Page);
                request = new ArrayPageRequest
                {
                    PageIndex = request.PageIndex + 1,
                    PageSize  = request.PageSize
                };
            }

            return(admins.ToArray());
        }
Example #8
0
        public async Task <ArrayPage <ContactData> > GetUserContactData(
            Guid userId,
            string[] communicationChannels,
            string[] tags,
            ArrayPageRequest request)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery = _query
                            .Query <Entities.Identity.ContactData>(d => d.Owner)
                            .Where(d => userId.CompareTo(d.OwnerId) == 0)
                            .Where(d => d.IsPrimary)
                            .Where(d => communicationChannels.Contains(d.Channel));

            var tagPredicate = TagPatterns(tags);

            if (tagPredicate != null)
            {
                dataQuery = dataQuery.Where(tagPredicate);
            }

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <ContactData>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.Identity.ContactData, ContactData>(
                    _transformer,
                    TransformCommand.Query)
            });
        }
Example #9
0
        public Operation <ArrayPage <Harvest> > GetHarvests(Guid farmId, ArrayPageRequest request = null)
        => Operation.Try(async() =>
        {
            //validate parameter
            farmId.ThrowIf(
                default(Guid),
                new GaiaException(PolluxErrorCodes.InvalidArgument));

            var farm = (await _queries
                        .GetFarm(farmId))
                       .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult));

            //data access authorization
            await _dataAuth.AuthorizeCustomAccess(new FarmerDataAccess
            {
                Farmer = farm.Owner,
                Farm   = farm
            });

            return((await _queries
                    .GetHarvests(farmId, request))
                   .ThrowIfNull(new GaiaException(ErrorCodes.InvalidStoreQueryResult)));
        });
Example #10
0
        public async Task <ArrayPage <Farmer> > GetAllFarmers(ArrayPageRequest request = null)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery = _query
                            .Query <Entities.Farmer>(d => d.User, d => d.Farms);

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <Farmer>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.Farmer, Farmer>(
                    _transformer,
                    TransformCommand.Query)
            });
        }
Example #11
0
        public async Task <ArrayPage <Harvest> > GetHarvests(Guid farmId, Guid batchId, ArrayPageRequest request = null)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery = _query
                            .Query <Entities.Harvest>(
                h => h.Batch,
                h => h.Produce)
                            .Where(h => batchId.CompareTo(h.HarvestBatchId) == 0)
                            .Where(h => farmId.CompareTo(h.Batch.FarmId) == 0);

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <Harvest>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.Harvest, Harvest>(
                    _transformer,
                    TransformCommand.Query)
            });
        }
Example #12
0
        public async Task <ArrayPage <CooperativeAdmin> > GetAdmins(Guid cooperativeId, ArrayPageRequest request = null)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery = _query
                            .Query <Entities.CooperativeAdmin>(c => c.Cooperative, c => c.User)
                            .Where(c => cooperativeId.CompareTo(c.CooperativeId) == 0);

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <CooperativeAdmin>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.CooperativeAdmin, CooperativeAdmin>(
                    _transformer,
                    TransformCommand.Query)
            });
        }
Example #13
0
        public async Task <ArrayPage <Farmer> > GetRegisteredFarmers(Guid cooperativeId, ArrayPageRequest request = null)
        {
            request = request?.Normalize() ?? ArrayPageRequest.CreateNormalizedRequest();
            var dataQuery =
                from c in _query.Query <Entities.Cooperative>()
                join a in _query.Query <Entities.CooperativeAdmin>() on c.Id equals a.CooperativeId
                join f in _query.Query <Entities.Farmer>() on a.UserId equals f.UserId
                where cooperativeId.CompareTo(c.Id) == 0
                select f;

            var longCount = await dataQuery.LongCountAsync();

            var filtered = await dataQuery
                           .OrderBy(c => c.CreatedOn)
                           .Skip((int)(request.PageIndex * request.PageSize))
                           .Take((int)request.PageSize)
                           .ToArrayAsync();

            return(new ArrayPage <Farmer>
            {
                TotalLength = longCount,
                PageIndex = request.PageIndex.Value,
                PageSize = request.PageSize.Value,
                Page = filtered.TransformQuery <Entities.Farmer, Farmer>(
                    _transformer,
                    TransformCommand.Query)
            });
        }