feat: separate prior records behind an owner switch and count last-period questions
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -12,6 +12,7 @@ import { Prisma } from '@prisma/client';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import type { Actor } from '../common/record-scope';
|
||||
import { dealAccessWhere, resolveOwnerId } from '../common/record-scope';
|
||||
import { dealPriorWhere } from '../common/prior-archive';
|
||||
import { asCustomFields, toJsonCustomFields } from '../common/custom-fields';
|
||||
import { normalizePhone } from '../contacts/normalize';
|
||||
import {
|
||||
@@ -110,7 +111,11 @@ export class DealsExcelService {
|
||||
async export(actor: Actor): Promise<Buffer> {
|
||||
const [rows, defs] = await Promise.all([
|
||||
this.prisma.deal.findMany({
|
||||
where: { organizationId: actor.organizationId, ...dealAccessWhere(actor) },
|
||||
where: {
|
||||
organizationId: actor.organizationId,
|
||||
...dealAccessWhere(actor),
|
||||
...dealPriorWhere(actor.priorLens),
|
||||
},
|
||||
include: {
|
||||
person: {
|
||||
select: {
|
||||
|
||||
@@ -37,8 +37,9 @@ export class PipelinesController {
|
||||
board(
|
||||
@CurrentUser() user: Actor,
|
||||
@Query('pipelineId') pipelineId?: string,
|
||||
@Query('prior') prior?: string,
|
||||
) {
|
||||
return this.pipelinesService.getBoard(user.organizationId, pipelineId, user);
|
||||
return this.pipelinesService.getBoard(user.organizationId, pipelineId, user, prior === 'all');
|
||||
}
|
||||
|
||||
@Post()
|
||||
|
||||
@@ -15,6 +15,7 @@ import { Prisma } from '@prisma/client';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { asCustomFields } from '../common/custom-fields';
|
||||
import { type Actor, dealAccessWhere } from '../common/record-scope';
|
||||
import { dealPriorWhere } from '../common/prior-archive';
|
||||
import { decimalToBase, loadOrgRates } from '../common/currency';
|
||||
import { assertStageMap, dealStatusForStage } from './pipeline-merge.util';
|
||||
|
||||
@@ -294,8 +295,9 @@ export class PipelinesService {
|
||||
pipelineId?: string,
|
||||
actor?: Pick<
|
||||
Actor,
|
||||
'userId' | 'role' | 'dataVisibility' | 'visibleUserIds'
|
||||
'userId' | 'role' | 'dataVisibility' | 'visibleUserIds' | 'priorLens'
|
||||
>,
|
||||
includePrior = false,
|
||||
): Promise<PipelineBoardDto> {
|
||||
const pipeline = pipelineId
|
||||
? await this.prisma.pipeline.findFirst({
|
||||
@@ -313,7 +315,7 @@ export class PipelinesService {
|
||||
|
||||
if (!resolved) {
|
||||
const created = await this.ensureDefaultPipeline(organizationId);
|
||||
return this.getBoard(organizationId, created.id, actor);
|
||||
return this.getBoard(organizationId, created.id, actor, includePrior);
|
||||
}
|
||||
|
||||
const deals = await this.prisma.deal.findMany({
|
||||
@@ -321,6 +323,7 @@ export class PipelinesService {
|
||||
organizationId,
|
||||
pipelineId: resolved.id,
|
||||
...(actor ? dealAccessWhere(actor) : {}),
|
||||
...(includePrior ? {} : dealPriorWhere(actor?.priorLens)),
|
||||
},
|
||||
include: {
|
||||
person: { select: { id: true, firstName: true, lastName: true } },
|
||||
|
||||
Reference in New Issue
Block a user