This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
// export const AUTH_THROTTLE = "AUTH_THROTTLE";
|
||||
export const AI_CONFIG = 'AI_CONFIG';
|
||||
export const MIKRO_ORM_QUERY_LOGGER = 'MIKRO_ORM_QUERY_LOGGER';
|
||||
export const NAJVA_CONFIG = 'NAJVA_CONFIG';
|
||||
export const AUTH_THROTTLE_TTL = 1 * 60 * 1000;
|
||||
export const AUTH_THROTTLE_LIMIT = 5;
|
||||
export const AUTH__REFRESH_THROTTLE_TTL = 10 * 60 * 1000;
|
||||
|
||||
@@ -9,6 +9,7 @@ import { CategoriesSeeder } from './categories.seeder';
|
||||
import { ProductsFieldsSeeder } from './product-fields.seeder';
|
||||
import { FieldOption } from 'src/modules/form-builder/entities/field-option.entity';
|
||||
import { FieldOptionSeeder } from './field-options.seeder';
|
||||
import { PrintFormSeeder } from './print-form.seeder';
|
||||
// import { AttributesSeeder } from './attribute.seeder';
|
||||
// import { AttributeValueSeeder } from './attribute-value.seeder';
|
||||
|
||||
@@ -16,7 +17,7 @@ import { FieldOptionSeeder } from './field-options.seeder';
|
||||
|
||||
export class DatabaseSeeder extends Seeder {
|
||||
async run(em: EntityManager) {
|
||||
const TOTAL_STEPS = 15;
|
||||
const TOTAL_STEPS = 16;
|
||||
console.info('[Seeder] Starting database seed');
|
||||
// 1. Create Permissions
|
||||
console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Creating permissions`);
|
||||
@@ -57,13 +58,19 @@ export class DatabaseSeeder extends Seeder {
|
||||
await fieldOptionsSeeder.run(em);
|
||||
console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Done`);
|
||||
|
||||
// 12. Create Admins
|
||||
console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Creating admins`);
|
||||
const adminsSeeder = new AdminsSeeder();
|
||||
await adminsSeeder.run(em, rolesMap);
|
||||
// 12. Create print form sections and fields
|
||||
console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Creating print form sections`);
|
||||
const printFormSeeder = new PrintFormSeeder();
|
||||
await printFormSeeder.run(em);
|
||||
console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Done`);
|
||||
|
||||
// 13. Create Users
|
||||
// 13. Create Admins
|
||||
console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Creating admins`);
|
||||
const adminsSeeder = new AdminsSeeder();
|
||||
await adminsSeeder.run(em, rolesMap);
|
||||
console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Done`);
|
||||
|
||||
// 14. Create Users
|
||||
// console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Creating users`);
|
||||
// const usersSeeder = new UsersSeeder();
|
||||
// await usersSeeder.run(em);
|
||||
|
||||
@@ -0,0 +1,356 @@
|
||||
import { FieldType } from 'src/modules/form-builder/interface/print';
|
||||
|
||||
export interface PrintFormFieldOptionData {
|
||||
value: string;
|
||||
order?: number;
|
||||
}
|
||||
|
||||
export interface PrintFormFieldData {
|
||||
name: string;
|
||||
type: FieldType;
|
||||
isRequired: boolean;
|
||||
multiple?: boolean;
|
||||
order: number;
|
||||
options?: PrintFormFieldOptionData[];
|
||||
}
|
||||
|
||||
export interface PrintFormSectionData {
|
||||
title: string;
|
||||
order: number;
|
||||
fields: PrintFormFieldData[];
|
||||
}
|
||||
|
||||
export const printFormSectionsData: PrintFormSectionData[] = [
|
||||
{
|
||||
title: 'بخش یک',
|
||||
order: 1,
|
||||
fields: [
|
||||
{
|
||||
name: 'نام پروژه',
|
||||
type: FieldType.text,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
},
|
||||
{
|
||||
name: 'نوع محصول',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: 'کتاب', order: 1 },
|
||||
{ value: 'مجله', order: 2 },
|
||||
{ value: 'کاتالوگ', order: 3 },
|
||||
{ value: 'بروشور', order: 4 },
|
||||
{ value: 'لوح فشرده', order: 5 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'تعداد صفحات',
|
||||
type: FieldType.number,
|
||||
isRequired: true,
|
||||
order: 3,
|
||||
},
|
||||
{
|
||||
name: 'تاریخ تحویل مورد انتظار',
|
||||
type: FieldType.date,
|
||||
isRequired: false,
|
||||
order: 4,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش دوم',
|
||||
order: 2,
|
||||
fields: [
|
||||
{
|
||||
name: 'گرماژ کاغذ',
|
||||
type: FieldType.radio,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: '70 گرم', order: 1 },
|
||||
{ value: '80 گرم', order: 2 },
|
||||
{ value: '100 گرم', order: 3 },
|
||||
{ value: '120 گرم', order: 4 },
|
||||
{ value: '135 گرم', order: 5 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'سایز کاغذ',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: 'A4', order: 1 },
|
||||
{ value: 'A5', order: 2 },
|
||||
{ value: 'B5', order: 3 },
|
||||
{ value: 'وزیری', order: 4 },
|
||||
{ value: 'رقعی', order: 5 },
|
||||
{ value: 'سلطانی', order: 6 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'نوع کاغذ',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 3,
|
||||
options: [
|
||||
{ value: 'تحریر', order: 1 },
|
||||
{ value: 'گلاسه', order: 2 },
|
||||
{ value: 'کرافت', order: 3 },
|
||||
{ value: 'انباره', order: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'رنگ کاغذ',
|
||||
type: FieldType.radio,
|
||||
isRequired: false,
|
||||
order: 4,
|
||||
options: [
|
||||
{ value: 'سفید', order: 1 },
|
||||
{ value: 'کرم', order: 2 },
|
||||
{ value: 'خاکستری', order: 3 },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش سوم',
|
||||
order: 3,
|
||||
fields: [
|
||||
{
|
||||
name: 'نوع جلد',
|
||||
type: FieldType.radio,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'شومیز', order: 1 },
|
||||
{ value: 'گالینگور', order: 2 },
|
||||
{ value: 'جلد سخت', order: 3 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'گرماژ جلد',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: '250 گرم', order: 1 },
|
||||
{ value: '300 گرم', order: 2 },
|
||||
{ value: '350 گرم', order: 3 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'نوع پوشش جلد',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 3,
|
||||
options: [
|
||||
{ value: 'مات', order: 1 },
|
||||
{ value: 'براق', order: 2 },
|
||||
{ value: 'سلفون', order: 3 },
|
||||
{ value: 'UV', order: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'رنگ جلد',
|
||||
type: FieldType.text,
|
||||
isRequired: false,
|
||||
order: 4,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش چهارم',
|
||||
order: 4,
|
||||
fields: [
|
||||
{
|
||||
name: 'نوع چاپ',
|
||||
type: FieldType.radio,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'افست', order: 1 },
|
||||
{ value: 'دیجیتال', order: 2 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'رنگ چاپ',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: 'تک رنگ', order: 1 },
|
||||
{ value: 'دو رنگ', order: 2 },
|
||||
{ value: 'CMYK تمام رنگ', order: 3 },
|
||||
{ value: 'Pantone', order: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'تیراژ',
|
||||
type: FieldType.number,
|
||||
isRequired: true,
|
||||
order: 3,
|
||||
},
|
||||
{
|
||||
name: 'سمت چاپ',
|
||||
type: FieldType.radio,
|
||||
isRequired: true,
|
||||
order: 4,
|
||||
options: [
|
||||
{ value: 'یک رو', order: 1 },
|
||||
{ value: 'دو رو', order: 2 },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش پنجم',
|
||||
order: 5,
|
||||
fields: [
|
||||
{
|
||||
name: 'نوع صحافی',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'چسبی', order: 1 },
|
||||
{ value: 'منگنه', order: 2 },
|
||||
{ value: 'سیمی', order: 3 },
|
||||
{ value: 'فنری', order: 4 },
|
||||
{ value: 'جلد سخت', order: 5 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'نوع برش',
|
||||
type: FieldType.radio,
|
||||
isRequired: false,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: 'گوشه تیز', order: 1 },
|
||||
{ value: 'گوشه گرد', order: 2 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'خط تا',
|
||||
type: FieldType.checkbox,
|
||||
isRequired: false,
|
||||
multiple: true,
|
||||
order: 3,
|
||||
options: [
|
||||
{ value: 'افقی', order: 1 },
|
||||
{ value: 'عمودی', order: 2 },
|
||||
{ value: 'زیگزاگ', order: 3 },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش ششم',
|
||||
order: 6,
|
||||
fields: [
|
||||
{
|
||||
name: 'نیاز به طراحی',
|
||||
type: FieldType.radio,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'بله', order: 1 },
|
||||
{ value: 'خیر', order: 2 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'فرمت فایل',
|
||||
type: FieldType.select,
|
||||
isRequired: false,
|
||||
order: 2,
|
||||
options: [
|
||||
{ value: 'PDF', order: 1 },
|
||||
{ value: 'InDesign', order: 2 },
|
||||
{ value: 'Word', order: 3 },
|
||||
{ value: 'Illustrator', order: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'ابعاد فایل نهایی',
|
||||
type: FieldType.text,
|
||||
isRequired: false,
|
||||
order: 3,
|
||||
},
|
||||
{
|
||||
name: 'توضیحات طراحی',
|
||||
type: FieldType.textarea,
|
||||
isRequired: false,
|
||||
order: 4,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش هفتم',
|
||||
order: 7,
|
||||
fields: [
|
||||
{
|
||||
name: 'نوع بستهبندی',
|
||||
type: FieldType.select,
|
||||
isRequired: true,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'کارتن', order: 1 },
|
||||
{ value: 'نایلون', order: 2 },
|
||||
{ value: 'پالت', order: 3 },
|
||||
{ value: 'بستهبندی اختصاصی', order: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'تعداد در هر بسته',
|
||||
type: FieldType.number,
|
||||
isRequired: false,
|
||||
order: 2,
|
||||
},
|
||||
{
|
||||
name: 'برچسب اختصاصی',
|
||||
type: FieldType.radio,
|
||||
isRequired: false,
|
||||
order: 3,
|
||||
options: [
|
||||
{ value: 'بله', order: 1 },
|
||||
{ value: 'خیر', order: 2 },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'بخش هشتم',
|
||||
order: 8,
|
||||
fields: [
|
||||
{
|
||||
name: 'درخواست نمونه',
|
||||
type: FieldType.radio,
|
||||
isRequired: false,
|
||||
order: 1,
|
||||
options: [
|
||||
{ value: 'بله', order: 1 },
|
||||
{ value: 'خیر', order: 2 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'آدرس تحویل',
|
||||
type: FieldType.textarea,
|
||||
isRequired: false,
|
||||
order: 2,
|
||||
},
|
||||
{
|
||||
name: 'توضیحات تکمیلی',
|
||||
type: FieldType.textarea,
|
||||
isRequired: false,
|
||||
order: 3,
|
||||
},
|
||||
{
|
||||
name: 'شماره تماس هماهنگی',
|
||||
type: FieldType.text,
|
||||
isRequired: false,
|
||||
order: 4,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,47 @@
|
||||
import type { EntityManager } from '@mikro-orm/core';
|
||||
import { PrintForm } from '../modules/print-form/entities/print-form.entity';
|
||||
import { Field } from 'src/modules/form-builder/entities/field.entity';
|
||||
import { FieldOption } from 'src/modules/form-builder/entities/field-option.entity';
|
||||
import { EntityType } from 'src/modules/form-builder/interface/print';
|
||||
import { printFormSectionsData } from './data/print-form.data';
|
||||
|
||||
export class PrintFormSeeder {
|
||||
async run(em: EntityManager): Promise<void> {
|
||||
for (const sectionData of printFormSectionsData) {
|
||||
const section = em.create(PrintForm, {
|
||||
title: sectionData.title,
|
||||
order: sectionData.order,
|
||||
});
|
||||
|
||||
em.persist(section);
|
||||
|
||||
for (const fieldData of sectionData.fields) {
|
||||
const field = em.create(Field, {
|
||||
name: fieldData.name,
|
||||
type: fieldData.type,
|
||||
isRequired: fieldData.isRequired,
|
||||
order: fieldData.order,
|
||||
multiple: fieldData.multiple ?? false,
|
||||
entityType: EntityType.printForm,
|
||||
entityId: section.id,
|
||||
});
|
||||
|
||||
em.persist(field);
|
||||
|
||||
if (fieldData.options?.length) {
|
||||
for (const optionData of fieldData.options) {
|
||||
const option = em.create(FieldOption, {
|
||||
value: optionData.value,
|
||||
order: optionData.order,
|
||||
field,
|
||||
});
|
||||
|
||||
em.persist(option);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await em.flush();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user