Exemplo n.º 1
0
 public PurchaseQuotationSettingService(IUnitOfWorkForService unitOfWork)
 {
     this.db     = new ApplicationDbContext();
     _unitOfWork = unitOfWork;
     _PurchaseQuotationSettingRepository = new Repository <PurchaseQuotationSetting>(db);
     PurchaseQuotationSettingRepository  = new RepositoryQuery <PurchaseQuotationSetting>(_PurchaseQuotationSettingRepository);
 }
Exemplo n.º 2
0
    private async Task <Dictionary <string, double> > GetUserCountByProjectIdsAsync(ICollection <Stack> stacks, AppFilter sf, DateTime utcStart, DateTime utcEnd)
    {
        var scopedCacheClient = new ScopedCacheClient(_cache, $"Project:user-count:{utcStart.Floor(TimeSpan.FromMinutes(15)).Ticks}-{utcEnd.Floor(TimeSpan.FromMinutes(15)).Ticks}");
        var projectIds        = stacks.Select(s => s.ProjectId).Distinct().ToList();
        var cachedTotals      = await scopedCacheClient.GetAllAsync <double>(projectIds);

        var totals = cachedTotals.Where(kvp => kvp.Value.HasValue).ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Value);

        if (totals.Count == projectIds.Count)
        {
            return(totals);
        }

        var systemFilter = new RepositoryQuery <PersistentEvent>().AppFilter(sf).DateRange(utcStart, utcEnd, (PersistentEvent e) => e.Date).Index(utcStart, utcEnd);
        var projects     = cachedTotals.Where(kvp => !kvp.Value.HasValue).Select(kvp => new Project {
            Id = kvp.Key, OrganizationId = stacks.FirstOrDefault(s => s.ProjectId == kvp.Key)?.OrganizationId
        }).ToList();
        var countResult = await _eventRepository.CountAsync(q => q.SystemFilter(systemFilter).FilterExpression(projects.BuildFilter()).AggregationsExpression("terms:(project_id cardinality:user)"));

        // Cache all projects that have more than 10 users for 5 minutes.
        var projectTerms = countResult.Aggregations.Terms <string>("terms_project_id").Buckets;
        var aggregations = projectTerms.ToDictionary(t => t.Key, t => t.Aggregations.Cardinality("cardinality_user").Value.GetValueOrDefault());
        await scopedCacheClient.SetAllAsync(aggregations.Where(t => t.Value >= 10).ToDictionary(k => k.Key, v => v.Value), TimeSpan.FromMinutes(5));

        totals.AddRange(aggregations);

        return(totals);
    }
Exemplo n.º 3
0
Arquivo: Data.cs Projeto: jrivam/demo
                Persistence.Table.Empresa table) Data_Table(Entities.Table.Empresa entity)
        {
            var mockDatabase = GetDatabaseMock();

            var mockCommandBuilder = new Moq.Mock <ISqlCommandBuilder>();

            var repositoryQuery = new RepositoryQuery <Entities.Table.Empresa, Persistence.Table.Empresa>(
                new Entities.Reader.Empresa(mockDatabase.mockSyntaxSign.Object),
                new Persistence.Mapper.Empresa(),
                mockDatabase.mockSyntaxSign.Object,
                mockCommandBuilder.Object,
                mockDatabase.mockCreator.Object);

            var queryUnique = new Persistence.Query.Empresa(repositoryQuery);

            var repositoryTable = new RepositoryTable <Entities.Table.Empresa, Persistence.Table.Empresa>(
                new Entities.Reader.Empresa(mockDatabase.mockSyntaxSign.Object),
                new Persistence.Mapper.Empresa(),
                mockDatabase.mockSyntaxSign.Object,
                mockCommandBuilder.Object,
                mockDatabase.mockCreator.Object);

            var table = new Persistence.Table.Empresa(entity,
                                                      repositoryTable,
                                                      queryUnique);

            return(mockDatabase, table);
        }
Exemplo n.º 4
0
        public Task <long> RemoveAllAsync(string organizationId, string clientIpAddress, DateTime?utcStart, DateTime?utcEnd, CommandOptionsDescriptor <PersistentEvent> options = null)
        {
            if (String.IsNullOrEmpty(organizationId))
            {
                throw new ArgumentNullException(nameof(organizationId));
            }

            var query = new RepositoryQuery <PersistentEvent>().Organization(organizationId);

            if (utcStart.HasValue && utcEnd.HasValue)
            {
                query = query.DateRange(utcStart, utcEnd, InferField(e => e.Date)).Index(utcStart, utcEnd);
            }
            else if (utcEnd.HasValue)
            {
                query = query.ElasticFilter(Query <PersistentEvent> .DateRange(r => r.Field(e => e.Date).LessThan(utcEnd)));
            }
            else if (utcStart.HasValue)
            {
                query = query.ElasticFilter(Query <PersistentEvent> .DateRange(r => r.Field(e => e.Date).GreaterThan(utcStart)));
            }

            if (!String.IsNullOrEmpty(clientIpAddress))
            {
                query = query.FieldEquals(EventIndex.Alias.IpAddress, clientIpAddress);
            }

            return(RemoveAllAsync(q => query, options));
        }
        private IRepositoryQuery GetSystemFilterQuery(IQueryVisitorContext context)
        {
            var builderContext    = context as IQueryBuilderContext;
            var systemFilter      = builderContext?.Source.GetSystemFilter();
            var systemFilterQuery = systemFilter?.GetQuery().Clone();

            if (systemFilterQuery == null)
            {
                systemFilterQuery = new RepositoryQuery <Stack>();
                foreach (var range in builderContext?.Source.GetDateRanges() ?? Enumerable.Empty <DateRange>())
                {
                    systemFilterQuery.DateRange(range.StartDate, range.EndDate, range.Field, range.TimeZone);
                }
            }

            if (!systemFilterQuery.HasAppFilter())
            {
                systemFilterQuery.AppFilter(builderContext?.Source.GetAppFilter());
            }

            foreach (var range in systemFilterQuery.GetDateRanges() ?? Enumerable.Empty <DateRange>())
            {
                if (range.Field == _inferredEventDateField || range.Field == "date")
                {
                    range.Field = _inferredStackLastOccurrenceField;
                }
            }

            return(systemFilterQuery);
        }
Exemplo n.º 6
0
        private async Task <List <ViewOrganization> > PopulateOrganizationStatsAsync(List <ViewOrganization> viewOrganizations)
        {
            if (viewOrganizations.Count <= 0)
            {
                return(viewOrganizations);
            }

            int maximumRetentionDays = _options.MaximumRetentionDays;
            var organizations        = viewOrganizations.Select(o => new Organization {
                Id = o.Id, CreatedUtc = o.CreatedUtc, RetentionDays = o.RetentionDays
            }).ToList();
            var sf           = new AppFilter(organizations);
            var systemFilter = new RepositoryQuery <PersistentEvent>().AppFilter(sf).DateRange(organizations.GetRetentionUtcCutoff(maximumRetentionDays), SystemClock.UtcNow, (PersistentEvent e) => e.Date).Index(organizations.GetRetentionUtcCutoff(maximumRetentionDays), SystemClock.UtcNow);
            var result       = await _eventRepository.CountAsync(q => q.SystemFilter(systemFilter).AggregationsExpression($"terms:(organization_id~{viewOrganizations.Count} cardinality:stack_id)"));

            foreach (var organization in viewOrganizations)
            {
                var organizationStats = result.Aggregations.Terms <string>("terms_organization_id")?.Buckets.FirstOrDefault(t => t.Key == organization.Id);
                organization.EventCount   = organizationStats?.Total ?? 0;
                organization.StackCount   = (long?)organizationStats?.Aggregations.Cardinality("cardinality_stack_id")?.Value ?? 0;
                organization.ProjectCount = await _projectRepository.GetCountByOrganizationIdAsync(organization.Id);
            }

            return(viewOrganizations);
        }
Exemplo n.º 7
0
 public ReasonService(IUnitOfWorkForService unitOfWork)
 {
     this.db           = new ApplicationDbContext();
     _unitOfWork       = unitOfWork;
     _ReasonRepository = new Repository <Reason>(db);
     ReasonRepository  = new RepositoryQuery <Reason>(_ReasonRepository);
 }
Exemplo n.º 8
0
        public virtual RepositoryQuery <TEntity> Query()
        {
            var repositoryGetFluentHelper =
                new RepositoryQuery <TEntity>(this);

            return(repositoryGetFluentHelper);
        }
        protected async Task <ActionResult <CountResult> > GetCountImplAsync(ExceptionlessSystemFilter sf, TimeInfo ti, string filter = null, string aggregations = null)
        {
            var pr = await _validator.ValidateQueryAsync(filter);

            if (!pr.IsValid)
            {
                return(BadRequest(pr.Message));
            }

            var far = await _validator.ValidateAggregationsAsync(aggregations);

            if (!far.IsValid)
            {
                return(BadRequest(far.Message));
            }

            sf.UsesPremiumFeatures = pr.UsesPremiumFeatures || far.UsesPremiumFeatures;
            var query = new RepositoryQuery <TModel>()
                        .SystemFilter(ShouldApplySystemFilter(sf, filter) ? sf : null)
                        .DateRange(ti.Range.UtcStart, ti.Range.UtcEnd, ti.Field)
                        .Index(ti.Range.UtcStart, ti.Range.UtcEnd);

            CountResult result;

            try {
                result = await _repository.CountBySearchAsync(query, filter, aggregations);
            } catch (Exception ex) {
                using (_logger.BeginScope(new ExceptionlessState().Property("Search Filter", new { SystemFilter = sf, UserFilter = filter, Time = ti, Aggregations = aggregations }).Tag("Search").Identity(CurrentUser.EmailAddress).Property("User", CurrentUser).SetHttpContext(HttpContext)))
                    _logger.LogError(ex, "An error has occurred. Please check your filter or aggregations.");

                return(BadRequest("An error has occurred. Please check your search filter."));
            }

            return(Ok(result));
        }
Exemplo n.º 10
0
        private async Task <List <ViewProject> > PopulateProjectStatsAsync(List <ViewProject> viewProjects)
        {
            if (viewProjects.Count <= 0)
            {
                return(viewProjects);
            }

            var organizations = await _organizationRepository.GetByIdsAsync(viewProjects.Select(p => p.OrganizationId).ToArray(), o => o.Cache());

            var projects = viewProjects.Select(p => new Project {
                Id = p.Id, CreatedUtc = p.CreatedUtc, OrganizationId = p.OrganizationId
            }).ToList();
            var sf           = new ExceptionlessSystemFilter(projects, organizations);
            var systemFilter = new RepositoryQuery <PersistentEvent>().SystemFilter(sf).DateRange(organizations.GetRetentionUtcCutoff(), SystemClock.UtcNow, (PersistentEvent e) => e.Date).Index(organizations.GetRetentionUtcCutoff(), SystemClock.UtcNow);
            var result       = await _eventRepository.CountBySearchAsync(systemFilter, null, $"terms:(project_id~{viewProjects.Count} cardinality:stack_id)");

            foreach (var project in viewProjects)
            {
                var term = result.Aggregations.Terms <string>("terms_project_id")?.Buckets.FirstOrDefault(t => t.Key == project.Id);
                project.EventCount = term?.Total ?? 0;
                project.StackCount = (long)(term?.Aggregations.Cardinality("cardinality_stack_id")?.Value ?? 0);
            }

            return(viewProjects);
        }
Exemplo n.º 11
0
 public PurchaseOrderLineService(IUnitOfWorkForService unitOfWork)
 {
     this.db     = new ApplicationDbContext();
     _unitOfWork = unitOfWork;
     _PurchaseOrderLineRepository = new Repository <PurchaseOrderLine>(db);
     PurchaseOrderLineRepository  = new RepositoryQuery <PurchaseOrderLine>(_PurchaseOrderLineRepository);
 }
Exemplo n.º 12
0
 public DocumentTypeService(IUnitOfWorkForService unitOfWork)
 {
     this.db                 = new ApplicationDbContext();
     _unitOfWork             = unitOfWork;
     _DocumentTypeRepository = new Repository <DocumentType>(db);
     DocumentTypeRepository  = new RepositoryQuery <DocumentType>(_DocumentTypeRepository);
 }
Exemplo n.º 13
0
        /// <summary>
        /// GetUserTasks
        /// </summary>
        /// <returns></returns>
        public List <UserTask> GetUserTasks(ContextEnum contextId, string assignedTo, DateTime?fromDate, DateTime?toDate, bool activeTasks)
        {
            RepositoryQuery <UserTask> userTasks = eCollabroDbContext.Repository <UserTask>().Query().Include(inc => inc.UserMembership).Include(inc => inc.UserMembership1).Filter(qry => qry.SiteId.Equals(UserContextDetails.SiteId));

            if (contextId != 0)
            {
                userTasks = userTasks.Filter(qry => qry.ContextId.Equals((int)contextId));
            }
            if (!string.IsNullOrEmpty(assignedTo))
            {
                userTasks = userTasks.Filter(qry => qry.UserMembership.UserName.Equals(assignedTo));
            }
            if (fromDate.HasValue)
            {
                DateTime dtFrom = fromDate.Value.ToUniversalTime();
                userTasks.Filter(qry => qry.CreatedOn >= dtFrom);
            }
            if (toDate.HasValue)
            {
                DateTime dtTo = toDate.Value.ToUniversalTime();
                userTasks.Filter(qry => qry.CreatedOn <= dtTo);
            }
            if (activeTasks)
            {
                userTasks.Filter(qry => qry.IsActive);
            }
            SecurityManager securityManager = new SecurityManager();

            if ((securityManager.CheckSiteCollectionAdmin(UserContextDetails.UserId) || securityManager.CheckSiteAdmin(UserContextDetails.UserId, UserContextDetails.SiteId)))
            {
                return(userTasks.Get().ToList());
            }
            else
            {
                List <FeaturePermissionResult> userFeaturePermissionResults = eCollabroDbContext.ExtendedRepository().SecurityRepository.GetUserPermissions(UserContextDetails.SiteId, UserContextDetails.UserId).Where(qry => qry.ContentPermissionId.Equals((int)PermissionEnum.ApproveContent)).ToList();
                List <int> contentContexts = new List <int>();
                if (userFeaturePermissionResults.Count > 0)
                {
                    foreach (FeaturePermissionResult featurePermissionResult in userFeaturePermissionResults)
                    {
                        ContextEnum context = GetContextForFeature((FeatureEnum)featurePermissionResult.FeatureId);
                        if (context != ContextEnum.None)
                        {
                            contentContexts.Add((int)context);
                        }
                    }
                }
                if (contentContexts.Count > 0)
                {
                    userTasks = userTasks.Filter(qry => contentContexts.Contains(qry.ContextId) || (qry.AssignedUserId == UserContextDetails.UserId));
                }
                else
                {
                    userTasks = userTasks.Filter(qry => qry.AssignedUserId.HasValue && qry.AssignedUserId == UserContextDetails.UserId);
                }
                return(userTasks.Get().ToList());
            }
        }
        //RepositoryQuery<ProductUidHeaderDimension> productdimensionRepository;

        public ProductUidHeaderService(IUnitOfWorkForService unitOfWork)
        {
            _unitOfWork        = unitOfWork;
            _productRepository = new Repository <ProductUidHeader>(db);
            //_productdimensionRepository = new Repository<ProductUidHeaderDimension>(db);

            productRepository = new RepositoryQuery <ProductUidHeader>(_productRepository);
            // productdimensionRepository = new RepositoryQuery<ProductUidHeaderDimension>(_productdimensionRepository);
        }
Exemplo n.º 15
0
        //RepositoryQuery<PersonProductUidDimension> productdimensionRepository;

        public PersonProductUidService(IUnitOfWorkForService unitOfWork)
        {
            _unitOfWork        = unitOfWork;
            _productRepository = new Repository <PersonProductUid>(db);
            //_productdimensionRepository = new Repository<PersonProductUidDimension>(db);

            productRepository = new RepositoryQuery <PersonProductUid>(_productRepository);
            // productdimensionRepository = new RepositoryQuery<PersonProductUidDimension>(_productdimensionRepository);
        }
Exemplo n.º 16
0
        public Task <FindResults <Project> > GetByFilterAsync(AppFilter systemFilter, string userFilter, string sort, CommandOptionsDescriptor <Project> options = null)
        {
            IRepositoryQuery <Project> query = new RepositoryQuery <Project>()
                                               .AppFilter(systemFilter)
                                               .FilterExpression(userFilter);

            query = !String.IsNullOrEmpty(sort) ? query.SortExpression(sort) : query.SortAscending(p => p.Name.Suffix("keyword"));
            return(FindAsync(q => query, options));
        }
        public Task <FindResults <Stack> > GetByFilterAsync(ExceptionlessSystemFilter systemFilter, string userFilter, string sort, string field, DateTime utcStart, DateTime utcEnd, CommandOptionsDescriptor <Stack> options = null)
        {
            IRepositoryQuery <Stack> query = new RepositoryQuery <Stack>()
                                             .DateRange(utcStart, utcEnd, field ?? ElasticType.GetFieldName(s => s.LastOccurrence))
                                             .SystemFilter(systemFilter)
                                             .FilterExpression(userFilter);

            query = !String.IsNullOrEmpty(sort) ? query.SortExpression(sort) : query.SortDescending(s => s.LastOccurrence);
            return(FindAsync(q => query, options));
        }
        public async Task GetByCompanyAsync()
        {
            Log.MinimumLevel = LogLevel.Trace;

            var employee1 = await _employeeRepository.AddAsync(EmployeeGenerator.Generate(age: 19, companyId: EmployeeGenerator.DefaultCompanyId), o => o.ImmediateConsistency());

            var employee2 = await _employeeRepository.AddAsync(EmployeeGenerator.Generate(age: 20), o => o.ImmediateConsistency());

            var results = await _employeeRepository.GetAllByCompanyAsync(employee1.CompanyId);

            Assert.Equal(1, results.Total);
            Assert.Equal(employee1, results.Documents.First());

            results = await _employeeRepository.GetAllByCompanyAsync(employee2.CompanyId);

            Assert.Equal(1, results.Total);
            Assert.Equal(employee2, results.Documents.First());

            results = await _employeeRepository.GetAllByCompaniesWithFieldEqualsAsync(new string[] { employee1.CompanyId });

            Assert.Equal(1, results.Total);

            results = await _employeeRepository.GetAllByCompaniesWithFieldEqualsAsync(new string[] { employee1.CompanyId, employee2.CompanyId });

            Assert.Equal(2, results.Total);

            Assert.Equal(1, await _employeeRepository.GetCountByCompanyAsync(employee1.CompanyId));
            await _employeeRepository.RemoveAsync(employee1, o => o.Cache().ImmediateConsistency());

            var result = await _employeeRepository.FindAsync(q => q.FieldCondition(e => e.Age, ComparisonOperator.Equals, 12));

            Assert.Empty(result.Documents);

            var query = new RepositoryQuery <Employee>();

            query.FieldEquals(e => e.Age, 12);
            result = await _employeeRepository.FindAsync(q => query);

            Assert.Empty(result.Documents);

            Assert.Equal(1, await _employeeRepository.CountAsync());
            Assert.Equal(0, await _employeeRepository.GetCountByCompanyAsync(employee1.CompanyId));

            query = new RepositoryQuery <Employee>();
            query.FieldEquals(e => e.Name, null);
            result = await _employeeRepository.FindAsync(q => query);

            Assert.Single(result.Documents);

            query = new RepositoryQuery <Employee>();
            query.FieldNotEquals(e => e.Name, null);
            result = await _employeeRepository.FindAsync(q => query);

            Assert.Empty(result.Documents);
        }
        public static IRepositoryQuery <T> Configure <T>(this RepositoryQueryDescriptor <T> configure) where T : class
        {
            IRepositoryQuery <T> o = new RepositoryQuery <T>();

            if (configure != null)
            {
                o = configure(o);
            }

            return(o);
        }
Exemplo n.º 20
0
        public Task <FindResults <PersistentEvent> > GetByFilterAsync(AppFilter systemFilter, string userFilter, string sort, string field, DateTime utcStart, DateTime utcEnd, CommandOptionsDescriptor <PersistentEvent> options = null)
        {
            IRepositoryQuery <PersistentEvent> query = new RepositoryQuery <PersistentEvent>()
                                                       .DateRange(utcStart, utcEnd, field ?? InferField(e => e.Date))
                                                       .Index(utcStart, utcEnd)
                                                       .AppFilter(systemFilter)
                                                       .FilterExpression(userFilter);

            query = !String.IsNullOrEmpty(sort) ? query.SortExpression(sort) : query.SortDescending(e => e.Date);
            return(FindAsync(q => query, options));
        }
        public static IRepositoryQuery Configure(this RepositoryQueryDescriptor configure)
        {
            IRepositoryQuery o = new RepositoryQuery();

            if (configure != null)
            {
                o = configure(o);
            }

            return(o);
        }
Exemplo n.º 22
0
        private async Task <bool> SendSummaryNotificationAsync(Project project, SummaryNotification data)
        {
            var userIds = project.NotificationSettings.Where(n => n.Value.SendDailySummary).Select(n => n.Key).ToList();

            if (userIds.Count == 0)
            {
                _logger.Info().Project(project.Id).Message("Project \"{0}\" has no users to send summary to.", project.Name).Write();
                return(false);
            }

            var results = await _userRepository.GetByIdsAsync(userIds, o => o.Cache()).AnyContext();

            var users = results.Where(u => u.IsEmailAddressVerified && u.EmailNotificationsEnabled && u.OrganizationIds.Contains(project.OrganizationId)).ToList();

            if (users.Count == 0)
            {
                _logger.Info().Project(project.Id).Message("Project \"{0}\" has no users to send summary to.", project.Name);
                return(false);
            }

            // TODO: What should we do about suspended organizations.
            var organization = await _organizationRepository.GetByIdAsync(project.OrganizationId, o => o.Cache()).AnyContext();

            if (organization == null)
            {
                _logger.Info().Project(project.Id).Message("The organization \"{0}\" for project \"{1}\" may have been deleted. No summaries will be sent.", project.OrganizationId, project.Name);
                return(false);
            }

            _logger.Info("Sending daily summary: users={0} project={1}", users.Count, project.Id);
            var sf           = new ExceptionlessSystemFilter(project, organization);
            var systemFilter = new RepositoryQuery <PersistentEvent>().SystemFilter(sf).DateRange(data.UtcStartTime, data.UtcEndTime, (PersistentEvent e) => e.Date).Index(data.UtcStartTime, data.UtcEndTime);
            var result       = await _eventRepository.CountBySearchAsync(systemFilter, $"{EventIndexType.Alias.Type}:{Event.KnownTypes.Error}", "terms:(is_first_occurrence @include:true) cardinality:stack_id").AnyContext();

            bool hasSubmittedEvents = result.Total > 0;

            if (!hasSubmittedEvents)
            {
                hasSubmittedEvents = await _eventRepository.GetCountByProjectIdAsync(project.Id, true).AnyContext() > 0;
            }

            double newTotal    = result.Aggregations.Terms <double>("terms_is_first_occurrence")?.Buckets.FirstOrDefault()?.Total ?? 0;
            double uniqueTotal = result.Aggregations.Cardinality("cardinality_stack_id")?.Value ?? 0;
            bool   isFreePlan  = organization.PlanId == BillingManager.FreePlan.Id;

            foreach (var user in users)
            {
                _logger.Info().Project(project.Id).Message("Queueing \"{0}\" daily summary email ({1}-{2}) for user {3}.", project.Name, data.UtcStartTime, data.UtcEndTime, user.EmailAddress);
                await _mailer.SendProjectDailySummaryAsync(user, project, data.UtcStartTime, hasSubmittedEvents, result.Total, uniqueTotal, newTotal, isFreePlan).AnyContext();
            }

            _logger.Info().Project(project.Id).Message("Done sending daily summary: users={0} project={1} events={2}", users.Count, project.Name, result.Total);
            return(true);
        }
Exemplo n.º 23
0
        public void ShouldGetEagerlyWithMultipleNestingLevels()
        {
            // arrange
            RepositoryQuery<QueryTest> query = new RepositoryQuery<QueryTest>(m_session.Object);

            // act
            query.With(x => x.ChildObj.GrandchildObj).Result();

            // assert
            m_criteria.Verify(x => x.SetFetchMode("ChildObj.GrandchildObj", FetchMode.Eager));
            m_criteria.Verify(x => x.UniqueResult<QueryTest>());
        }
Exemplo n.º 24
0
        public void ShouldGetById()
        {
            // arrange
            RepositoryQuery<QueryTest> query = new RepositoryQuery<QueryTest>(m_session.Object);

            // act
            query.ById(1).Result();

            // assert
            m_criteria.Verify(x => x.Add(It.IsAny<ICriterion>()));
            m_criteria.Verify(x => x.UniqueResult<QueryTest>());
        }
Exemplo n.º 25
0
    private async Task <ICollection <StackSummaryModel> > GetStackSummariesAsync(ICollection <Stack> stacks, AppFilter eventSystemFilter, TimeInfo ti)
    {
        if (stacks.Count == 0)
        {
            return(new List <StackSummaryModel>());
        }

        var systemFilter = new RepositoryQuery <PersistentEvent>().AppFilter(eventSystemFilter).DateRange(ti.Range.UtcStart, ti.Range.UtcEnd, (PersistentEvent e) => e.Date).Index(ti.Range.UtcStart, ti.Range.UtcEnd);
        var stackTerms   = await _eventRepository.CountAsync(q => q.SystemFilter(systemFilter).FilterExpression(String.Join(" OR ", stacks.Select(r => $"stack:{r.Id}"))).AggregationsExpression($"terms:(stack_id~{stacks.Count} cardinality:user sum:count~1 min:date max:date)"));

        return(await GetStackSummariesAsync(stacks, stackTerms.Aggregations.Terms <string>("terms_stack_id").Buckets, eventSystemFilter, ti));
    }
        protected virtual IRepositoryQuery ConfigureQuery(IRepositoryQuery query)
        {
            if (query == null)
            {
                query = new RepositoryQuery <T>();
            }

            if (DefaultExcludes.Count > 0 && query.GetExcludes().Count == 0)
            {
                query.Exclude(DefaultExcludes);
            }

            return(query);
        }
        protected virtual IRepositoryQuery ConfigureQuery(IRepositoryQuery <T> query)
        {
            if (query == null)
            {
                query = new RepositoryQuery <T>();
            }

            if (_defaultExcludes.Count > 0 && query.GetExcludes().Count == 0)
            {
                query.Exclude(_defaultExcludes.Select(e => e.Value));
            }

            return(query);
        }
Exemplo n.º 28
0
        public async Task BuildAsync <T>(QueryBuilderContext <T> ctx) where T : class, new()
        {
            var options = ctx.Options.GetElasticTypeSettings();

            if (options.HasParent == false)
            {
                return;
            }

            var  parentQuery = ctx.Source.GetParentQuery();
            bool hasIds      = ctx.Source.GetIds().Count > 0;

            // even if no parent query has been set, run it through to get soft delete filter
            if (options.ParentSupportsSoftDeletes && hasIds == false && parentQuery == null)
            {
                parentQuery = new RepositoryQuery();
            }

            if (parentQuery == null)
            {
                return;
            }

            var parentType = options.ChildType.GetParentIndexType();

            if (parentType == null)
            {
                throw new ApplicationException("ParentIndexTypeName on child index type must match the name of the parent type.");
            }

            var parentOptions = new CommandOptions().ElasticType(parentType);

            var parentContext = new QueryBuilderContext <object>(parentQuery, parentOptions, null, ctx, ContextType.Parent);
            await _queryBuilder.BuildAsync(parentContext).AnyContext();

            if ((parentContext.Query == null || ((IQueryContainer)parentContext.Query).IsConditionless) &&
                (parentContext.Filter == null || ((IQueryContainer)parentContext.Filter).IsConditionless))
            {
                return;
            }

            ctx.Filter &= new HasParentQuery {
                Type  = parentType.Name,
                Query = new BoolQuery {
                    Must   = new QueryContainer[] { parentContext.Query },
                    Filter = new QueryContainer[] { parentContext.Filter },
                }
            };
        }
Exemplo n.º 29
0
        public static IEnumerable <Model> AsEnumerable <Entity, Model>(this RepositoryQuery <Entity> query)
            where Model : class
            where Entity : class
        {
            var results = query.Get().AsEnumerable <Entity>();

            var models = new List <Model>();

            foreach (var result in results)
            {
                models.Add(Mapper.Map <Model>(result));
            }

            return(models);
        }
Exemplo n.º 30
0
        public static async Task <List <Model> > ToListAsync <Entity, Model>(this RepositoryQuery <Entity> query)
            where Model : class
            where Entity : class
        {
            var results = await query.Get().ToListAsync();

            var models = new List <Model>();

            foreach (var result in results)
            {
                models.Add(Mapper.Map <Model>(result));
            }

            return(models);
        }
Exemplo n.º 31
0
        public async Task <BillingPlanStats> GetBillingPlanStatsAsync()
        {
            var query = new RepositoryQuery <Organization>().Include(o => o.PlanId, o => o.IsSuspended, o => o.BillingPrice, o => o.BillingStatus)
                        .SortDescending((Organization o) => o.PlanId);

            var     results             = (await FindAsync(query).AnyContext()).Documents;
            var     smallOrganizations  = results.Where(o => String.Equals(o.PlanId, _plans.SmallPlan.Id) && o.BillingPrice > 0).ToList();
            var     mediumOrganizations = results.Where(o => String.Equals(o.PlanId, _plans.MediumPlan.Id) && o.BillingPrice > 0).ToList();
            var     largeOrganizations  = results.Where(o => String.Equals(o.PlanId, _plans.LargePlan.Id) && o.BillingPrice > 0).ToList();
            decimal monthlyTotalPaid    = smallOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice)
                                          + mediumOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice)
                                          + largeOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice);

            var     smallYearlyOrganizations  = results.Where(o => String.Equals(o.PlanId, _plans.SmallYearlyPlan.Id) && o.BillingPrice > 0).ToList();
            var     mediumYearlyOrganizations = results.Where(o => String.Equals(o.PlanId, _plans.MediumYearlyPlan.Id) && o.BillingPrice > 0).ToList();
            var     largeYearlyOrganizations  = results.Where(o => String.Equals(o.PlanId, _plans.LargeYearlyPlan.Id) && o.BillingPrice > 0).ToList();
            decimal yearlyTotalPaid           = smallYearlyOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice)
                                                + mediumYearlyOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice)
                                                + largeYearlyOrganizations.Where(o => !o.IsSuspended && o.BillingStatus == BillingStatus.Active).Sum(o => o.BillingPrice);

            return(new BillingPlanStats {
                SmallTotal = smallOrganizations.Count,
                SmallYearlyTotal = smallYearlyOrganizations.Count,
                MediumTotal = mediumOrganizations.Count,
                MediumYearlyTotal = mediumYearlyOrganizations.Count,
                LargeTotal = largeOrganizations.Count,
                LargeYearlyTotal = largeYearlyOrganizations.Count,
                MonthlyTotal = monthlyTotalPaid + (yearlyTotalPaid / 12),
                YearlyTotal = (monthlyTotalPaid * 12) + yearlyTotalPaid,
                MonthlyTotalAccounts = smallOrganizations.Count + mediumOrganizations.Count + largeOrganizations.Count,
                YearlyTotalAccounts = smallYearlyOrganizations.Count + mediumYearlyOrganizations.Count + largeYearlyOrganizations.Count,
                FreeAccounts = results.Count(o => String.Equals(o.PlanId, _plans.FreePlan.Id)),
                PaidAccounts = results.Count(o => !String.Equals(o.PlanId, _plans.FreePlan.Id) && o.BillingPrice > 0),
                FreeloaderAccounts = results.Count(o => !String.Equals(o.PlanId, _plans.FreePlan.Id) && o.BillingPrice <= 0),
                SuspendedAccounts = results.Count(o => o.IsSuspended),
            });
        }
Exemplo n.º 32
0
        public IRepositoryQuery <EmployeeDTO> Get()
        {
            RepositoryQuery <EmployeeDTO> piEmployee = _employeeRepository
                                                       .Query()
                                                       .Include(c => c.Photo, c => c.StandPhoto, c => c.Address, c => c.ContactPerson,
                                                                c => c.ContactPerson.Address)
                                                       .Include(c => c.Education, c => c.Experience, c => c.Hawala, c => c.InsuranceProcess,
                                                                c => c.RequiredDocuments)
                                                       .Include(c => c.Agency, c => c.Agent)
                                                       .Filter(a => !string.IsNullOrEmpty(a.FirstName))
                                                       .OrderBy(q => q.OrderByDescending(c => c.Id));

            if (_includeChilds)
            {
                piEmployee = piEmployee.Include(
                    c => c.CurrentComplain, c => c.CurrentComplain.Remarks, c => c.Complains,
                    c => c.Visa, c => c.Visa.Condition,
                    c => c.Visa.Sponsor, c => c.Visa.Sponsor.Address,
                    c => c.LabourProcess, c => c.EmbassyProcess, c => c.FlightProcess,
                    c => c.Visa.Agent, c => c.Visa.Agent.Address);
            }

            return(piEmployee);
        }
Exemplo n.º 33
0
 public static RepositoryQuery All(this IOrganizationService service, string entityname)
 {
     var rq = new RepositoryQuery(service, entityname);
     return rq;
 }