Exemplo n.º 1
0
 public Task <List <IndividualBonusIntentOutput> > GetBonusIntents(IOrganizationPerson person)
 {
     return(Repository.Queryable()
            .Where(x => x.OrganizationId == person.OrganizationId && x.PersonId == person.PersonId)
            .ProjectTo <IndividualBonusIntentOutput>(ProjectionMapping)
            .ToListAsync());
 }
Exemplo n.º 2
0
 public Task <List <IndividualBonusIntentOutput> > GetPending(IOrganizationPerson person, BonusFilters filters)
 {
     return(Repository.Queryable()
            .Where(x => x.OrganizationId == person.OrganizationId && x.PersonId == person.PersonId && x.TransferId == null)
            .ProjectTo <IndividualBonusIntentOutput>(ProjectionMapping)
            .ToListAsync());
 }
Exemplo n.º 3
0
        public async Task <OrganizationPersonResult> ShowOrganization(IOrganizationPerson person)
        {
            _logger.LogInformation(GetLogMessage("Org: {0}"), person.OrganizationId);

            var entity = await Repository.Queryable().Where(x =>
                                                            x.OrganizationId == person.OrganizationId && x.PersonId == person.PersonId)
                         .FirstOrDefaultAsync();

            var retVal = new OrganizationPersonResult
            {
                OrganizationId = person.OrganizationId,
                PersonId       = person.PersonId
            };

            entity.IsHidden = false;

            var result = Repository.Update(entity, true);

            _logger.LogDebug(GetLogMessage("{0} records updated"));

            if (result > 0)
            {
                retVal.Succeeded = true;
            }

            return(retVal);
        }
Exemplo n.º 4
0
        public async Task <List <IndividualPayoutIntentOutput> > GetPending(IOrganizationPerson principal, PayoutFilters filters)
        {
            var payouts = await _individualPayoutIntents.Queryable()
                          .Where(x => x.OrganizationId == principal.OrganizationId && x.PersonId == principal.PersonId)
                          .ProjectTo <IndividualPayoutIntentOutput>(ProjectionMapping)
                          .ToListAsync();

            return(payouts);
        }
Exemplo n.º 5
0
 public PayoutController(
     IOrganizationPerson person,
     IDisperseFundsService payoutService,
     ICommissionService commissionService,
     IServiceProvider serviceProvider)
 {
     _person            = person;
     _payoutService     = payoutService;
     _commissionService = commissionService;
 }
Exemplo n.º 6
0
        public async Task <CommissionOutput> GetCommission(IOrganizationPerson person)
        {
            var entries = Repository.Queryable()
                          .Include(x => x.InvoiceItem)
                          .Where(x => (x.AccountManagerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId) ||
                                 (x.ProjectManagerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId) ||
                                 (x.MarketingAgencyOwnerId == person.PersonId && x.MarketingOrganizationId == person.OrganizationId) ||
                                 (x.RecruitingAgencyOwnerId == person.PersonId && x.RecruitingOrganizationId == person.OrganizationId) ||
                                 (x.ProviderAgencyOwnerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId) ||
                                 (x.ContractorId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId) ||
                                 (x.RecruiterId == person.PersonId && x.RecruitingOrganizationId == person.OrganizationId) ||
                                 (x.MarketerId == person.PersonId && x.MarketingOrganizationId == person.OrganizationId))
                          .ToListAsync();


            //var individual = await _organizationPeople.Queryable()
            //    .Include(x=>x.)

            var op = await _organizationPeople.Queryable().Where(x =>
                                                                 x.OrganizationId == person.OrganizationId && x.PersonId == person.PersonId)
                     .Include(x => x.BonusIntents)
                     .Include(x => x.Payouts)
                     .Include(x => x.Organization)
                     .ThenInclude(x => x.BonusIntents)
                     .FirstOrDefaultAsync();



            var individualPayoutIntents = op.Payouts.ToList();
            var individualBonuses       = op.BonusIntents.ToList();

            var organizationPayoutIntents = _organizationPayoutIntents.Queryable()
                                            .Include(x => x.Organization)
                                            .Where(x => x.OrganizationId == person.OrganizationId && x.Organization.CustomerId == person.PersonId)
                                            .ToListAsync();

            var organizationBonusIntents = _organizationBonuses.Queryable()
                                           .Include(x => x.Organization)
                                           .Where(x => x.OrganizationId == person.OrganizationId && x.Organization.CustomerId == person.PersonId)
                                           .ToListAsync();

            var stream = GetStreamOutput(person, entries.Result, organizationPayoutIntents.Result,
                                         individualPayoutIntents);

            var bonus = GetBonusOutput(individualBonuses, organizationBonusIntents.Result);

            var output = new CommissionOutput(bonus.Result, stream.Result);

            return(output);
        }
Exemplo n.º 7
0
        private Task <StreamOutput> GetStreamOutput(
            IOrganizationPerson person, List <TimeEntry> entries, List <OrganizationPayoutIntent> organizationPayoutIntents, List <IndividualPayoutIntent> individualPayouts)
        {
            var streamOutput = new StreamOutput
            {
                ProviderAgencyStream = entries.Where(x =>
                                                     x.ProviderAgencyOwnerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId)
                                       .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalAgencyStream)),
                MarketingAgencyStream = entries.Where(x =>
                                                      x.MarketingAgencyOwnerId == person.PersonId && x.MarketingOrganizationId == person.OrganizationId)
                                        .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalMarketingAgencyStream)),
                RecruitingAgencyStream = entries.Where(x =>
                                                       x.RecruitingAgencyOwnerId == person.PersonId && x.RecruitingOrganizationId == person.OrganizationId)
                                         .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalRecruitingAgencyStream)),
                MarketerStream = entries.Where(x =>
                                               x.MarketerId == person.PersonId && x.MarketingOrganizationId == person.OrganizationId)
                                 .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalMarketerStream)),
                RecruiterStream = entries.Where(x =>
                                                x.RecruiterId == person.PersonId && x.RecruitingOrganizationId == person.OrganizationId)
                                  .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalRecruiterStream)),
                ContractorStream = entries.Where(x =>
                                                 x.ContractorId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId)
                                   .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalContractorStream)),
                ProjectManagerStream = entries.Where(x =>
                                                     x.ProjectManagerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId)
                                       .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalProjectManagerStream)),
                AccountManagerStream = entries.Where(x =>
                                                     x.AccountManagerId == person.PersonId && x.ProviderOrganizationId == person.OrganizationId)
                                       .GroupBy(x => x.Status).ToDictionary(x => x.Key, x => x.Sum(y => y.TotalAccountManagerStream))
            };

            streamOutput.ProviderAgencyStream[TimeStatus.Dispersed] = organizationPayoutIntents
                                                                      .Where(x => x.Type == CommissionType.ProviderAgencyStream && x.InvoiceTransferId != null)
                                                                      .Sum(x => x.Amount);

            streamOutput.ProviderAgencyStream[TimeStatus.PendingPayout] = organizationPayoutIntents
                                                                          .Where(x => x.Type == CommissionType.ProviderAgencyStream && x.InvoiceTransferId == null)
                                                                          .Sum(x => x.Amount);


            streamOutput.AccountManagerStream[TimeStatus.Dispersed] = individualPayouts
                                                                      .Where(x => x.Type == CommissionType.AccountManagerStream && x.InvoiceTransferId != null)
                                                                      .Sum(x => x.Amount);

            streamOutput.AccountManagerStream[TimeStatus.PendingPayout] = individualPayouts
                                                                          .Where(x => x.Type == CommissionType.AccountManagerStream && x.InvoiceTransferId == null)
                                                                          .Sum(x => x.Amount);

            streamOutput.ProjectManagerStream[TimeStatus.Dispersed] = individualPayouts
                                                                      .Where(x => x.Type == CommissionType.ProjectManagerStream && x.InvoiceTransferId != null)
                                                                      .Sum(x => x.Amount);

            streamOutput.ProjectManagerStream[TimeStatus.PendingPayout] = individualPayouts
                                                                          .Where(x => x.Type == CommissionType.ProjectManagerStream && x.InvoiceTransferId == null)
                                                                          .Sum(x => x.Amount);

            streamOutput.ContractorStream[TimeStatus.PendingPayout] = individualPayouts
                                                                      .Where(x => x.Type == CommissionType.ContractorStream && x.InvoiceTransferId == null)
                                                                      .Sum(x => x.Amount);

            streamOutput.ContractorStream[TimeStatus.Dispersed] = individualPayouts
                                                                  .Where(x => x.Type == CommissionType.ContractorStream && x.InvoiceTransferId != null)
                                                                  .Sum(x => x.Amount);



            streamOutput.RecruitingAgencyStream[TimeStatus.Dispersed] = organizationPayoutIntents
                                                                        .Where(x => x.Type == CommissionType.RecruitingAgencyStream && x.InvoiceTransferId != null)
                                                                        .Sum(x => x.Amount);

            streamOutput.RecruitingAgencyStream[TimeStatus.PendingPayout] = organizationPayoutIntents
                                                                            .Where(x => x.Type == CommissionType.RecruitingAgencyStream && x.InvoiceTransferId == null)
                                                                            .Sum(x => x.Amount);


            streamOutput.RecruiterStream[TimeStatus.Dispersed] = individualPayouts
                                                                 .Where(x => x.Type == CommissionType.RecruiterStream && x.InvoiceTransferId != null)
                                                                 .Sum(x => x.Amount);

            streamOutput.RecruiterStream[TimeStatus.PendingPayout] = individualPayouts
                                                                     .Where(x => x.Type == CommissionType.RecruiterStream && x.InvoiceTransferId == null)
                                                                     .Sum(x => x.Amount);


            streamOutput.MarketingAgencyStream[TimeStatus.Dispersed] = organizationPayoutIntents
                                                                       .Where(x => x.Type == CommissionType.MarketingAgencyStream && x.InvoiceTransferId != null)
                                                                       .Sum(x => x.Amount);

            streamOutput.MarketingAgencyStream[TimeStatus.PendingPayout] = organizationPayoutIntents
                                                                           .Where(x => x.Type == CommissionType.MarketingAgencyStream && x.InvoiceTransferId == null)
                                                                           .Sum(x => x.Amount);

            streamOutput.MarketerStream[TimeStatus.Dispersed] = individualPayouts
                                                                .Where(x => x.Type == CommissionType.MarketerStream && x.InvoiceTransferId != null)
                                                                .Sum(x => x.Amount);

            streamOutput.MarketerStream[TimeStatus.PendingPayout] = individualPayouts
                                                                    .Where(x => x.Type == CommissionType.MarketerStream && x.InvoiceTransferId == null)
                                                                    .Sum(x => x.Amount);

            return(Task.FromResult(streamOutput));
        }
Exemplo n.º 8
0
 public Task <ProviderFinancialInfo> GetProviderFinancialInfo(IOrganizationPerson person)
 {
     //var matrix = await _timeMatrixService.GetResults<>()
     throw new NotImplementedException();
 }
Exemplo n.º 9
0
 public BonusController(IOrganizationPerson person, IIndividualBonusIntentService bonusService)
 {
     _person       = person;
     _bonusService = bonusService;
 }