Skip to content

Commit

Permalink
See mothers
Browse files Browse the repository at this point in the history
  • Loading branch information
Joel Wekesa authored and Joel Wekesa committed Jul 17, 2024
1 parent 8fa3740 commit 319c51e
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 3 deletions.
7 changes: 7 additions & 0 deletions src/users/dto/get-users.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { IsNotEmpty, IsString } from "class-validator";

export class GetUserDto {
@IsNotEmpty()
@IsString()
userId: string
}
8 changes: 7 additions & 1 deletion src/users/users.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ import { GetUserByRoleAndFacility } from './dto/get-user-by-role-and-facility.dt
import { GetUserById } from './dto/get-user-by-id.dto';
import { PasswordResetRequestDto } from './dto/password-reset-request.dto';
import { UpdatePasswordDto } from './dto/update-password.dto';
import { GetUserDto } from './dto/get-users.dto';

@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
constructor(private readonly usersService: UsersService) { }

@UseGuards(RolesGuard)
@UserRoles(Roles.CHV, Roles.ADMIN)
Expand Down Expand Up @@ -126,4 +127,9 @@ export class UsersController {
getIndividual() {
return this.usersService.getUser();
}

@Get('mothers-registered')
getMothersRegistered(@Query() data: GetUserDto) {
return this.usersService.mothersRegistered(data)
}
}
38 changes: 36 additions & 2 deletions src/users/users.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,23 @@ import {
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
import * as bcrypt from 'bcryptjs';
import * as jwt from 'jsonwebtoken';
import { emailRegex, phoneRegex } from 'src/helpers/regex';
import { v4 as uuidv4 } from 'uuid';
import { emailBodyPass } from '../helpers/password-requested-email';
import { SendEmail } from '../helpers/send-email';
import { emailBody } from '../helpers/user-created-email';
import { User, UserHelper } from '../helpers/user-helper';
import { PrismaService } from '../prisma/prisma.service';
import { SendsmsService } from '../sendsms/sendsms.service';
import { CreateUserDto } from './dto/create-user.dto';
import { GetUserByRoleAndFacility } from './dto/get-user-by-role-and-facility.dto';
import { GetUserByRole } from './dto/get-user-by-role.dto';
import { GetUserDto } from './dto/get-users.dto';
import { LoginManagementDto } from './dto/login-management.dto';
import { UpdatePasswordDto } from './dto/update-password.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { PasswordResetRequestEvent } from './events/password-requested.event';
import { UserCreatedEvent } from './events/user-created-event';
import { SendsmsService } from '../sendsms/sendsms.service';
import { emailRegex, phoneRegex } from 'src/helpers/regex';

export enum Roles {
ADMIN = 'Admin',
Expand Down Expand Up @@ -590,6 +591,39 @@ export class UsersService {
return user;
}


async mothersRegistered({ userId }: GetUserDto) {

const ms = this.prisma.user.findMany({
where: {
createdById: userId,
role: Roles.MOTHER
},

include: {
Facility: {
select: {
name: true
}
}
}
})

const cs = this.prisma.user.count({
where: {
createdById: userId,
role: Roles.MOTHER
}
})

const [mothers, count] = await this.prisma.$transaction([ms, cs])

return {
mothers,
count
}
}

@OnEvent('password.request')
async handlePasswordRequest(data: PasswordResetRequestEvent) {
const { options: { type, email, phone } } = data;
Expand Down

0 comments on commit 319c51e

Please sign in to comment.