public Task <List <IndividualBonusIntentOutput> > GetBonusIntents(IOrganizationPerson person) { return(Repository.Queryable() .Where(x => x.OrganizationId == person.OrganizationId && x.PersonId == person.PersonId) .ProjectTo <IndividualBonusIntentOutput>(ProjectionMapping) .ToListAsync()); }
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()); }
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); }
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); }
public PayoutController( IOrganizationPerson person, IDisperseFundsService payoutService, ICommissionService commissionService, IServiceProvider serviceProvider) { _person = person; _payoutService = payoutService; _commissionService = commissionService; }
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); }
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)); }
public Task <ProviderFinancialInfo> GetProviderFinancialInfo(IOrganizationPerson person) { //var matrix = await _timeMatrixService.GetResults<>() throw new NotImplementedException(); }
public BonusController(IOrganizationPerson person, IIndividualBonusIntentService bonusService) { _person = person; _bonusService = bonusService; }