Compare commits
15 Commits
amalia/04-
...
amalia/25-
| Author | SHA1 | Date | |
|---|---|---|---|
| 64fbc486f0 | |||
| 02c9decbd8 | |||
| c13340d254 | |||
| 757595e6af | |||
| 5b3b39c19d | |||
| 6b14427a2e | |||
| 4d73e4c875 | |||
| 519adeb376 | |||
| 0ed01d287f | |||
| e62909b070 | |||
| 30611802f4 | |||
| 854921935a | |||
| 191e567e12 | |||
| 474ced6a38 | |||
| 2b746b77e6 |
@@ -3,6 +3,12 @@ const nextConfig = {
|
||||
devIndicators: {
|
||||
buildActivityPosition: 'bottom-right',
|
||||
},
|
||||
typescript: {
|
||||
ignoreBuildErrors: true, // ini yang fix TypeScript error
|
||||
},
|
||||
eslint: {
|
||||
ignoreDuringBuilds: true,
|
||||
},
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
|
||||
@@ -658,3 +658,12 @@ model DiscussionFile {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model Setting{
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
value String
|
||||
isActive Boolean @default(true)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
117
prisma/seed.ts
117
prisma/seed.ts
@@ -1,10 +1,10 @@
|
||||
import { seederAdmin, seederAdminRole, seederDesa, seederDiscussion, seederDiscussionMember, seederGroup, seederPosition, seederProject, seederProjectMember, seederProjectTask, seederTheme, seederUser, seederUserRole } from '@/module/seeder';
|
||||
import { seederAdmin, seederAdminRole, seederAnnouncement, seederAnnouncementMember, seederDesa, seederDiscussion, seederDiscussionMember, seederDivision, seederDivisionMember, seederGroup, seederPosition, seederProject, seederProjectMember, seederProjectTask, seederSetting, seederTheme, seederUser, seederUserRole } from '@/module/seeder';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
const prisma = new PrismaClient()
|
||||
|
||||
// DATA YG DI SEEDER MERUPAKAN DATA REAL(DARMASABA) & DATA DUMMY (MANDALA)
|
||||
// DATA JSON GABUNGAN (REAL & DUMMY) ADALAH adminRole, admin, theme, desa, group, position, user, userRole, user
|
||||
// Selain table yg disebutkan merupakan data dummy
|
||||
// DATA JSON GABUNGAN (REAL & DUMMY) ADALAH adminRole, admin, theme, desa, group, position, user, userRole, user, dan setting
|
||||
// Selain table yg disebutkan, data lainnya merupakan data dummy
|
||||
|
||||
async function main() {
|
||||
// ADMIN ROLE
|
||||
@@ -148,7 +148,7 @@ async function main() {
|
||||
})
|
||||
}
|
||||
|
||||
// USER
|
||||
// USER
|
||||
for (let data of seederUser) {
|
||||
await prisma.user.upsert({
|
||||
where: {
|
||||
@@ -159,10 +159,10 @@ async function main() {
|
||||
idGroup: data.idGroup,
|
||||
idPosition: data.idPosition,
|
||||
idUserRole: data.idUserRole,
|
||||
nik: data.nik,
|
||||
// nik: data.nik,
|
||||
name: data.name,
|
||||
// phone: data.phone,
|
||||
email: data.email,
|
||||
// email: data.email,
|
||||
gender: data.gender
|
||||
},
|
||||
create: {
|
||||
@@ -297,6 +297,111 @@ async function main() {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// DIVISION
|
||||
for (let data of seederDivision) {
|
||||
await prisma.division.upsert({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
update: {
|
||||
name: data.name,
|
||||
desc: data.desc,
|
||||
createdBy: data.createdBy
|
||||
},
|
||||
create: {
|
||||
id: data.id,
|
||||
idVillage: data.idVillage,
|
||||
idGroup: data.idGroup,
|
||||
name: data.name,
|
||||
desc: data.desc,
|
||||
createdBy: data.createdBy,
|
||||
isActive: true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// DIVISION MEMBER
|
||||
for (let data of seederDivisionMember) {
|
||||
await prisma.divisionMember.upsert({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
update: {
|
||||
idUser: data.idUser,
|
||||
isAdmin: data.isAdmin,
|
||||
isLeader: data.isLeader
|
||||
},
|
||||
create: {
|
||||
id: data.id,
|
||||
idDivision: data.idDivision,
|
||||
idUser: data.idUser,
|
||||
isAdmin: data.isAdmin,
|
||||
isLeader: data.isLeader,
|
||||
isActive: true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// ANNOUNCEMENT
|
||||
for (let data of seederAnnouncement) {
|
||||
await prisma.announcement.upsert({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
update: {
|
||||
title: data.title,
|
||||
desc: data.desc,
|
||||
createdBy: data.createdBy
|
||||
},
|
||||
create: {
|
||||
id: data.id,
|
||||
idVillage: data.idVillage,
|
||||
title: data.title,
|
||||
desc: data.desc,
|
||||
createdBy: data.createdBy,
|
||||
isActive: true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// ANNOUNCEMENT MEMBER
|
||||
for (let data of seederAnnouncementMember) {
|
||||
await prisma.announcementMember.upsert({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
update: {
|
||||
idAnnouncement: data.idAnnouncement,
|
||||
idGroup: data.idGroup,
|
||||
idDivision: data.idDivision
|
||||
},
|
||||
create: {
|
||||
id: data.id,
|
||||
idAnnouncement: data.idAnnouncement,
|
||||
idGroup: data.idGroup,
|
||||
idDivision: data.idDivision,
|
||||
isActive: true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// SETTING
|
||||
for (let data of seederSetting) {
|
||||
await prisma.setting.upsert({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
update: {
|
||||
name: data.name,
|
||||
},
|
||||
create: {
|
||||
id: data.id,
|
||||
name: data.name,
|
||||
value: data.value
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
main().then(async () => {
|
||||
|
||||
@@ -167,12 +167,19 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
// EDIT PENGUMUMAN
|
||||
export async function PUT(request: Request, context: { params: { id: string } }) {
|
||||
try {
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
const contentType = request.headers.get("content-type");
|
||||
let title, desc, groups, user, oldFile: any[] = [], cekFile, body: FormData | undefined
|
||||
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ title, desc, groups, user, oldFile } = JSON.parse(dataBody as string))
|
||||
} else {
|
||||
({ title, desc, groups, user } = await request.json());
|
||||
}
|
||||
|
||||
|
||||
// const { title, desc, groups, user } = (await request.json());
|
||||
const { title, desc, groups, user, oldFile } = JSON.parse(dataBody as string)
|
||||
const { id } = context.params;
|
||||
const userMobile = await funGetUserById({ id: String(user) })
|
||||
|
||||
@@ -245,7 +252,7 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
}
|
||||
}
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
|
||||
@@ -113,12 +113,19 @@ export async function GET(request: Request) {
|
||||
// CREATE PENGUMUMAN
|
||||
export async function POST(request: Request) {
|
||||
try {
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
const contentType = request.headers.get("content-type");
|
||||
|
||||
let title, desc, groups, user, cekFile, body: FormData | undefined
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ title, desc, groups, user } = JSON.parse(dataBody as string))
|
||||
} else {
|
||||
({ title, desc, groups, user } = await request.json());
|
||||
}
|
||||
|
||||
|
||||
// const { title, desc, groups, user } = (await request.json());
|
||||
const { title, desc, groups, user } = JSON.parse(dataBody as string)
|
||||
const userMobile = await funGetUserById({ id: String(user) })
|
||||
|
||||
if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") {
|
||||
@@ -144,7 +151,6 @@ export async function POST(request: Request) {
|
||||
let memberDivision = []
|
||||
|
||||
for (var i = 0, l = groups.length; i < l; i++) {
|
||||
2
|
||||
var obj = groups[i].Division;
|
||||
for (let index = 0; index < obj.length; index++) {
|
||||
const element = obj[index];
|
||||
@@ -158,7 +164,7 @@ export async function POST(request: Request) {
|
||||
}
|
||||
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
@@ -247,7 +253,7 @@ export async function POST(request: Request) {
|
||||
where: {
|
||||
isActive: true,
|
||||
idUserRole: "supadmin",
|
||||
idVillage: user.idVillage
|
||||
idVillage: String(villaId)
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
|
||||
@@ -242,10 +242,10 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
// create log user
|
||||
if (active) {
|
||||
const log = await createLogUserMobile({ act: 'DELETE', desc: 'User mengaktifkan data diskusi umum', table: 'disscussion', data: id, user: userMobile.id })
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengaktifkan diskusi umum", user: user.id }, { status: 200 });
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengaktifkan diskusi umum" }, { status: 200 });
|
||||
} else {
|
||||
const log = await createLogUserMobile({ act: 'DELETE', desc: 'User mengarsipkan data diskusi umum', table: 'disscussion', data: id, user: userMobile.id })
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengarsipkan diskusi umum", user: user.id }, { status: 200 });
|
||||
return NextResponse.json({ success: true, message: "Berhasil mengarsipkan diskusi umum" }, { status: 200 });
|
||||
}
|
||||
|
||||
|
||||
@@ -260,12 +260,19 @@ export async function DELETE(request: Request, context: { params: { id: string }
|
||||
export async function PUT(request: Request, context: { params: { id: string } }) {
|
||||
try {
|
||||
const { id } = context.params
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
const contentType = request.headers.get("content-type");
|
||||
|
||||
let title, desc, user, oldFile: any[] = [], cekFile, body: FormData | undefined
|
||||
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ title, desc, user, oldFile } = JSON.parse(dataBody as string))
|
||||
} else {
|
||||
({ title, desc, user } = await request.json());
|
||||
}
|
||||
|
||||
// const { title, desc, user } = (await request.json());
|
||||
const { title, desc, user, oldFile } = JSON.parse(dataBody as string)
|
||||
|
||||
const userMobile = await funGetUserById({ id: String(user) })
|
||||
|
||||
@@ -306,7 +313,7 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
}
|
||||
}
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
|
||||
@@ -109,16 +109,20 @@ export async function GET(request: Request) {
|
||||
|
||||
|
||||
|
||||
// CREATE DISCUSSION GENERALE
|
||||
// CREATE DISCUSSION GENERAL
|
||||
export async function POST(request: Request) {
|
||||
try {
|
||||
const contentType = request.headers.get("content-type");
|
||||
let idGroup, user, title, desc, member, cekFile, body: FormData | undefined
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ idGroup, user, title, desc, member } = JSON.parse(dataBody as string))
|
||||
} else {
|
||||
({ idGroup, user, title, desc, member } = await request.json());
|
||||
}
|
||||
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
|
||||
// const { idGroup, user, title, desc, member } = await request.json();
|
||||
const { idGroup, user, title, desc, member } = JSON.parse(dataBody as string)
|
||||
|
||||
const userMobile = await funGetUserById({ id: user })
|
||||
|
||||
@@ -153,7 +157,7 @@ export async function POST(request: Request) {
|
||||
})
|
||||
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
@@ -213,7 +217,7 @@ export async function POST(request: Request) {
|
||||
where: {
|
||||
isActive: true,
|
||||
idUserRole: "supadmin",
|
||||
idVillage: user.idVillage
|
||||
idVillage: String(userMobile.idVillage)
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
|
||||
@@ -227,12 +227,18 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
export async function POST(request: Request, context: { params: { id: string } }) {
|
||||
try {
|
||||
const { id } = context.params
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
const contentType = request.headers.get("content-type");
|
||||
|
||||
// const { title, desc, user } = (await request.json())
|
||||
const { title, desc, user, oldFile } = JSON.parse(dataBody as string)
|
||||
let title, desc, user, oldFile: any[] = [], cekFile, body: FormData | undefined
|
||||
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ title, desc, user, oldFile } = JSON.parse(dataBody as string))
|
||||
} else {
|
||||
({ title, desc, user } = await request.json());
|
||||
}
|
||||
|
||||
|
||||
const userMobile = await funGetUserById({ id: String(user) })
|
||||
@@ -273,7 +279,7 @@ export async function POST(request: Request, context: { params: { id: string } }
|
||||
}
|
||||
}
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
|
||||
@@ -102,12 +102,17 @@ export async function GET(request: Request) {
|
||||
// CREATE DISCUSSION
|
||||
export async function POST(request: Request) {
|
||||
try {
|
||||
const body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
const cekFile = body.has("file0")
|
||||
const contentType = request.headers.get("content-type");
|
||||
|
||||
// const { idDivision, desc, user } = (await request.json());
|
||||
const { idDivision, desc, user } = JSON.parse(String(dataBody));
|
||||
let idDivision, desc, user, cekFile, body: FormData | undefined
|
||||
if (contentType?.includes("multipart/form-data")) {
|
||||
body = await request.formData()
|
||||
const dataBody = body.get("data")
|
||||
cekFile = body.has("file0");
|
||||
({ idDivision, desc, user } = JSON.parse(String(dataBody)));
|
||||
} else {
|
||||
({ idDivision, desc, user } = await request.json());
|
||||
}
|
||||
|
||||
|
||||
const userMobile = await funGetUserById({ id: String(user) })
|
||||
@@ -143,7 +148,7 @@ export async function POST(request: Request) {
|
||||
});
|
||||
|
||||
|
||||
if (cekFile) {
|
||||
if (cekFile && body) {
|
||||
body.delete("data")
|
||||
for (var pair of body.entries()) {
|
||||
if (String(pair[0]).substring(0, 4) == "file") {
|
||||
|
||||
@@ -217,7 +217,7 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
@@ -133,7 +133,7 @@ export async function PUT(request: Request) {
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
@@ -210,7 +210,7 @@ export async function POST(request: Request) {
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
27
src/app/api/mobile/version/route.ts
Normal file
27
src/app/api/mobile/version/route.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
const data = await prisma.setting.findMany({
|
||||
where: {
|
||||
isActive: true,
|
||||
id: {
|
||||
contains: "mobile_"
|
||||
}
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
value: true
|
||||
}
|
||||
})
|
||||
|
||||
console.log('data', data)
|
||||
|
||||
return NextResponse.json({ success: true, data }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, reason: (error as Error).message, }, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -215,7 +215,7 @@ export async function PUT(request: Request, context: { params: { id: string } })
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
@@ -133,7 +133,7 @@ export async function PUT(request: Request) {
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
@@ -207,7 +207,7 @@ export async function POST(request: Request) {
|
||||
const resize = await sharp(imageBuffer).resize(300).toBuffer();
|
||||
|
||||
// Convert buffer ke Blob
|
||||
const blob = new Blob([resize], { type: file.type });
|
||||
const blob = new Blob([resize as any], { type: file.type });
|
||||
|
||||
// Convert Blob ke File
|
||||
const resizedFile = new File([blob], fileName, {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
return NextResponse.json({ success: true, version: "2.1.0", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 });
|
||||
return NextResponse.json({ success: true, version: "2.1.2", tahap: "beta", update: "-revisi api mobile pengumuman, diskusi umum dan diskusi divisi; -ditambah kan file " }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"gender": "F"
|
||||
},
|
||||
{
|
||||
"id": "devMalik",
|
||||
"id": "devLukman",
|
||||
"idAdminRole": "dev",
|
||||
"name": "Malik",
|
||||
"phone": "6289697338821",
|
||||
|
||||
16
src/module/seeder/data/announcement.json
Normal file
16
src/module/seeder/data/announcement.json
Normal file
@@ -0,0 +1,16 @@
|
||||
[
|
||||
{
|
||||
"id": "ann_pembangunan_jalan",
|
||||
"idVillage": "desaDummy",
|
||||
"title": "Pembangunan Jalan Desa Tahap 2",
|
||||
"desc": "Pada bulan ini akan dilakukan pembangunan jalan desa tahap 2 yang mencakup wilayah RT 01 dan RT 02. Mohon kerjasama warga untuk menyesuaikan aktivitas selama masa pembangunan.",
|
||||
"createdBy": "user_kades"
|
||||
},
|
||||
{
|
||||
"id": "ann_rapat_warga",
|
||||
"idVillage": "desaDummy",
|
||||
"title": "Rapat Bulanan",
|
||||
"desc": "Rapat bulanan akan diselenggarakan pada hari Sabtu, 25 Februari 2026 pukul 09.00 WIB di Balai Desa. Hadirilah tepat waktu.",
|
||||
"createdBy": "user_kades"
|
||||
}
|
||||
]
|
||||
20
src/module/seeder/data/announcement_member.json
Normal file
20
src/module/seeder/data/announcement_member.json
Normal file
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"id": "ann_mem_pembangunan_jalan_rt01",
|
||||
"idAnnouncement": "ann_pembangunan_jalan",
|
||||
"idGroup": "group_rt01",
|
||||
"idDivision": "div_pelayanan"
|
||||
},
|
||||
{
|
||||
"id": "ann_mem_pembangunan_jalan_rt02",
|
||||
"idAnnouncement": "ann_pembangunan_jalan",
|
||||
"idGroup": "group_rt01",
|
||||
"idDivision": "div_umum"
|
||||
},
|
||||
{
|
||||
"id": "ann_mem_rapat_warga_all",
|
||||
"idAnnouncement": "ann_rapat_warga",
|
||||
"idGroup": "group_rt01",
|
||||
"idDivision": "div_umum"
|
||||
}
|
||||
]
|
||||
18
src/module/seeder/data/division.json
Normal file
18
src/module/seeder/data/division.json
Normal file
@@ -0,0 +1,18 @@
|
||||
[
|
||||
{
|
||||
"id": "div_pelayanan",
|
||||
"idVillage": "desaDummy",
|
||||
"idGroup": "group_rt01",
|
||||
"name": "Seksi Pelayanan",
|
||||
"desc": "Bertanggung jawab atas pelayanan administrasi umum, perizinan, dan kebutuhan dokumen masyarakat desa.",
|
||||
"createdBy": "user_kades"
|
||||
},
|
||||
{
|
||||
"id": "div_umum",
|
||||
"idVillage": "desaDummy",
|
||||
"idGroup": "group_rt01",
|
||||
"name": "Urusan Tata Usaha dan Umum",
|
||||
"desc": "Menangani administrasi perkantoran, arsip desa, inventaris aset, dan operasional kantor desa.",
|
||||
"createdBy": "user_kades"
|
||||
}
|
||||
]
|
||||
30
src/module/seeder/data/division_member.json
Normal file
30
src/module/seeder/data/division_member.json
Normal file
@@ -0,0 +1,30 @@
|
||||
[
|
||||
{
|
||||
"id": "div_mem_linmas_warga1",
|
||||
"idDivision": "div_pelayanan",
|
||||
"idUser": "user_warga1",
|
||||
"isAdmin": false,
|
||||
"isLeader": false
|
||||
},
|
||||
{
|
||||
"id": "div_mem_linmas_warga2",
|
||||
"idDivision": "div_pelayanan",
|
||||
"idUser": "user_warga2",
|
||||
"isAdmin": false,
|
||||
"isLeader": false
|
||||
},
|
||||
{
|
||||
"id": "div_mem_umum_warga3",
|
||||
"idDivision": "div_umum",
|
||||
"idUser": "user_warga3",
|
||||
"isAdmin": false,
|
||||
"isLeader": false
|
||||
},
|
||||
{
|
||||
"id": "div_mem_umum_warga4",
|
||||
"idDivision": "div_umum",
|
||||
"idUser": "user_warga4",
|
||||
"isAdmin": false,
|
||||
"isLeader": false
|
||||
}
|
||||
]
|
||||
22
src/module/seeder/data/setting.json
Normal file
22
src/module/seeder/data/setting.json
Normal file
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"id": "mobile_latest_version",
|
||||
"name": "latest version",
|
||||
"value": "2.0.5"
|
||||
},
|
||||
{
|
||||
"id": "mobile_minimum_version",
|
||||
"name": "minimum version",
|
||||
"value": "2.0.5"
|
||||
},
|
||||
{
|
||||
"id": "mobile_maintenance",
|
||||
"name": "maintenance",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"id": "mobile_message_update",
|
||||
"name": "message update",
|
||||
"value": "Kami telah meningkatkan performa aplikasi"
|
||||
}
|
||||
]
|
||||
@@ -18,10 +18,10 @@
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_ketua_rt01",
|
||||
"nik": "3201010101010001",
|
||||
"name": "Kepala Desa",
|
||||
"name": "Juli Ningrum",
|
||||
"phone": "081234567890",
|
||||
"email": "kades@desamandiri.test",
|
||||
"gender": "M"
|
||||
"email": "juliningrum@gmail.com",
|
||||
"gender": "F"
|
||||
},
|
||||
{
|
||||
"id": "user_sekdes",
|
||||
@@ -30,10 +30,10 @@
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_sekretaris_rt01",
|
||||
"nik": "3201010101010002",
|
||||
"name": "Sekretaris Desa",
|
||||
"name": "Salwa Kusmawati",
|
||||
"phone": "081234567891",
|
||||
"email": "sekdes@desamandiri.test",
|
||||
"gender": "M"
|
||||
"email": "salwakusmawati@gmail.com",
|
||||
"gender": "F"
|
||||
},
|
||||
{
|
||||
"id": "user_warga1",
|
||||
@@ -42,10 +42,10 @@
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_staff_rt01",
|
||||
"nik": "3201010101010005",
|
||||
"name": "Warga Satu",
|
||||
"name": "Bakidin Wibowo",
|
||||
"phone": "081234567894",
|
||||
"email": "wargasatu@desamandiri.test",
|
||||
"gender": "F"
|
||||
"email": "bakidinwibowo@gmail.com",
|
||||
"gender": "M"
|
||||
},
|
||||
{
|
||||
"id": "user_warga2",
|
||||
@@ -54,9 +54,33 @@
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_staff_rt01",
|
||||
"nik": "3201010101010006",
|
||||
"name": "Warga Dua",
|
||||
"name": "Jais Kurniawan",
|
||||
"phone": "081234567895",
|
||||
"email": "wargadua@desamandiri.test",
|
||||
"email": "jaiskurniawan@gmail.com",
|
||||
"gender": "M"
|
||||
},
|
||||
{
|
||||
"id": "user_warga3",
|
||||
"idUserRole": "user",
|
||||
"idVillage": "desaDummy",
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_staff_rt01",
|
||||
"nik": "3201010101010007",
|
||||
"name": "Safira Oktaviani S.I.Kom",
|
||||
"phone": "081234567896",
|
||||
"email": "safiraoktaviani@gmail.com",
|
||||
"gender": "F"
|
||||
},
|
||||
{
|
||||
"id": "user_warga4",
|
||||
"idUserRole": "user",
|
||||
"idVillage": "desaDummy",
|
||||
"idGroup": "group_rt01",
|
||||
"idPosition": "pos_staff_rt01",
|
||||
"nik": "3201010101010008",
|
||||
"name": "Agus Setiawan",
|
||||
"phone": "081234567897",
|
||||
"email": "agussetiawannn@gmail.com",
|
||||
"gender": "M"
|
||||
}
|
||||
]
|
||||
@@ -1,16 +1,21 @@
|
||||
import seederAdmin from "./data/admin.json";
|
||||
import seederAdminRole from "./data/admin_role.json";
|
||||
import seederAnnouncement from "./data/announcement.json";
|
||||
import seederAnnouncementMember from "./data/announcement_member.json";
|
||||
import seederDesa from "./data/desa.json";
|
||||
import seederDiscussion from "./data/discussion.json";
|
||||
import seederDiscussionMember from "./data/discussion_member.json";
|
||||
import seederDivision from "./data/division.json";
|
||||
import seederDivisionMember from "./data/division_member.json";
|
||||
import seederGroup from "./data/group.json";
|
||||
import seederPosition from "./data/position.json";
|
||||
import seederProject from "./data/project.json";
|
||||
import seederProjectMember from "./data/project_member.json";
|
||||
import seederProjectTask from "./data/project_task.json";
|
||||
import seederSetting from "./data/setting.json";
|
||||
import seederTheme from "./data/theme.json";
|
||||
import seederUser from "./data/user.json";
|
||||
import seederUserRole from "./data/user_role.json";
|
||||
|
||||
export { seederAdmin, seederAdminRole, seederDesa, seederDiscussion, seederDiscussionMember, seederGroup, seederPosition, seederProject, seederProjectMember, seederProjectTask, seederTheme, seederUser, seederUserRole };
|
||||
export { seederAdmin, seederAdminRole, seederAnnouncement, seederAnnouncementMember, seederDesa, seederDiscussion, seederDiscussionMember, seederDivision, seederDivisionMember, seederGroup, seederPosition, seederProject, seederProjectMember, seederProjectTask, seederSetting, seederTheme, seederUser, seederUserRole };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user