Skip to content

Commit

Permalink
feat(task,ticket): added calendar view
Browse files Browse the repository at this point in the history
  • Loading branch information
batamar committed Mar 16, 2021
1 parent e9ebbc4 commit caa0fca
Show file tree
Hide file tree
Showing 32 changed files with 945 additions and 297 deletions.
37 changes: 27 additions & 10 deletions api/src/__tests__/dealQueries.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,28 @@ describe('dealQueries', () => {
expect(response.length).toBe(1);
});

test('Deals total count', async () => {
const stage = await stageFactory({});
const currentUser = await userFactory({});

const args = { stageId: stage._id };

await dealFactory(args);
await dealFactory(args);

const qry = `
query dealsTotalCount($stageId: String!) {
dealsTotalCount(stageId: $stageId)
}
`;

const response = await graphqlRequest(qry, 'dealsTotalCount', args, {
user: currentUser
});

expect(response).toBe(2);
});

test('Deal detail', async () => {
const currentUser = await userFactory({});
const board = await boardFactory();
Expand Down Expand Up @@ -567,24 +589,19 @@ describe('dealQueries', () => {
query dealsTotalAmounts($pipelineId: String) {
dealsTotalAmounts(pipelineId: $pipelineId) {
_id
dealCount
totalForType {
_id
name
currencies {
name
currencies {
name
amount
}
amount
}
}
}
`;

const response = await graphqlRequest(qry, 'dealsTotalAmounts', filter);

expect(response.dealCount).toBe(3);
expect(response.totalForType[0].currencies[0].name).toBe('USD');
expect(response.totalForType[0].currencies[0].amount).toBe(600);
expect(response[0].currencies[0].name).toBe('USD');
expect(response[0].currencies[0].amount).toBe(600);
});

test('Deal (=ticket, task) filter by conformity saved and related', async () => {
Expand Down
22 changes: 22 additions & 0 deletions api/src/__tests__/taskQueries.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,28 @@ describe('taskQueries', () => {
expect(response.length).toBe(3);
});

test('Tasks total count', async () => {
const stage = await stageFactory({});
const currentUser = await userFactory({});

const args = { stageId: stage._id };

await taskFactory(args);
await taskFactory(args);

const qry = `
query tasksTotalCount($stageId: String!) {
tasksTotalCount(stageId: $stageId)
}
`;

const response = await graphqlRequest(qry, 'tasksTotalCount', args, {
user: currentUser
});

expect(response).toBe(2);
});

test('Task detail', async () => {
const task = await taskFactory();
const response = await graphqlRequest(qryDetail, 'taskDetail', {
Expand Down
22 changes: 22 additions & 0 deletions api/src/__tests__/ticketQueries.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,28 @@ describe('ticketQueries', () => {
expect(response.length).toBe(3);
});

test('Tickets total count', async () => {
const stage = await stageFactory({});
const currentUser = await userFactory({});

const args = { stageId: stage._id };

await ticketFactory(args);
await ticketFactory(args);

const qry = `
query ticketsTotalCount($stageId: String!) {
ticketsTotalCount(stageId: $stageId)
}
`;

const response = await graphqlRequest(qry, 'ticketsTotalCount', args, {
user: currentUser
});

expect(response).toBe(2);
});

test('Ticket detail', async () => {
const ticket = await ticketFactory();

Expand Down
36 changes: 25 additions & 11 deletions api/src/data/resolvers/queries/boardUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,10 +203,23 @@ export const generateCommonFilters = async (
return filter;
};

export const calendarFilters = async (filter, args) => {
const { date, pipelineId } = args;

if (date) {
const stageIds = await Stages.find({ pipelineId }).distinct('_id');

filter.closeDate = dateSelector(date);
filter.stageId = { $in: stageIds };
}

return filter;
};

export const generateDealCommonFilters = async (
currentUserId: string,
args: any,
extraParams?: any
args,
extraParams?
) => {
args.type = 'deal';

Expand All @@ -218,14 +231,7 @@ export const generateDealCommonFilters = async (
}

// Calendar monthly date
const { date, pipelineId } = args;

if (date) {
const stageIds = await Stages.find({ pipelineId }).distinct('_id');

filter.closeDate = dateSelector(date);
filter.stageId = { $in: stageIds };
}
await calendarFilters(filter, args);

return filter;
};
Expand All @@ -244,6 +250,9 @@ export const generateTicketCommonFilters = async (
filter.source = contains(source);
}

// Calendar monthly date
await calendarFilters(filter, args);

return filter;
};

Expand All @@ -253,7 +262,12 @@ export const generateTaskCommonFilters = async (
) => {
args.type = 'task';

return generateCommonFilters(currentUserId, args);
const filter = await generateCommonFilters(currentUserId, args);

// Calendar monthly date
await calendarFilters(filter, args);

return filter;
};

export const generateSort = (args: IListParams) => {
Expand Down
11 changes: 7 additions & 4 deletions api/src/data/resolvers/queries/deals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ const dealQueries = {
return deals;
},

async dealsTotalCount(_root, args: IDealListParams, { user }: IContext) {
const filter = await generateDealCommonFilters(user._id, args);

return Deals.find(filter).countDocuments();
},

/**
* Archived list
*/
Expand All @@ -100,7 +106,6 @@ const dealQueries = {
async dealsTotalAmounts(_root, args: IDealListParams, { user }: IContext) {
const filter = await generateDealCommonFilters(user._id, args);

const dealCount = await Deals.find(filter).countDocuments();
const amountList = await Deals.aggregate([
{
$match: filter
Expand Down Expand Up @@ -174,15 +179,13 @@ const dealQueries = {
}
]);

const totalForType = amountList.map(type => {
return amountList.map(type => {
return {
_id: Math.random(),
name: type._id,
currencies: type.currencies
};
});

return { _id: Math.random(), dealCount, totalForType };
},

/**
Expand Down
13 changes: 13 additions & 0 deletions api/src/data/resolvers/queries/tasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ const taskQueries = {
return await getItemList(filter, args, user, 'task');
},

async tasksTotalCount(
_root,
args: IListParams,
{ user, commonQuerySelector }: IContext
) {
const filter = {
...commonQuerySelector,
...(await generateTaskCommonFilters(user._id, args))
};

return Tasks.find(filter).countDocuments();
},

/**
* Archived list
*/
Expand Down
13 changes: 13 additions & 0 deletions api/src/data/resolvers/queries/tickets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ const ticketQueries = {
return await getItemList(filter, args, user, 'ticket');
},

async ticketsTotalCount(
_root,
args: IListParams,
{ user, commonQuerySelector }: IContext
) {
const filter = {
...commonQuerySelector,
...(await generateTicketCommonFilters(user._id, args))
};

return Tickets.find(filter).countDocuments();
},

/**
* Archived list
*/
Expand Down
19 changes: 8 additions & 11 deletions api/src/data/schema/deal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,6 @@ export const types = `
name: String
currencies: [DealTotalCurrency]
}
type DealTotalAmounts {
_id: String
dealCount: Int
totalForType: [TotalForType]
}
`;

const dealMutationParams = `
Expand All @@ -64,22 +58,25 @@ const commonQueryParams = `
userIds: [String]
`;

export const queries = `
dealDetail(_id: String!): Deal
deals(
const listQueryParams = `
initialStageId: String
stageId: String
skip: Int
limit: Int
${commonQueryParams}
${conformityQueryFields}
): [DealListItem]
`;

export const queries = `
dealDetail(_id: String!): Deal
deals(${listQueryParams}): [DealListItem]
dealsTotalCount(${listQueryParams}): Int
archivedDeals(pipelineId: String!, search: String, page: Int, perPage: Int): [Deal]
archivedDealsCount(pipelineId: String!, search: String): Int
dealsTotalAmounts(
${commonQueryParams}
${conformityQueryFields}
): DealTotalAmounts
): [TotalForType]
`;

export const mutations = `
Expand Down
11 changes: 7 additions & 4 deletions api/src/data/schema/task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ export const types = `
}
`;

export const queries = `
taskDetail(_id: String!): Task
tasks(
const listQueryParams = `
pipelineId: String
stageId: String
customerIds: [String]
Expand All @@ -46,7 +44,12 @@ export const queries = `
sortDirection: Int
userIds: [String]
${conformityQueryFields}
): [TaskListItem]
`;

export const queries = `
taskDetail(_id: String!): Task
tasks(${listQueryParams}): [TaskListItem]
tasksTotalCount(${listQueryParams}): Int
archivedTasks(pipelineId: String!, search: String, page: Int, perPage: Int): [Task]
archivedTasksCount(pipelineId: String!, search: String): Int
`;
Expand Down
41 changes: 22 additions & 19 deletions api/src/data/schema/ticket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,30 @@ export const types = `
}
`;

const listQueryParams = `
pipelineId: String
stageId: String
customerIds: [String]
companyIds: [String]
date: ItemDate
skip: Int
limit: Int
search: String
assignedUserIds: [String]
closeDateType: String
priority: [String]
source: [String]
labelIds: [String]
sortField: String
sortDirection: Int
userIds: [String]
${conformityQueryFields}
`;

export const queries = `
ticketDetail(_id: String!): Ticket
tickets(
pipelineId: String
stageId: String
customerIds: [String]
companyIds: [String]
date: ItemDate
skip: Int
limit: Int
search: String
assignedUserIds: [String]
closeDateType: String
priority: [String]
source: [String]
labelIds: [String]
sortField: String
sortDirection: Int
userIds: [String]
${conformityQueryFields}
): [TicketListItem]
tickets(${listQueryParams}): [TicketListItem]
ticketsTotalCount(${listQueryParams}): Int
archivedTickets(pipelineId: String!, search: String, page: Int, perPage: Int): [Ticket]
archivedTicketsCount(pipelineId: String!, search: String): Int
`;
Expand Down
Loading

0 comments on commit caa0fca

Please sign in to comment.