File tree Expand file tree Collapse file tree 3 files changed +77
-4
lines changed
Expand file tree Collapse file tree 3 files changed +77
-4
lines changed Original file line number Diff line number Diff line change @@ -39,11 +39,11 @@ module.exports = {
3939 schema : {
4040 type : 'object' ,
4141 properties : {
42- nama : {
42+ name : {
4343 type : 'string' ,
4444 } ,
4545 } ,
46- required : [ 'nama ' ] ,
46+ required : [ 'name ' ] ,
4747 } ,
4848 } ,
4949 } ,
@@ -55,6 +55,32 @@ module.exports = {
5555 } ,
5656 } ,
5757 } ,
58+ '/role/generate-excel' : {
59+ get : {
60+ tags : [ 'Role' ] ,
61+ summary : 'Get All Role with Generate Excel' ,
62+ produces : [ 'application/json' ] ,
63+ parameters : [
64+ {
65+ $ref : '#/components/parameters/page' ,
66+ } ,
67+ {
68+ $ref : '#/components/parameters/pageSize' ,
69+ } ,
70+ {
71+ $ref : '#/components/parameters/filtered' ,
72+ } ,
73+ {
74+ $ref : '#/components/parameters/sorted' ,
75+ } ,
76+ ] ,
77+ responses : {
78+ 200 : {
79+ description : 'Get All Role with Generate Excel' ,
80+ } ,
81+ } ,
82+ } ,
83+ } ,
5884 '/role/multiple/delete' : {
5985 post : {
6086 tags : [ 'Role' ] ,
@@ -169,11 +195,11 @@ module.exports = {
169195 schema : {
170196 type : 'object' ,
171197 properties : {
172- nama : {
198+ name : {
173199 type : 'string' ,
174200 } ,
175201 } ,
176- required : [ 'nama ' ] ,
202+ required : [ 'name ' ] ,
177203 } ,
178204 } ,
179205 } ,
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import Authorization from 'middlewares/Authorization'
55import BuildResponse from 'modules/Response/BuildResponse'
66import RoleService from 'controllers/Role/service'
77import { arrayFormatter } from 'helpers/Common'
8+ import { formatDateGenerateFile } from 'helpers/Date'
89
910routes . get (
1011 '/role' ,
@@ -16,6 +17,25 @@ routes.get(
1617 } )
1718)
1819
20+ routes . get (
21+ '/role/generate-excel' ,
22+ Authorization ,
23+ asyncHandler ( async function generateExcelEvent ( req : Request , res : Response ) {
24+ const streamExcel = await RoleService . generateExcel ( req )
25+ const dateNow = formatDateGenerateFile ( new Date ( ) )
26+ const filename = `${ dateNow } _generate_role.xlsx`
27+
28+ res . setHeader (
29+ 'Content-Type' ,
30+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
31+ )
32+ res . setHeader ( 'Content-Disposition' , `attachment; filename=${ filename } ` )
33+ res . setHeader ( 'Content-Length' , streamExcel . length )
34+
35+ return res . send ( streamExcel )
36+ } )
37+ )
38+
1939routes . get (
2040 '/role/:id' ,
2141 asyncHandler ( async function getOne ( req : Request , res : Response ) {
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import useValidation from 'helpers/useValidation'
66import { RoleAttributes } from 'models/role'
77import PluginSqlizeQuery from 'modules/SqlizeQuery/PluginSqlizeQuery'
88import schema from 'controllers/Role/schema'
9+ import ExcelHelper from 'helpers/Excel'
910
1011const { Sequelize } = db
1112const { Op } = Sequelize
@@ -81,6 +82,32 @@ class RoleService {
8182 return data
8283 }
8384
85+ /**
86+ *
87+ * @param req - Request
88+ */
89+ public static async generateExcel ( req : Request ) {
90+ const { data } = await this . getAll ( req )
91+ const roleData = JSON . parse ( JSON . stringify ( data ) )
92+
93+ const header = [
94+ { header : 'No' , key : 'no' , width : 5 } ,
95+ { header : 'Name' , key : 'name' , width : 20 } ,
96+ ]
97+
98+ const newData = [ ]
99+ for ( let i = 0 ; i < roleData . length ; i += 1 ) {
100+ const item = roleData [ i ]
101+ newData . push ( {
102+ ...item ,
103+ } )
104+ }
105+
106+ const stream : Buffer = await ExcelHelper . generate ( header , newData )
107+
108+ return stream
109+ }
110+
84111 /**
85112 *
86113 * @param id - Delete Forever
You can’t perform that action at this time.
0 commit comments