Skip to content

Commit

Permalink
add user dashboard module
Browse files Browse the repository at this point in the history
  • Loading branch information
bahram1249 committed Jul 3, 2024
1 parent 0b3ff80 commit 5985a2a
Show file tree
Hide file tree
Showing 5 changed files with 285 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apps/e-commerce/src/e-commerce.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ import { ProductSaleModule } from './report/product-sale/product-sale.module';
import { InventoryHistoryModule } from './admin/inventory-history/inventory-history.module';
import { AdminPageModule } from './admin/page/page.module';
import { PageModule } from './page/page.module';
import { DashboardModule } from './user/dashboard/dashboard.module';

@Module({
imports: [
Expand Down Expand Up @@ -154,6 +155,7 @@ import { PageModule } from './page/page.module';
InventoryHistoryModule,
AdminPageModule,
PageModule,
DashboardModule,
],
providers: [
{
Expand Down
47 changes: 47 additions & 0 deletions apps/e-commerce/src/user/dashboard/dashboard.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {
Controller,
Get,
HttpCode,
HttpStatus,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { GetUser } from '@rahino/auth/decorator';
import { JwtGuard } from '@rahino/auth/guard';
import { User } from '@rahino/database/models/core/user.entity';
import { JsonResponseTransformInterceptor } from '@rahino/response/interceptor';
import { DashboardService } from './dashboard.service';

@ApiTags('User-Dashboards')
@UseGuards(JwtGuard)
@ApiBearerAuth()
@UseInterceptors(JsonResponseTransformInterceptor)
@Controller({
path: '/api/ecommerce/user/dashboards',
version: ['1'],
})
export class DashaboardController {
constructor(private readonly service: DashboardService) {}

@ApiOperation({ description: 'show total order of current user' })
@Get('/totalOrders')
@HttpCode(HttpStatus.OK)
async totalOrders(@GetUser() user: User) {
return await this.service.totalOrders(user);
}

@ApiOperation({ description: 'show total comments of current user' })
@Get('/totalComments')
@HttpCode(HttpStatus.OK)
async totalComments(@GetUser() user: User) {
return await this.service.totalComments(user);
}

@ApiOperation({ description: 'show total wallet amounts of current user' })
@Get('/totalWalletAmounts')
@HttpCode(HttpStatus.OK)
async totalWalletAmounts(@GetUser() user: User) {
return await this.service.totalWalletAmounts(user);
}
}
13 changes: 13 additions & 0 deletions apps/e-commerce/src/user/dashboard/dashboard.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Module } from '@nestjs/common';
import { DashaboardController } from './dashboard.controller';
import { DashboardService } from './dashboard.service';
import { SequelizeModule } from '@nestjs/sequelize';
import { ECProductComment } from '@rahino/database/models/ecommerce-eav/ec-product-comment.entity';
import { ECOrder } from '@rahino/database/models/ecommerce-eav/ec-order.entity';

@Module({
imports: [SequelizeModule.forFeature([ECProductComment, ECOrder])],
controllers: [DashaboardController],
providers: [DashboardService],
})
export class DashboardModule {}
76 changes: 76 additions & 0 deletions apps/e-commerce/src/user/dashboard/dashboard.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/sequelize';
import { User } from '@rahino/database/models/core/user.entity';
import { ECOrder } from '@rahino/database/models/ecommerce-eav/ec-order.entity';
import { ECProductComment } from '@rahino/database/models/ecommerce-eav/ec-product-comment.entity';
import {
OrderStatusEnum,
ProductCommentStatusEnum,
} from '@rahino/ecommerce/util/enum';
import { QueryOptionsBuilder } from '@rahino/query-filter/sequelize-query-builder';
import { Op } from 'sequelize';
import { Sequelize } from 'sequelize';

@Injectable()
export class DashboardService {
constructor(
@InjectModel(ECProductComment)
private readonly productCommentRepository: typeof ECProductComment,
@InjectModel(ECOrder)
private readonly orderRepository: typeof ECOrder,
) {}

async totalComments(user: User) {
const count = await this.productCommentRepository.count(
new QueryOptionsBuilder()
.filter({ userId: user.id })
.filter({ statusId: ProductCommentStatusEnum.confirm })
.filter(
Sequelize.where(
Sequelize.fn(
'isnull',
Sequelize.col('ECProductComment.isDeleted'),
0,
),
{
[Op.eq]: 0,
},
),
)
.build(),
);
return {
result: count,
};
}

async totalOrders(user: User) {
const count = await this.orderRepository.count(
new QueryOptionsBuilder()
.filter({
orderStatusId: {
[Op.ne]: OrderStatusEnum.WaitingForPayment,
},
})
.filter({ userId: user.id })
.filter(
Sequelize.where(
Sequelize.fn('isnull', Sequelize.col('ECOrder.isDeleted'), 0),
{
[Op.eq]: 0,
},
),
)
.build(),
);
return {
result: count,
};
}

async totalWalletAmounts(user: User) {
return {
result: 0,
};
}
}
147 changes: 147 additions & 0 deletions apps/main/src/sql/core-v1.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3819,6 +3819,7 @@ BEGIN
[updatedAt] datetimeoffset NOT NULL,
);




INSERT INTO Migrations(version, createdAt, updatedAt)
Expand Down Expand Up @@ -14616,6 +14617,152 @@ END
GO



-- ecommerce/admin/pages
IF NOT EXISTS ((SELECT 1 FROM Migrations WHERE version = 'CORE-Permissions-Data-v61'
))
AND EXISTS (
SELECT 1 FROM Settings WHERE 1=1
AND ([key] = 'SITE_NAME' AND [value] IN ('ecommerce'))
)
BEGIN

DECLARE @roleId int = (SELECT TOP 1 id FROM Roles WHERE static_id = 1)
DECLARE @userId bigint = (SELECT TOP 1 id FROM Users WHERE static_id = 1)

DECLARE @GroupTemp TABLE (
gorupId int
);

DECLARE @groupId int = null;

DECLARE @entityName nvarchar(256) = N'Pages'
DECLARE @groupName nvarchar(256) = N'ecommerce.admin.pages'
DECLARE @findParentMenu bit = 1;
DECLARE @parentMenuName nvarchar(256) = N'مدیریت'
DECLARE @menuName nvarchar(256) = N'صفحات'
DECLARE @menuUrl nvarchar(512) = N'/admin/ecommerce/pages'

DECLARE @permissionSymbolShowMenu nvarchar(512) = @groupName + '.showmenu';
DECLARE @permissionSymbolGetAll nvarchar(512) = @groupName + '.getall';
DECLARE @permissionSymbolGetOne nvarchar(512) = @groupName + '.getone';
DECLARE @permissionSymbolCreate nvarchar(512) = @groupName + '.create';
DECLARE @permissionSymbolUpdate nvarchar(512) = @groupName + '.update';
DECLARE @permissionSymbolDelete nvarchar(512) = @groupName + '.delete';




-- permission groups
INSERT INTO PermissionGroups(permissionGroupName, [visibility], createdAt, updatedAt)
OUTPUT inserted.id INTO @GroupTemp(gorupId)
SELECT @groupName, 1, GETDATE(), GETDATE();

SELECT @groupId = gorupId FROM @GroupTemp


-- permissions


DECLARE @PermissionTemp TABLE (
permissionId int
);

INSERT INTO Permissions(permissionName ,permissionSymbol,permissionGroupId, createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'GETALL_' + @entityName, @permissionSymbolGetAll, @groupId, GETDATE(), GETDATE()

INSERT INTO Permissions(permissionName ,permissionSymbol,permissionGroupId, createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'GETONE_' + @entityName, @permissionSymbolGetOne, @groupId, GETDATE(), GETDATE()

INSERT INTO Permissions(permissionName ,permissionSymbol,permissionGroupId, createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'CREATE_' + @entityName, @permissionSymbolCreate, @groupId, GETDATE(), GETDATE()

INSERT INTO Permissions(permissionName ,permissionSymbol,permissionGroupId, createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'UPDATE_' + @entityName, @permissionSymbolUpdate, @groupId, GETDATE(), GETDATE()

INSERT INTO Permissions(permissionName ,permissionSymbol,permissionGroupId, createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'DELETE_' + @entityName, @permissionSymbolDelete, @groupId, GETDATE(), GETDATE()


-- CRUD THIS Enity FOR super-admin
INSERT INTO RolePermissions(roleId, permissionId, createdAt, updatedAt)
SELECT @roleId, permissionId, GETDATE(), GETDATE()
FROM @PermissionTemp

DELETE FROM @PermissionTemp

INSERT INTO Permissions(permissionName ,permissionSymbol, permissionGroupId,createdAt, updatedAt)
OUTPUT inserted.id INTO @PermissionTemp(permissionId)
SELECT 'SHOWMENU_' + @entityName, @permissionSymbolShowMenu, @groupId,GETDATE(), GETDATE()

INSERT INTO RolePermissions(roleId, permissionId, createdAt, updatedAt)
SELECT @roleId, permissionId, GETDATE(), GETDATE()
FROM @PermissionTemp

DECLARE @permissionId int = null
SELECT @permissionId = permissionId FROM @PermissionTemp




DECLARE @parentMenuId int = null



IF @findParentMenu = 0
BEGIN
-- INSERT ParentMenu
DECLARE @ParentMenuTemp TABLE (
menuId int
);

INSERT INTO Menus(title, url, className, visibility, createdAt, updatedAt)
OUTPUT inserted.id INTO @ParentMenuTemp(menuId)
SELECT @parentMenuName, null, null, null, GETDATE(), GETDATE()

SELECT @parentMenuId = menuId FROM @ParentMenuTemp

END
ELSE
BEGIN
SELECT @parentMenuId = id
FROM Menus
WHERE title = @parentMenuName
END

IF @parentMenuId IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM PermissionMenus WHERE permissionId = @permissionId AND menuId = @parentMenuId)
BEGIN
INSERT INTO PermissionMenus(permissionId, menuId, createdAt, updatedAt)
SELECT @permissionId, @parentMenuId, getdate(), getdate()

END

DECLARE @MenuTemp TABLE (
menuId int
);
DECLARE @menuId int = null

INSERT INTO Menus(title, url, parentMenuId, className, visibility, createdAt, updatedAt)
OUTPUT inserted.id INTO @MenuTemp(menuId)
SELECT @menuName, @menuUrl, @parentMenuId,null, null, GETDATE(), GETDATE()

SELECT @menuId = menuId FROM @MenuTemp

INSERT INTO PermissionMenus(permissionId, menuId, createdAt, updatedAt)
SELECT @permissionId, @menuId, getdate(), getdate()

INSERT INTO Migrations(version, createdAt, updatedAt)
SELECT 'CORE-Permissions-Data-v61', GETDATE(), GETDATE()
END

GO

-- period types
IF NOT EXISTS (SELECT 1 FROM Migrations WHERE version = 'PCMPeriodTypes-Data-v1'
)
Expand Down

0 comments on commit 5985a2a

Please sign in to comment.