rapida-partner 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/rapidaObject.json +1 -1
- package/src/enums/form-contract.enum.ts +1 -0
- package/src/examples/components/forms/character.form.ts +7 -7
- package/src/examples/components/forms/company.form.ts +40 -40
- package/src/examples/components/forms/customer.form.ts +120 -0
- package/src/examples/components/forms/movie.form.ts +11 -11
- package/src/examples/components/forms/movieEpisode.form.ts +7 -7
- package/src/examples/components/forms/movieGenre.form.ts +3 -3
- package/src/examples/components/forms/person.form.ts +41 -41
- package/src/examples/components/lists/customer.list.ts +50 -0
- package/src/examples/modules/customer.ts +13 -0
- package/src/examples/projects/movieBackoffice.ts +2 -0
- package/src/interfaces/{form-condition.interface.ts → condition.interface.ts} +1 -1
- package/src/interfaces/form-array.interface.ts +1 -1
- package/src/interfaces/form-autocomplete.interface.ts +1 -1
- package/src/interfaces/form-button.interface.ts +1 -1
- package/src/interfaces/form-datepicker.interface.ts +1 -1
- package/src/interfaces/form-fieldset.interface.ts +1 -1
- package/src/interfaces/form-file.interface.ts +1 -1
- package/src/interfaces/form-inheritance.interface.ts +1 -1
- package/src/interfaces/form-input.interface.ts +1 -1
- package/src/interfaces/form-numeric.interface.ts +1 -1
- package/src/interfaces/form-pattern.interface.ts +1 -1
- package/src/interfaces/form-radiogroup.interface.ts +1 -1
- package/src/interfaces/form-select.interface.ts +1 -1
- package/src/interfaces/form-switch.interface.ts +1 -1
- package/src/interfaces/form-tab.interface.ts +1 -1
- package/src/interfaces/form.interface.ts +23 -15
- package/src/interfaces/list.interface.ts +2 -0
- package/src/schemas/{form-condition.ref.json → condition.ref.json} +2 -2
- package/src/schemas/form-array.ref.json +1 -1
- package/src/schemas/form-autocomplete.ref.json +3 -3
- package/src/schemas/form-button.ref.json +1 -1
- package/src/schemas/form-common-api-request.ref.json +1 -1
- package/src/schemas/form-common-filters-from-other-form-fields.ref.json +1 -1
- package/src/schemas/form-datepicker.ref.json +1 -1
- package/src/schemas/form-fieldset.ref.json +1 -1
- package/src/schemas/form-file.ref.json +1 -1
- package/src/schemas/form-inheritance.ref.json +1 -1
- package/src/schemas/form-input.ref.json +1 -1
- package/src/schemas/form-numeric.ref.json +1 -1
- package/src/schemas/form-one-of.ref.json +3 -2
- package/src/schemas/form-pattern.ref.json +1 -1
- package/src/schemas/form-radiogroup.ref.json +1 -1
- package/src/schemas/form-select.ref.json +1 -1
- package/src/schemas/form-switch.ref.json +1 -1
- package/src/schemas/form-tab.ref.json +2 -2
- package/src/schemas/form.ref.json +32 -2
- package/src/schemas/list.ref.json +3 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
2
1
|
import { EDataType } from "../../../enums/form.enum";
|
|
3
2
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
4
3
|
|
|
@@ -9,18 +8,19 @@ export const characterForm: IForm = {
|
|
|
9
8
|
id: "characterForm",
|
|
10
9
|
contracts: [
|
|
11
10
|
{
|
|
11
|
+
id: "characters",
|
|
12
12
|
endpoint: "/characters",
|
|
13
13
|
actions: ["create", "get", "getById", "update", "delete"],
|
|
14
14
|
request: {
|
|
15
15
|
entity: "Character",
|
|
16
16
|
description: "Represents a character in a story or narrative.",
|
|
17
17
|
fields: [
|
|
18
|
-
{ name: "_id", dataType:
|
|
19
|
-
{ name: "characterName", dataType:
|
|
20
|
-
{ name: "characterImage", dataType:
|
|
21
|
-
{ name: "characterDescription", dataType:
|
|
22
|
-
{ name: "characterType", dataType:
|
|
23
|
-
{ name: "characterGender", dataType:
|
|
18
|
+
{ name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "characterName", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "characterImage", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
21
|
+
{ name: "characterDescription", dataType: EDataType.LONGTEXT, isRequired: false },
|
|
22
|
+
{ name: "characterType", dataType: EDataType.NVARCHAR, enum: ["protagonist", "antagonist", "hero", "villain", "sidekick", "supporting"], isRequired: false },
|
|
23
|
+
{ name: "characterGender", dataType: EDataType.NVARCHAR, enum: ["male", "female", "other"], isRequired: false },
|
|
24
24
|
],
|
|
25
25
|
},
|
|
26
26
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { COUNTRIES_FROM_EARTH } from "../../../constants/options/countriesFromEarth";
|
|
2
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
3
2
|
import { EDataType } from "../../../enums/form.enum";
|
|
4
3
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
5
4
|
|
|
@@ -9,55 +8,56 @@ export const companyForm: IForm = {
|
|
|
9
8
|
componentType: "form",
|
|
10
9
|
id: "companyForm",
|
|
11
10
|
contracts: [{
|
|
11
|
+
id: "companies",
|
|
12
12
|
endpoint: "/companies",
|
|
13
13
|
actions: ["create", "get", "getById", "update", "delete"],
|
|
14
14
|
request: {
|
|
15
15
|
entity: "Companies",
|
|
16
16
|
description: "Represents a company or business entity.",
|
|
17
17
|
fields: [
|
|
18
|
-
{ name: "_id", dataType:
|
|
19
|
-
{ name: "country", dataType:
|
|
20
|
-
{ name: "cnpj", dataType:
|
|
21
|
-
{ name: "name", dataType:
|
|
22
|
-
{ name: "businessName", dataType:
|
|
23
|
-
{ name: "birthday", dataType:
|
|
24
|
-
{ name: "legalNature", dataType:
|
|
25
|
-
{ name: "stateRegistration", dataType:
|
|
26
|
-
{ name: "municipalRegistration", dataType:
|
|
27
|
-
{ name: "description", dataType:
|
|
28
|
-
{ name: "logo", dataType:
|
|
29
|
-
{ name: "partners", dataType:
|
|
18
|
+
{ name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "country", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "cnpj", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
21
|
+
{ name: "name", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
22
|
+
{ name: "businessName", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
23
|
+
{ name: "birthday", dataType: EDataType.DATE, isRequired: false },
|
|
24
|
+
{ name: "legalNature", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
25
|
+
{ name: "stateRegistration", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
26
|
+
{ name: "municipalRegistration", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
27
|
+
{ name: "description", dataType: EDataType.LONGTEXT, isRequired: false },
|
|
28
|
+
{ name: "logo", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
29
|
+
{ name: "partners", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
|
|
30
30
|
entity: "People",
|
|
31
31
|
connectionAttribute: "_id",
|
|
32
32
|
relationship: "many-to-many"
|
|
33
33
|
} },
|
|
34
|
-
{ name: "phoneOne", dataType:
|
|
35
|
-
{ name: "emailOne", dataType:
|
|
36
|
-
{ name: "addressOneZipCode", dataType:
|
|
37
|
-
{ name: "addressOneStreet", dataType:
|
|
38
|
-
{ name: "addressOneDistrict", dataType:
|
|
39
|
-
{ name: "addressOneNumber", dataType:
|
|
40
|
-
{ name: "addressOneComplement", dataType:
|
|
41
|
-
{ name: "addressOneCity", dataType:
|
|
42
|
-
{ name: "addressOneState", dataType:
|
|
43
|
-
{ name: "addressOneLatitude", dataType:
|
|
44
|
-
{ name: "addressOneLongitude", dataType:
|
|
45
|
-
{ name: "addressTwoZipCode", dataType:
|
|
46
|
-
{ name: "addressTwoStreet", dataType:
|
|
47
|
-
{ name: "addressTwoDistrict", dataType:
|
|
48
|
-
{ name: "addressTwoNumber", dataType:
|
|
49
|
-
{ name: "addressTwoComplement", dataType:
|
|
50
|
-
{ name: "addressTwoCity", dataType:
|
|
51
|
-
{ name: "addressTwoState", dataType:
|
|
52
|
-
{ name: "addressTwoLatitude", dataType:
|
|
53
|
-
{ name: "addressTwoLongitude", dataType:
|
|
54
|
-
{ name: "phoneTwo", dataType:
|
|
55
|
-
{ name: "emailTwo", dataType:
|
|
56
|
-
{ name: "siteOne", dataType:
|
|
57
|
-
{ name: "siteTwo", dataType:
|
|
58
|
-
{ name: "linkedin", dataType:
|
|
59
|
-
{ name: "instagram", dataType:
|
|
60
|
-
{ name: "facebook", dataType:
|
|
34
|
+
{ name: "phoneOne", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
35
|
+
{ name: "emailOne", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
36
|
+
{ name: "addressOneZipCode", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
37
|
+
{ name: "addressOneStreet", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
38
|
+
{ name: "addressOneDistrict", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
39
|
+
{ name: "addressOneNumber", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
40
|
+
{ name: "addressOneComplement", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
41
|
+
{ name: "addressOneCity", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
42
|
+
{ name: "addressOneState", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
43
|
+
{ name: "addressOneLatitude", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
44
|
+
{ name: "addressOneLongitude", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
45
|
+
{ name: "addressTwoZipCode", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
46
|
+
{ name: "addressTwoStreet", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
47
|
+
{ name: "addressTwoDistrict", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
48
|
+
{ name: "addressTwoNumber", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
49
|
+
{ name: "addressTwoComplement", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
50
|
+
{ name: "addressTwoCity", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
51
|
+
{ name: "addressTwoState", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
52
|
+
{ name: "addressTwoLatitude", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
53
|
+
{ name: "addressTwoLongitude", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
54
|
+
{ name: "phoneTwo", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
55
|
+
{ name: "emailTwo", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
56
|
+
{ name: "siteOne", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
57
|
+
{ name: "siteTwo", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
58
|
+
{ name: "linkedin", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
59
|
+
{ name: "instagram", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
60
|
+
{ name: "facebook", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
61
61
|
]
|
|
62
62
|
}
|
|
63
63
|
}],
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { EDataType } from "../../../enums/form.enum";
|
|
2
|
+
import type { IForm } from "../../../interfaces/form.interface";
|
|
3
|
+
import { companyForm } from "./company.form";
|
|
4
|
+
import { personForm } from "./person.form";
|
|
5
|
+
|
|
6
|
+
export const customerForm: IForm = {
|
|
7
|
+
title: "Gerenciar cliente",
|
|
8
|
+
id: "customerForm",
|
|
9
|
+
componentType: "form",
|
|
10
|
+
contracts: [
|
|
11
|
+
{
|
|
12
|
+
id: "customerPeople",
|
|
13
|
+
endpoint: "/customers/people",
|
|
14
|
+
actions: ["create", "update", "get", "getById", "delete"],
|
|
15
|
+
request: {
|
|
16
|
+
entity: "Customers",
|
|
17
|
+
relatedEntity: {
|
|
18
|
+
entity: "People", // adiciona campo chamado relatedEntity amaarrado ao valor
|
|
19
|
+
connectionAttribute: "_id", // vai criar um campo chamado relatedEntityId
|
|
20
|
+
fieldsFromEntity: [{
|
|
21
|
+
fields: personForm,
|
|
22
|
+
contractId: "people",
|
|
23
|
+
}]
|
|
24
|
+
},
|
|
25
|
+
fields: []
|
|
26
|
+
},
|
|
27
|
+
conditions: [
|
|
28
|
+
{
|
|
29
|
+
type: "form",
|
|
30
|
+
elements: [
|
|
31
|
+
{
|
|
32
|
+
key: "entityRelated",
|
|
33
|
+
comparisonOperator: "===",
|
|
34
|
+
value: "People"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "customerCompanies",
|
|
42
|
+
endpoint: "/customers/companies",
|
|
43
|
+
actions: ["create", "update", "get", "getById", "delete"],
|
|
44
|
+
request: {
|
|
45
|
+
entity: "Customers",
|
|
46
|
+
relatedEntity: {
|
|
47
|
+
entity: "Companies",
|
|
48
|
+
connectionAttribute: "_id",
|
|
49
|
+
fieldsFromEntity: [
|
|
50
|
+
{
|
|
51
|
+
fields: companyForm,
|
|
52
|
+
contractId: "companies"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
fields: [
|
|
57
|
+
{ name: "entityId", dataType: EDataType.UNIQUEIDENTIFIER },
|
|
58
|
+
{ name: "entityRelated", dataType: EDataType.NVARCHAR }
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
conditions: [
|
|
62
|
+
{
|
|
63
|
+
type: "form",
|
|
64
|
+
elements: [
|
|
65
|
+
{
|
|
66
|
+
key: "entityRelated",
|
|
67
|
+
comparisonOperator: "===",
|
|
68
|
+
value: "Companies"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
elements: [
|
|
76
|
+
{
|
|
77
|
+
type: "select",
|
|
78
|
+
dataType: EDataType.NVARCHAR,
|
|
79
|
+
label: "Tipo de cliente",
|
|
80
|
+
name: "entityRelated",
|
|
81
|
+
options: [
|
|
82
|
+
{ label: "Pessoa", value: "People" },
|
|
83
|
+
{ label: "Empresa", value: "Companies" }
|
|
84
|
+
],
|
|
85
|
+
isDisabledOnUpdate: true,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: "inheritance",
|
|
89
|
+
form: personForm,
|
|
90
|
+
conditions: [
|
|
91
|
+
{
|
|
92
|
+
type: "form",
|
|
93
|
+
elements: [
|
|
94
|
+
{
|
|
95
|
+
key: "entityRelated",
|
|
96
|
+
comparisonOperator: "===",
|
|
97
|
+
value: "People"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: "inheritance",
|
|
105
|
+
form: companyForm,
|
|
106
|
+
conditions: [
|
|
107
|
+
{
|
|
108
|
+
type: "form",
|
|
109
|
+
elements: [
|
|
110
|
+
{
|
|
111
|
+
key: "entityRelated",
|
|
112
|
+
comparisonOperator: "===",
|
|
113
|
+
value: "Companies"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
2
1
|
import { EDataType } from "../../../enums/form.enum";
|
|
3
2
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
4
3
|
|
|
@@ -8,26 +7,27 @@ export const movieForm: IForm = {
|
|
|
8
7
|
componentType: "form",
|
|
9
8
|
contracts: [
|
|
10
9
|
{
|
|
10
|
+
id: "movies",
|
|
11
11
|
endpoint: "/movies",
|
|
12
12
|
actions: ["create", "update", "getById", "get", "delete"],
|
|
13
13
|
request: {
|
|
14
14
|
entity: "Movie",
|
|
15
15
|
description: "Represents a movie or TV series in the system.",
|
|
16
16
|
fields: [
|
|
17
|
-
{ name: "_id", dataType:
|
|
18
|
-
{ name: "pictureFile", dataType:
|
|
19
|
-
{ name: "name", dataType:
|
|
20
|
-
{ name: "description", dataType:
|
|
21
|
-
{ name: "releaseDate", dataType:
|
|
22
|
-
{ name: "imdbRating", dataType:
|
|
23
|
-
{ name: "movieGenres", dataType:
|
|
17
|
+
{ name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
18
|
+
{ name: "pictureFile", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
19
|
+
{ name: "name", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
20
|
+
{ name: "description", dataType: EDataType.LONGTEXT, isRequired: true },
|
|
21
|
+
{ name: "releaseDate", dataType: EDataType.DATE, isRequired: true },
|
|
22
|
+
{ name: "imdbRating", dataType: EDataType.DECIMAL, isRequired: true },
|
|
23
|
+
{ name: "movieGenres", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
|
|
24
24
|
entity: "MovieGenre",
|
|
25
25
|
connectionAttribute: "_id",
|
|
26
26
|
relationship: "many-to-many"
|
|
27
27
|
} },
|
|
28
|
-
{ name: "link1", dataType:
|
|
29
|
-
{ name: "link2", dataType:
|
|
30
|
-
{ name: "link3", dataType:
|
|
28
|
+
{ name: "link1", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
29
|
+
{ name: "link2", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
30
|
+
{ name: "link3", dataType: EDataType.NVARCHAR, isRequired: false },
|
|
31
31
|
],
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
2
1
|
import { EDataType } from "../../../enums/form.enum";
|
|
3
2
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
4
3
|
|
|
@@ -8,22 +7,23 @@ export const movieEpisodeForm: IForm = {
|
|
|
8
7
|
id: "movieEpisodeForm",
|
|
9
8
|
contracts: [
|
|
10
9
|
{
|
|
10
|
+
id: "moviesEpisodes",
|
|
11
11
|
endpoint: "/movies-episodes",
|
|
12
12
|
actions: ["create", "get", "getById", "update", "delete"],
|
|
13
13
|
request: {
|
|
14
14
|
entity: "MovieEpisode",
|
|
15
15
|
description: "Represents an episode of a TV series or show.",
|
|
16
16
|
fields: [
|
|
17
|
-
{ name: "_id", dataType:
|
|
18
|
-
{ name: "movieId", dataType:
|
|
17
|
+
{ name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
18
|
+
{ name: "movieId", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
|
|
19
19
|
entity: "Movie",
|
|
20
20
|
connectionAttribute: "_id",
|
|
21
21
|
relationship: "one-to-many"
|
|
22
22
|
} },
|
|
23
|
-
{ name: "title", dataType:
|
|
24
|
-
{ name: "description", dataType:
|
|
25
|
-
{ name: "releaseDate", dataType:
|
|
26
|
-
{ name: "characters", dataType:
|
|
23
|
+
{ name: "title", dataType: EDataType.NVARCHAR, isRequired: true },
|
|
24
|
+
{ name: "description", dataType: EDataType.LONGTEXT, isRequired: true },
|
|
25
|
+
{ name: "releaseDate", dataType: EDataType.DATETIME2, isRequired: true },
|
|
26
|
+
{ name: "characters", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
|
|
27
27
|
entity: "Character",
|
|
28
28
|
connectionAttribute: "_id",
|
|
29
29
|
relationship: "many-to-many"
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
2
1
|
import { EDataType } from "../../../enums/form.enum";
|
|
3
2
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
4
3
|
|
|
@@ -8,6 +7,7 @@ export const movieGenreForm: IForm = {
|
|
|
8
7
|
componentType: "form",
|
|
9
8
|
contracts: [
|
|
10
9
|
{
|
|
10
|
+
id: "moviesGenres",
|
|
11
11
|
endpoint: "/movie-genres",
|
|
12
12
|
actions: ["create", "get", "getById", "update", "delete"],
|
|
13
13
|
request : {
|
|
@@ -16,13 +16,13 @@ export const movieGenreForm: IForm = {
|
|
|
16
16
|
fields: [
|
|
17
17
|
{
|
|
18
18
|
name: "name",
|
|
19
|
-
dataType:
|
|
19
|
+
dataType: EDataType.TEXT,
|
|
20
20
|
isRequired: true,
|
|
21
21
|
maxSize: 255,
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
name: "description",
|
|
25
|
-
dataType:
|
|
25
|
+
dataType: EDataType.TEXT,
|
|
26
26
|
isRequired: true,
|
|
27
27
|
maxSize: 255,
|
|
28
28
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { COUNTRIES_FROM_EARTH } from "../../../constants/options/countriesFromEarth";
|
|
2
|
-
import { EFormContractDataType } from "../../../enums/form-contract.enum";
|
|
3
2
|
import { EDataType } from "../../../enums/form.enum";
|
|
4
3
|
import type { IForm } from "../../../interfaces/form.interface";
|
|
5
4
|
|
|
@@ -9,52 +8,53 @@ export const personForm: IForm = {
|
|
|
9
8
|
componentType: "form",
|
|
10
9
|
id: "personForm",
|
|
11
10
|
contracts: [{
|
|
11
|
+
id: "people",
|
|
12
12
|
endpoint: "/people",
|
|
13
13
|
actions: ["create", "get", "getById", "update", "delete"],
|
|
14
14
|
request: {
|
|
15
15
|
entity: "People",
|
|
16
16
|
description: "Represents an individual person with personal details and contact information.",
|
|
17
17
|
fields: [
|
|
18
|
-
{ name: "_id", dataType:
|
|
19
|
-
{ name: "country", dataType:
|
|
20
|
-
{ name: "cpf", dataType:
|
|
21
|
-
{ name: "passport", dataType:
|
|
22
|
-
{ name: "passportIssueDate", dataType:
|
|
23
|
-
{ name: "passportExpiryDate", dataType:
|
|
24
|
-
{ name: "name", dataType:
|
|
25
|
-
{ name: "gender", dataType:
|
|
26
|
-
{ name: "birthday", dataType:
|
|
27
|
-
{ name: "picture", dataType:
|
|
28
|
-
{ name: "phoneOne", dataType:
|
|
29
|
-
{ name: "emailOne", dataType:
|
|
30
|
-
{ name: "addressOneZipCode", dataType:
|
|
31
|
-
{ name: "addressOneStreet", dataType:
|
|
32
|
-
{ name: "addressOneDistrict", dataType:
|
|
33
|
-
{ name: "addressOneNumber", dataType:
|
|
34
|
-
{ name: "addressOneComplement", dataType:
|
|
35
|
-
{ name: "addressOneCity", dataType:
|
|
36
|
-
{ name: "addressOneState", dataType:
|
|
37
|
-
{ name: "addressOneLatitude", dataType:
|
|
38
|
-
{ name: "addressOneLongitude", dataType:
|
|
39
|
-
{ name: "addressTwoZipCode", dataType:
|
|
40
|
-
{ name: "addressTwoStreet", dataType:
|
|
41
|
-
{ name: "addressTwoDistrict", dataType:
|
|
42
|
-
{ name: "addressTwoNumber", dataType:
|
|
43
|
-
{ name: "addressTwoComplement", dataType:
|
|
44
|
-
{ name: "addressTwoCity", dataType:
|
|
45
|
-
{ name: "addressTwoState", dataType:
|
|
46
|
-
{ name: "addressTwoLatitude", dataType:
|
|
47
|
-
{ name: "addressTwoLongitude", dataType:
|
|
48
|
-
{ name: "phoneTwo", dataType:
|
|
49
|
-
{ name: "emailTwo", dataType:
|
|
50
|
-
{ name: "siteOne", dataType:
|
|
51
|
-
{ name: "siteTwo", dataType:
|
|
52
|
-
{ name: "linkedin", dataType:
|
|
53
|
-
{ name: "instagram", dataType:
|
|
54
|
-
{ name: "facebook", dataType:
|
|
55
|
-
{ name: "nickname", dataType:
|
|
56
|
-
{ name: "personDescription", dataType:
|
|
57
|
-
{ name: "personMaritalStatus", dataType:
|
|
18
|
+
{ name: "_id", dataType: EDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
|
|
19
|
+
{ name: "country", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 100 },
|
|
20
|
+
{ name: "cpf", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 14 },
|
|
21
|
+
{ name: "passport", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
22
|
+
{ name: "passportIssueDate", dataType: EDataType.DATETIME2, isRequired: false },
|
|
23
|
+
{ name: "passportExpiryDate", dataType: EDataType.DATETIME2, isRequired: false },
|
|
24
|
+
{ name: "name", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 200 },
|
|
25
|
+
{ name: "gender", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10, enum: ["male", "female", "other"] },
|
|
26
|
+
{ name: "birthday", dataType: EDataType.DATETIME2, isRequired: false },
|
|
27
|
+
{ name: "picture", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
28
|
+
{ name: "phoneOne", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 20 },
|
|
29
|
+
{ name: "emailOne", dataType: EDataType.NVARCHAR, isRequired: true, maxSize: 100 },
|
|
30
|
+
{ name: "addressOneZipCode", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10 },
|
|
31
|
+
{ name: "addressOneStreet", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
32
|
+
{ name: "addressOneDistrict", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
33
|
+
{ name: "addressOneNumber", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
34
|
+
{ name: "addressOneComplement", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
35
|
+
{ name: "addressOneCity", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
36
|
+
{ name: "addressOneState", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
37
|
+
{ name: "addressOneLatitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
38
|
+
{ name: "addressOneLongitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
39
|
+
{ name: "addressTwoZipCode", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 10 },
|
|
40
|
+
{ name: "addressTwoStreet", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
41
|
+
{ name: "addressTwoDistrict", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
42
|
+
{ name: "addressTwoNumber", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
43
|
+
{ name: "addressTwoComplement", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
44
|
+
{ name: "addressTwoCity", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
45
|
+
{ name: "addressTwoState", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
46
|
+
{ name: "addressTwoLatitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
47
|
+
{ name: "addressTwoLongitude", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 50 },
|
|
48
|
+
{ name: "phoneTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20 },
|
|
49
|
+
{ name: "emailTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
50
|
+
{ name: "siteOne", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
51
|
+
{ name: "siteTwo", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
52
|
+
{ name: "linkedin", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
53
|
+
{ name: "instagram", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
54
|
+
{ name: "facebook", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 200 },
|
|
55
|
+
{ name: "nickname", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 100 },
|
|
56
|
+
{ name: "personDescription", dataType: EDataType.LONGTEXT, isRequired: false },
|
|
57
|
+
{ name: "personMaritalStatus", dataType: EDataType.NVARCHAR, isRequired: false, maxSize: 20, enum: ["single", "married", "divorced", "widower", "engaged", "stableUnion"] },
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
}],
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IList } from "../../../interfaces/list.interface";
|
|
2
|
+
|
|
3
|
+
export const customerList: IList = {
|
|
4
|
+
title: "Lista de clientes",
|
|
5
|
+
id: "customerList",
|
|
6
|
+
componentType: "list",
|
|
7
|
+
dataSource: {
|
|
8
|
+
endpoint: "/customers",
|
|
9
|
+
paramType: "query",
|
|
10
|
+
},
|
|
11
|
+
properties: [
|
|
12
|
+
{ label: "Tipo", property: "entityRelated", type: "title", },
|
|
13
|
+
{ label: "Nome", property: "People.name", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "People" }] }] },
|
|
14
|
+
{ label: "Telefone", property: "People.phoneOne", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "People" }] }] },
|
|
15
|
+
{ label: "E-mail", property: "People.emailOne", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "People" }] }] },
|
|
16
|
+
{ label: "Nome", property: "Companies.companyName", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "Companies" }] }] },
|
|
17
|
+
{ label: "Telefone", property: "Companies.phoneOne", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "Companies" }] }] },
|
|
18
|
+
{ label: "E-mail", property: "Companies.emailOne", type: "subtitle", conditions: [{ type: "property", elements: [{ key: "entityRelated", comparisonOperator: "===", value: "Companies" }] }] },
|
|
19
|
+
],
|
|
20
|
+
callsToActionMenu: [
|
|
21
|
+
{
|
|
22
|
+
label: "Editar",
|
|
23
|
+
icon: "pencil",
|
|
24
|
+
action: {
|
|
25
|
+
link: {
|
|
26
|
+
endpoint: "/customer-form",
|
|
27
|
+
propertiesAsQueryParam: ["_id"],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "Excluir",
|
|
33
|
+
icon: "delete",
|
|
34
|
+
action: {
|
|
35
|
+
link: {
|
|
36
|
+
endpoint: "/customer-list",
|
|
37
|
+
},
|
|
38
|
+
request: {
|
|
39
|
+
endpoint: "/customers",
|
|
40
|
+
verb: "delete",
|
|
41
|
+
propertiesAsPathParam: ["_id"],
|
|
42
|
+
dialog: {
|
|
43
|
+
title: "Excluir conteúdo",
|
|
44
|
+
message: "Deseja realmente excluir esse conteúdo?",
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IModule } from "../../interfaces/project.interface";
|
|
2
|
+
import { customerForm } from "../components/forms/customer.form";
|
|
3
|
+
import { customerList } from "../components/lists/customer.list";
|
|
4
|
+
|
|
5
|
+
export const customerModule: IModule = {
|
|
6
|
+
title: "Cliente",
|
|
7
|
+
id: "customerModule",
|
|
8
|
+
icon: "UserIcon",
|
|
9
|
+
components: [
|
|
10
|
+
customerForm,
|
|
11
|
+
customerList,
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IProject } from "../../interfaces/project.interface";
|
|
2
2
|
import { characterModule } from "../modules/character";
|
|
3
3
|
import { companyModule } from "../modules/company";
|
|
4
|
+
import { customerModule } from "../modules/customer";
|
|
4
5
|
import { movieModule } from "../modules/movie";
|
|
5
6
|
import { personModule } from "../modules/person";
|
|
6
7
|
|
|
@@ -60,6 +61,7 @@ export const movieBackoffice: IProject = {
|
|
|
60
61
|
baseUrl: "http://localhost:5173",
|
|
61
62
|
},
|
|
62
63
|
modules: [
|
|
64
|
+
customerModule,
|
|
63
65
|
personModule,
|
|
64
66
|
companyModule,
|
|
65
67
|
movieModule,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IBusinessRule } from "./project.interface";
|
|
2
2
|
|
|
3
3
|
export interface IFormCondition {
|
|
4
|
-
type: "form" | "code" | "array" | "button";
|
|
4
|
+
type: "property" | "enum" | "form" | "code" | "array" | "button";
|
|
5
5
|
elements?: IConditionElement[];
|
|
6
6
|
code?: IConditionCode;
|
|
7
7
|
businessRules?: IBusinessRule[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EDataType } from "../enums/form.enum";
|
|
2
|
-
import type { IFormCondition } from "./
|
|
2
|
+
import type { IFormCondition } from "./condition.interface";
|
|
3
3
|
import type { IBusinessRule } from "./project.interface";
|
|
4
4
|
|
|
5
5
|
export interface IFormAutocomplete {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IFormCondition } from "./
|
|
1
|
+
import type { IFormCondition } from "./condition.interface";
|
|
2
2
|
import type { IApiRequest } from "./form-input.interface";
|
|
3
3
|
import type { IForm } from "./form.interface";
|
|
4
4
|
import type { IBusinessRule } from "./project.interface";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EDataType } from "../enums/form.enum";
|
|
2
|
-
import type { IFormCondition } from "./
|
|
2
|
+
import type { IFormCondition } from "./condition.interface";
|
|
3
3
|
import type { IBusinessRule } from "./project.interface";
|
|
4
4
|
|
|
5
5
|
interface IStorageConfig {
|
|
@@ -3,7 +3,7 @@ import type {
|
|
|
3
3
|
IApiResponseField,
|
|
4
4
|
IApiResponseFieldFilter,
|
|
5
5
|
} from "./form-autocomplete.interface";
|
|
6
|
-
import type { IFormCondition } from "./
|
|
6
|
+
import type { IFormCondition } from "./condition.interface";
|
|
7
7
|
import type { IBusinessRule } from "./project.interface";
|
|
8
8
|
|
|
9
9
|
export interface IFormInput {
|