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.
Files changed (50) hide show
  1. package/package.json +1 -1
  2. package/rapidaObject.json +1 -1
  3. package/src/enums/form-contract.enum.ts +1 -0
  4. package/src/examples/components/forms/character.form.ts +7 -7
  5. package/src/examples/components/forms/company.form.ts +40 -40
  6. package/src/examples/components/forms/customer.form.ts +120 -0
  7. package/src/examples/components/forms/movie.form.ts +11 -11
  8. package/src/examples/components/forms/movieEpisode.form.ts +7 -7
  9. package/src/examples/components/forms/movieGenre.form.ts +3 -3
  10. package/src/examples/components/forms/person.form.ts +41 -41
  11. package/src/examples/components/lists/customer.list.ts +50 -0
  12. package/src/examples/modules/customer.ts +13 -0
  13. package/src/examples/projects/movieBackoffice.ts +2 -0
  14. package/src/interfaces/{form-condition.interface.ts → condition.interface.ts} +1 -1
  15. package/src/interfaces/form-array.interface.ts +1 -1
  16. package/src/interfaces/form-autocomplete.interface.ts +1 -1
  17. package/src/interfaces/form-button.interface.ts +1 -1
  18. package/src/interfaces/form-datepicker.interface.ts +1 -1
  19. package/src/interfaces/form-fieldset.interface.ts +1 -1
  20. package/src/interfaces/form-file.interface.ts +1 -1
  21. package/src/interfaces/form-inheritance.interface.ts +1 -1
  22. package/src/interfaces/form-input.interface.ts +1 -1
  23. package/src/interfaces/form-numeric.interface.ts +1 -1
  24. package/src/interfaces/form-pattern.interface.ts +1 -1
  25. package/src/interfaces/form-radiogroup.interface.ts +1 -1
  26. package/src/interfaces/form-select.interface.ts +1 -1
  27. package/src/interfaces/form-switch.interface.ts +1 -1
  28. package/src/interfaces/form-tab.interface.ts +1 -1
  29. package/src/interfaces/form.interface.ts +23 -15
  30. package/src/interfaces/list.interface.ts +2 -0
  31. package/src/schemas/{form-condition.ref.json → condition.ref.json} +2 -2
  32. package/src/schemas/form-array.ref.json +1 -1
  33. package/src/schemas/form-autocomplete.ref.json +3 -3
  34. package/src/schemas/form-button.ref.json +1 -1
  35. package/src/schemas/form-common-api-request.ref.json +1 -1
  36. package/src/schemas/form-common-filters-from-other-form-fields.ref.json +1 -1
  37. package/src/schemas/form-datepicker.ref.json +1 -1
  38. package/src/schemas/form-fieldset.ref.json +1 -1
  39. package/src/schemas/form-file.ref.json +1 -1
  40. package/src/schemas/form-inheritance.ref.json +1 -1
  41. package/src/schemas/form-input.ref.json +1 -1
  42. package/src/schemas/form-numeric.ref.json +1 -1
  43. package/src/schemas/form-one-of.ref.json +3 -2
  44. package/src/schemas/form-pattern.ref.json +1 -1
  45. package/src/schemas/form-radiogroup.ref.json +1 -1
  46. package/src/schemas/form-select.ref.json +1 -1
  47. package/src/schemas/form-switch.ref.json +1 -1
  48. package/src/schemas/form-tab.ref.json +2 -2
  49. package/src/schemas/form.ref.json +32 -2
  50. package/src/schemas/list.ref.json +3 -0
@@ -27,4 +27,5 @@ export enum EFormContractDataType {
27
27
  DATETIME2 = "datetime2",
28
28
  UNIQUEIDENTIFIER = "uniqueidentifier",
29
29
  BOOLEAN = "boolean",
30
+ ARRAY = "array",
30
31
  }
@@ -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: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
- { name: "characterName", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
20
- { name: "characterImage", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
21
- { name: "characterDescription", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
22
- { name: "characterType", dataType: EFormContractDataType.NVARCHAR, enum: ["protagonist", "antagonist", "hero", "villain", "sidekick", "supporting"], isRequired: false },
23
- { name: "characterGender", dataType: EFormContractDataType.NVARCHAR, enum: ["male", "female", "other"], isRequired: false },
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: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
- { name: "country", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
20
- { name: "cnpj", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
21
- { name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
22
- { name: "businessName", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
23
- { name: "birthday", dataType: EFormContractDataType.DATE, isRequired: false },
24
- { name: "legalNature", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
25
- { name: "stateRegistration", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
26
- { name: "municipalRegistration", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
27
- { name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
28
- { name: "logo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
29
- { name: "partners", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
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: EFormContractDataType.NVARCHAR, isRequired: true },
35
- { name: "emailOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
36
- { name: "addressOneZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
37
- { name: "addressOneStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
38
- { name: "addressOneDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
39
- { name: "addressOneNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
40
- { name: "addressOneComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
41
- { name: "addressOneCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
42
- { name: "addressOneState", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
43
- { name: "addressOneLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
44
- { name: "addressOneLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
45
- { name: "addressTwoZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
46
- { name: "addressTwoStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
47
- { name: "addressTwoDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
48
- { name: "addressTwoNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
49
- { name: "addressTwoComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
50
- { name: "addressTwoCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
51
- { name: "addressTwoState", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
52
- { name: "addressTwoLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
53
- { name: "addressTwoLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
54
- { name: "phoneTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
55
- { name: "emailTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
56
- { name: "siteOne", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
57
- { name: "siteTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
58
- { name: "linkedin", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
59
- { name: "instagram", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
60
- { name: "facebook", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
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: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
18
- { name: "pictureFile", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
19
- { name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true },
20
- { name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: true },
21
- { name: "releaseDate", dataType: EFormContractDataType.DATE, isRequired: true },
22
- { name: "imdbRating", dataType: EFormContractDataType.DECIMAL, isRequired: true },
23
- { name: "movieGenres", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
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: EFormContractDataType.NVARCHAR, isRequired: true },
29
- { name: "link2", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
30
- { name: "link3", dataType: EFormContractDataType.NVARCHAR, isRequired: false },
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: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
18
- { name: "movieId", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, foreignKey: {
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: EFormContractDataType.NVARCHAR, isRequired: true },
24
- { name: "description", dataType: EFormContractDataType.LONGTEXT, isRequired: true },
25
- { name: "releaseDate", dataType: EFormContractDataType.DATETIME2, isRequired: true },
26
- { name: "characters", dataType: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: false, foreignKey: {
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: EFormContractDataType.TEXT,
19
+ dataType: EDataType.TEXT,
20
20
  isRequired: true,
21
21
  maxSize: 255,
22
22
  },
23
23
  {
24
24
  name: "description",
25
- dataType: EFormContractDataType.TEXT,
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: EFormContractDataType.UNIQUEIDENTIFIER, isRequired: true, isPrimaryKey: true },
19
- { name: "country", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 100 },
20
- { name: "cpf", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 14 },
21
- { name: "passport", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
22
- { name: "passportIssueDate", dataType: EFormContractDataType.DATETIME2, isRequired: false },
23
- { name: "passportExpiryDate", dataType: EFormContractDataType.DATETIME2, isRequired: false },
24
- { name: "name", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 200 },
25
- { name: "gender", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10, enum: ["male", "female", "other"] },
26
- { name: "birthday", dataType: EFormContractDataType.DATETIME2, isRequired: false },
27
- { name: "picture", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
28
- { name: "phoneOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 20 },
29
- { name: "emailOne", dataType: EFormContractDataType.NVARCHAR, isRequired: true, maxSize: 100 },
30
- { name: "addressOneZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10 },
31
- { name: "addressOneStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
32
- { name: "addressOneDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
33
- { name: "addressOneNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
34
- { name: "addressOneComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
35
- { name: "addressOneCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
36
- { name: "addressOneState", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
37
- { name: "addressOneLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
38
- { name: "addressOneLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
39
- { name: "addressTwoZipCode", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 10 },
40
- { name: "addressTwoStreet", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
41
- { name: "addressTwoDistrict", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
42
- { name: "addressTwoNumber", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
43
- { name: "addressTwoComplement", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
44
- { name: "addressTwoCity", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
45
- { name: "addressTwoState", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
46
- { name: "addressTwoLatitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
47
- { name: "addressTwoLongitude", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 50 },
48
- { name: "phoneTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20 },
49
- { name: "emailTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
50
- { name: "siteOne", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
51
- { name: "siteTwo", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
52
- { name: "linkedin", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
53
- { name: "instagram", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
54
- { name: "facebook", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 200 },
55
- { name: "nickname", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 100 },
56
- { name: "personDescription", dataType: EFormContractDataType.LONGTEXT, isRequired: false },
57
- { name: "personMaritalStatus", dataType: EFormContractDataType.NVARCHAR, isRequired: false, maxSize: 20, enum: ["single", "married", "divorced", "widower", "engaged", "stableUnion"] },
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,4 +1,4 @@
1
- import type { IFormCondition } from "./form-condition.interface";
1
+ import type { IFormCondition } from "./condition.interface";
2
2
  import type { IFormElement } from "./form.interface";
3
3
  import type { IBusinessRule } from "./project.interface";
4
4
 
@@ -1,5 +1,5 @@
1
1
  import type { EDataType } from "../enums/form.enum";
2
- import type { IFormCondition } from "./form-condition.interface";
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 "./form-condition.interface";
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,4 +1,4 @@
1
- import type { IFormCondition } from "./form-condition.interface";
1
+ import type { IFormCondition } from "./condition.interface";
2
2
  import type { IBusinessRule } from "./project.interface";
3
3
 
4
4
  export interface IFormDatePicker {
@@ -1,4 +1,4 @@
1
- import type { IFormCondition } from "./form-condition.interface";
1
+ import type { IFormCondition } from "./condition.interface";
2
2
  import type { IFormElement } from "./form.interface";
3
3
  import type { IBusinessRule } from "./project.interface";
4
4
 
@@ -1,5 +1,5 @@
1
1
  import type { EDataType } from "../enums/form.enum";
2
- import type { IFormCondition } from "./form-condition.interface";
2
+ import type { IFormCondition } from "./condition.interface";
3
3
  import type { IBusinessRule } from "./project.interface";
4
4
 
5
5
  interface IStorageConfig {
@@ -1,4 +1,4 @@
1
- import type { IFormCondition } from "./form-condition.interface";
1
+ import type { IFormCondition } from "./condition.interface";
2
2
  import type { IForm } from "./form.interface";
3
3
  import type { IBusinessRule } from "./project.interface";
4
4
 
@@ -3,7 +3,7 @@ import type {
3
3
  IApiResponseField,
4
4
  IApiResponseFieldFilter,
5
5
  } from "./form-autocomplete.interface";
6
- import type { IFormCondition } from "./form-condition.interface";
6
+ import type { IFormCondition } from "./condition.interface";
7
7
  import type { IBusinessRule } from "./project.interface";
8
8
 
9
9
  export interface IFormInput {