mirror of
https://github.com/Kevsl/crypto-exchange-api.git
synced 2025-07-09 14:00:12 +02:00
111 lines
2.4 KiB
TypeScript
111 lines
2.4 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { PrismaService } from '../prisma/prisma.service';
|
|
import { checkUserHasAccount, checkuserIsAdmin } from 'src/utils/checkUser';
|
|
|
|
@Injectable()
|
|
export class UserService {
|
|
constructor(private prisma: PrismaService) {}
|
|
|
|
async GetMyAssets(userId: string) {
|
|
await checkUserHasAccount(userId);
|
|
|
|
const user = await this.prisma.user.findUnique({
|
|
where: {
|
|
id: userId,
|
|
},
|
|
select: {
|
|
firstName: true,
|
|
lastName: true,
|
|
dollarAvailables: true,
|
|
pseudo: true,
|
|
age: true,
|
|
UserHasCrypto: {
|
|
select: {
|
|
Crypto: true,
|
|
amount: true,
|
|
id: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
return user;
|
|
}
|
|
|
|
async GetUsersAssets(userId: string) {
|
|
await checkuserIsAdmin(userId);
|
|
|
|
const user = await this.prisma.user.findMany({
|
|
select: {
|
|
firstName: true,
|
|
lastName: true,
|
|
pseudo: true,
|
|
dollarAvailables: true,
|
|
UserHasCrypto: {
|
|
select: {
|
|
Crypto: true,
|
|
amount: true,
|
|
},
|
|
},
|
|
},
|
|
orderBy: {
|
|
dollarAvailables: 'desc',
|
|
},
|
|
take: 20,
|
|
});
|
|
return user;
|
|
}
|
|
|
|
async GetMyTrades(userId: string) {
|
|
await checkUserHasAccount(userId);
|
|
const user = await this.prisma.trade.findMany({
|
|
where: {
|
|
OR: [{ id_giver: userId }, { id_receiver: userId }],
|
|
},
|
|
|
|
select: {
|
|
Giver: {
|
|
select: {
|
|
id: true,
|
|
firstName: true,
|
|
lastName: true,
|
|
pseudo: true,
|
|
dollarAvailables: true,
|
|
city: true,
|
|
email: true,
|
|
age: true,
|
|
created_at: true,
|
|
updated_at: true,
|
|
UserHasCrypto: true,
|
|
Offer: true,
|
|
},
|
|
},
|
|
Receiver: {
|
|
select: {
|
|
id: true,
|
|
firstName: true,
|
|
lastName: true,
|
|
pseudo: true,
|
|
dollarAvailables: true,
|
|
city: true,
|
|
email: true,
|
|
age: true,
|
|
created_at: true,
|
|
updated_at: true,
|
|
UserHasCrypto: true,
|
|
Offer: true,
|
|
},
|
|
},
|
|
Crypto: true,
|
|
id: true,
|
|
id_giver: true,
|
|
id_receiver: true,
|
|
id_crypto: true,
|
|
amount_traded: true,
|
|
created_at: true,
|
|
updated_at: true,
|
|
},
|
|
});
|
|
return user;
|
|
}
|
|
}
|