add : subscription list

This commit is contained in:
2026-01-05 20:40:18 +03:30
parent 4cf89e1f8e
commit f0eae80342
3 changed files with 118 additions and 0 deletions
@@ -16,6 +16,7 @@ import { UsersService } from "../../users/providers/users.service";
import { PaginationUtils } from "../../utils/providers/pagination.utils";
import { SUBSCRIPTIONS } from "../constants";
import { AddSubscriptionsToServiceDto } from "../DTO/create-subscription.dto";
import { AdminUserSubscriptionsQueryDto } from "../DTO/admin-user-subscriptions-query.dto";
import { SearchUserSubsQueryDto } from "../DTO/search-user-subs-query.dto";
import { ServiceSubsQueryDto } from "../DTO/service-subs-query.dto";
import { ExtendUSerSubscribeServiceDto, SubscribeServiceDto } from "../DTO/subscribe-service.dto";
@@ -589,5 +590,61 @@ export class SubscriptionsService {
);
}
//************************************ */
async getAllUserSubscriptions(queryDto: AdminUserSubscriptionsQueryDto) {
const { limit, skip } = PaginationUtils(queryDto);
const queryBuilder = this.userSubscriptionsRepository
.createQueryBuilder("userSubscription")
.leftJoinAndSelect("userSubscription.user", "user")
.leftJoinAndSelect("userSubscription.plan", "plan")
.leftJoinAndSelect("plan.service", "service");
if (queryDto.q) {
queryBuilder.andWhere(
"(userSubscription.businessName ILIKE :query OR userSubscription.description ILIKE :query OR user.email ILIKE :query OR user.firstName ILIKE :query OR user.lastName ILIKE :query OR service.name ILIKE :query OR service.title ILIKE :query)",
{ query: `%${queryDto.q}%` }
);
}
if (queryDto.userId) {
queryBuilder.andWhere("user.id = :userId", { userId: queryDto.userId });
}
if (queryDto.serviceId) {
queryBuilder.andWhere("service.id = :serviceId", { serviceId: queryDto.serviceId });
}
if (queryDto.status) {
queryBuilder.andWhere("userSubscription.status = :status", { status: queryDto.status });
}
if (queryDto.startDateFrom) {
queryBuilder.andWhere("userSubscription.startDate >= :startDateFrom", { startDateFrom: queryDto.startDateFrom });
}
if (queryDto.startDateTo) {
queryBuilder.andWhere("userSubscription.startDate <= :startDateTo", { startDateTo: queryDto.startDateTo });
}
if (queryDto.endDateFrom) {
queryBuilder.andWhere("userSubscription.endDate >= :endDateFrom", { endDateFrom: queryDto.endDateFrom });
}
if (queryDto.endDateTo) {
queryBuilder.andWhere("userSubscription.endDate <= :endDateTo", { endDateTo: queryDto.endDateTo });
}
queryBuilder.orderBy("userSubscription.createdAt", "DESC");
const [userSubscriptions, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
return {
userSubscriptions,
count,
pagination: true,
};
}
//************************************ */
}