lesli 5.0.1 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +7 -4
  3. data/app/assets/fonts/lesli/Domine/Domine-VariableFont_wght.ttf +0 -0
  4. data/app/assets/fonts/lesli/Domine/OFL.txt +2 -0
  5. data/app/assets/javascripts/lesli/users/passwords.js +776 -0
  6. data/app/assets/javascripts/lesli/users/registrations.js +776 -0
  7. data/app/assets/javascripts/lesli/users/sessions.js +776 -1
  8. data/app/assets/stylesheets/lesli/users/passwords.scss +5 -6
  9. data/app/assets/stylesheets/lesli/users/registrations.scss +5 -6
  10. data/app/assets/stylesheets/lesli/users/sessions.scss +5 -10
  11. data/app/controllers/lesli/application_lesli_controller.rb +0 -1
  12. data/app/controllers/lesli/interfaces/application/logger.rb +9 -9
  13. data/app/controllers/lesli/roles_controller.rb +43 -0
  14. data/{lib/sass/lesli/devise/registrations.scss.erb → app/controllers/lesli/users_controller.rb} +18 -23
  15. data/app/controllers/users/registrations_controller.rb +137 -58
  16. data/app/helpers/lesli/assets_helper.rb +2 -2
  17. data/app/helpers/lesli/general_helper.rb +1 -1
  18. data/app/helpers/lesli/navigation_helper.rb +7 -10
  19. data/app/helpers/lesli/system_helper.rb +1 -1
  20. data/app/lib/lesli/system.rb +7 -3
  21. data/app/mailers/lesli/application_lesli_mailer.rb +199 -0
  22. data/app/mailers/lesli/application_mailer.rb +7 -0
  23. data/app/mailers/lesli/devise_mailer.rb +33 -0
  24. data/app/models/concerns/user_guard.rb +3 -4
  25. data/app/models/lesli/account.rb +29 -0
  26. data/{lib/sass/lesli/pages/passes.scss → app/models/lesli/descriptor.rb} +14 -8
  27. data/app/models/lesli/role.rb +90 -0
  28. data/app/models/lesli/system_controller.rb +1 -0
  29. data/app/models/lesli/user/detail.rb +55 -0
  30. data/{lib/sass/lesli/pages/otps.scss → app/models/lesli/user/role.rb} +13 -9
  31. data/app/models/lesli/user.rb +4 -3
  32. data/app/services/lesli/role_service.rb +45 -0
  33. data/app/services/lesli/user_service.rb +69 -0
  34. data/app/views/devise/passwords/new.html.erb +72 -12
  35. data/app/views/devise/registrations/new.html.erb +146 -28
  36. data/app/views/devise/sessions/new.html.erb +11 -78
  37. data/app/views/devise/shared/_links.html.erb +96 -25
  38. data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +23 -0
  39. data/app/views/lesli/emails/user_mailer/invitation.html.erb +23 -0
  40. data/app/views/lesli/layouts/application-devise.html.erb +1 -1
  41. data/app/views/lesli/layouts/application-public.html.erb +2 -2
  42. data/app/views/lesli/layouts/mailer.html.erb +13 -0
  43. data/app/views/lesli/layouts/mailer.text.erb +1 -0
  44. data/app/views/lesli/partials/_application-lesli-header.html.erb +27 -41
  45. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +10 -6
  46. data/app/views/lesli/partials/_application-public-javascript.html.erb +12 -8
  47. data/{lib/sass/lesli/devise/confirmations.scss.erb → app/views/lesli/wrappers/_application-devise-simple.erb} +30 -46
  48. data/app/views/lesli/wrappers/{_application-auth.html.erb → _application-devise.html.erb} +15 -0
  49. data/config/initializers/{lesli_defaults.rb → lesli.rb} +4 -2
  50. data/config/locales/translations.en.yml +7 -0
  51. data/config/locales/translations.es.yml +7 -0
  52. data/config/routes.rb +22 -17
  53. data/db/migrate/v1.0/0010000210_create_lesli_roles.rb +1 -1
  54. data/db/{tables/0010003010_create_user_details.rb → migrate/v1.0/0010003010_create_lesli_user_details.rb} +6 -6
  55. data/db/{tables/0010003510_create_user_roles.rb → migrate/v1.0/0010003410_create_lesli_user_roles.rb} +4 -4
  56. data/db/{tables/0010005010_create_descriptors.rb → migrate/v1.0/0010005010_create_lesli_descriptors.rb} +5 -6
  57. data/db/{tables/0010005110_create_descriptor_privileges.rb → migrate/v1.0/0010005110_create_lesli_descriptor_privileges.rb} +8 -7
  58. data/db/{tables/0010005210_create_descriptor_activities.rb → migrate/v1.0/0010005210_create_lesli_descriptor_activities.rb} +6 -8
  59. data/db/seeds.rb +0 -2
  60. data/lib/lesli/engine.rb +25 -2
  61. data/lib/lesli/routing.rb +26 -0
  62. data/lib/lesli/version.rb +2 -2
  63. data/lib/lesli.rb +1 -0
  64. data/lib/{sass/lesli/pages/mfas.scss → mailer_previews/devise_mailer_preview.rb} +12 -6
  65. data/lib/sass/lesli/bulma/loader.scss +3 -0
  66. data/lib/sass/lesli/elements/header.scss +1 -1
  67. data/lib/sass/lesli/fonts/families.scss +3 -3
  68. data/lib/sass/lesli/layouts/application-container.scss +4 -0
  69. data/lib/sass/lesli/{devise/passwords.scss.erb → pages/devise-simple.scss} +38 -38
  70. data/lib/sass/lesli/{templates → pages}/devise.scss +4 -26
  71. data/lib/sass/lesli/settings/variables.scss +1 -1
  72. data/lib/sass/lesli/templates/application.scss +8 -4
  73. data/lib/sass/lesli/templates/dashboards.scss +8 -0
  74. data/lib/sass/lesli/templates/public.scss +2 -3
  75. data/lib/tasks/lesli/controllers.rake +33 -0
  76. data/lib/tasks/lesli/db.rake +88 -0
  77. data/lib/tasks/lesli/git.rake +74 -0
  78. data/lib/tasks/lesli_tasks.rake +70 -20
  79. data/lib/vue/devise/registrations.js +10 -15
  80. data/lib/vue/layouts/application-container.vue +10 -2
  81. data/lib/vue/layouts/application-header.vue +10 -3
  82. data/lib/vue/stores/account.js +113 -0
  83. data/lib/vue/stores/role.js +243 -0
  84. data/lib/vue/stores/translations.json +86 -0
  85. data/lib/vue/stores/user.js +102 -0
  86. data/lib/{sass/lesli/devise/sessions.scss → vue/translation.js} +14 -5
  87. data/lib/webpack/base.js +2 -2
  88. data/lib/webpack/core.js +2 -0
  89. data/readme.md +74 -55
  90. metadata +196 -51
  91. data/app/assets/fonts/lesli/Domine/Domine-Bold.ttf +0 -0
  92. data/app/assets/fonts/lesli/Domine/Domine-Regular.ttf +0 -0
  93. data/app/assets/stylesheets/lesli/users/devise.scss +0 -32
  94. data/app/controllers/lesli/profiles_controller.rb +0 -60
  95. data/app/helpers/lesli/profiles_helper.rb +0 -4
  96. data/app/models/lesli/profile.rb +0 -4
  97. data/app/views/lesli/devise/sessions/_form.html.erb +0 -17
  98. data/app/views/lesli/devise/sessions/_session.html.erb +0 -2
  99. data/app/views/lesli/devise/sessions/edit.html.erb +0 -10
  100. data/app/views/lesli/devise/sessions/index.html.erb +0 -14
  101. data/app/views/lesli/devise/sessions/new.html.erb +0 -9
  102. data/app/views/lesli/devise/sessions/show.html.erb +0 -10
  103. data/app/views/lesli/profiles/_form.html.erb +0 -17
  104. data/app/views/lesli/profiles/_profile.html.erb +0 -2
  105. data/app/views/lesli/profiles/edit.html.erb +0 -10
  106. data/app/views/lesli/profiles/index.html.erb +0 -14
  107. data/app/views/lesli/profiles/new.html.erb +0 -9
  108. data/app/views/lesli/profiles/show.html.erb +0 -10
  109. data/lib/sass/lesli/pages/dashboards.scss +0 -57
  110. data/lib/tasks/db.rb +0 -76
  111. data/lib/vue/stores/profile.js +0 -90
  112. data/lib/vue/stores/workflow2.js +0 -345
  113. data/lib/vue/stores/workflows/actions.js +0 -327
  114. data/lib/vue/stores/workflows/associations.js +0 -130
  115. data/lib/vue/stores/workflows/checks.js +0 -210
  116. /data/lib/vue/stores/{announcements.js → entities/announcements.js} +0 -0
  117. /data/lib/vue/stores/{dashboard.js → entities/dashboard.js} +0 -0
  118. /data/lib/vue/stores/{workflow.js → entities/workflow.js} +0 -0
  119. /data/lib/vue/stores/{cloud-bell → panels}/notification.js +0 -0
  120. /data/lib/vue/stores/{firebase.js → services/firebase.js} +0 -0
@@ -1,57 +0,0 @@
1
- /*
2
-
3
- Lesli
4
-
5
- Copyright (c) 2023, Lesli Technologies, S. A.
6
-
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- (at your option) any later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see http://www.gnu.org/licenses/.
19
-
20
- Lesli · Ruby on Rails SaaS development platform.
21
-
22
- Made with ♥ by https://www.lesli.tech
23
- Building a better future, one line of code at a time.
24
-
25
- @contact hello@lesli.tech
26
- @website https://www.lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
- // ·
35
- .dashboard-components {
36
- .column {
37
- margin-bottom: .6rem;
38
-
39
- div.component-chart {
40
- border-radius: .6rem;
41
- box-shadow: $lesli-box-shadow;
42
- background-color: lesli-css-color(solid, white);
43
- }
44
-
45
- // widgets with tables
46
- table.lesli-table {
47
- box-shadow: $lesli-box-shadow;
48
- thead {
49
- background-color: transparent;
50
- border-bottom: 1px solid lesli-css-color(slate);
51
- th {
52
- padding-bottom: 0px;
53
- }
54
- }
55
- }
56
- }
57
- }
data/lib/tasks/db.rb DELETED
@@ -1,76 +0,0 @@
1
- =begin
2
-
3
- Lesli
4
-
5
- Copyright (c) 2023, Lesli Technologies, S. A.
6
-
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- (at your option) any later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see http://www.gnu.org/licenses/.
19
-
20
- Lesli · Ruby on Rails SaaS Development Framework.
21
-
22
- Made with ♥ by https://www.lesli.tech
23
- Building a better future, one line of code at a time.
24
-
25
- @contact hello@lesli.tech
26
- @website https://www.lesli.dev
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
- =end
32
-
33
- # Build, migrate & seed database (development only)
34
- def setup
35
-
36
- L2.br(2)
37
- L2.info("Setup Lesli database for development")
38
-
39
- Rake::Task['db:create'].invoke
40
- Rake::Task['db:migrate'].invoke
41
- Rake::Task['db:seed'].invoke
42
- seed()
43
-
44
- end
45
-
46
-
47
- # Drop, build, migrate & seed database (development only)
48
- def reset
49
-
50
- return if Rails.env.production?
51
-
52
- L2.br(2)
53
- L2.info("Reset Lesli database for development")
54
-
55
- Rake::Task['db:drop'].invoke
56
- Rake::Task['db:create'].invoke
57
- Rake::Task['db:migrate'].invoke
58
- Rake::Task['db:seed'].invoke
59
- seed()
60
-
61
- end
62
-
63
-
64
- # Drop, build, migrate & seed database (development only)
65
- def seed
66
-
67
- return if Rails.env.production?
68
-
69
- L2.br(2)
70
- L2.info("Seed Lesli database for #{ Rails.env.downcase } environment")
71
-
72
- Lesli::Engine.load_seed
73
- LesliBell::Engine.load_seed if defined?(LesliBell)
74
- LesliAudit::Engine.load_seed if defined?(LesliAudit)
75
-
76
- end
@@ -1,90 +0,0 @@
1
- /*
2
-
3
- Lesli
4
-
5
- Copyright (c) 2023, Lesli Technologies, S. A.
6
-
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- (at your option) any later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see http://www.gnu.org/licenses/.
19
-
20
- Lesli · Your Smart Business Assistant.
21
-
22
- Made with ♥ by https://www.lesli.tech
23
- Building a better future, one line of code at a time.
24
-
25
- @contact hello@lesli.tech
26
- @website https://lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
-
35
-
36
- // ·
37
- import { defineStore } from "pinia"
38
- import { useUser } from "LesliApp/administration/stores/user"
39
- import { useLesliUtils } from "lesli-vue/composables"
40
-
41
-
42
- const storeUtils = useLesliUtils()
43
-
44
-
45
- // ·
46
- export const useProfile = defineStore("profile", {
47
- state: () => {
48
- return {
49
- storeUser: useUser(),
50
- loading: false,
51
- profile: {
52
- detail_attributes: {}
53
- },
54
- roles: [],
55
- new_email: null
56
- }
57
- },
58
- actions: {
59
-
60
- fetch() {
61
- if (!this.profile.id) {
62
- this.fetchProfile()
63
- }
64
- },
65
-
66
- fetchProfile() {
67
- this.loading = true
68
- this.roles = []
69
- this.http.get(this.url.admin("profile")).then(result => {
70
- this.profile = result
71
- this.profile['initials'] = storeUtils.initials(
72
- this.profile.first_name,
73
- this.profile.last_name
74
- )
75
- this.parseRoles(result.roles)
76
- }).catch(error => {
77
- console.log(error)
78
- }).finally(() => {
79
- this.loading = false
80
- })
81
-
82
- },
83
- parseRoles(roles){
84
- this.roles = []
85
- roles.forEach(role =>{
86
- this.roles.push(role.name)
87
- })
88
- }
89
- }
90
- })
@@ -1,345 +0,0 @@
1
- /*
2
-
3
- Lesli
4
-
5
- Copyright (c) 2023, Lesli Technologies, S. A.
6
-
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- (at your option) any later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see http://www.gnu.org/licenses/.
19
-
20
- Lesli · Your Smart Business Assistant.
21
-
22
- Made with ♥ by https://www.lesli.tech
23
- Building a better future, one line of code at a time.
24
-
25
- @contact hello@lesli.tech
26
- @website https://lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
-
35
- // · This store is needed to make http requests, manage the reactivity
36
- // · of a workflow.
37
-
38
- import { defineStore } from "pinia"
39
- import { toHandlers } from "vue"
40
-
41
- export const useWorkflow = defineStore("core.shared.workflow", {
42
- state: () => {
43
- return {
44
- transitionOptions: [],
45
- workflows: [],
46
- loading: false,
47
- cloudModule: null,
48
- cloudObject: null,
49
- cloudObjectId: null,
50
- workflow: {},
51
- new_status_name: '',
52
- deleted_workflow_statuses: [],
53
- selected_status: {},
54
- status_select: [],
55
- status_transition: null,
56
- transition_statuses: [],
57
- list_status: [],
58
-
59
- workflowId: "",
60
- workflowStatusId: "",
61
- workflow_statuses: [],
62
- currentStatus: {}
63
- }
64
- },
65
- actions: {
66
-
67
- /**
68
- * @param {*} url is the url of the api to be called
69
- * @description This action is used to fetch the list of transition options
70
- */
71
- fetchWorkflows(url) {
72
- this.loading = true
73
-
74
- if (!url) url = this.url[this.cloudModule](this.cloudObject)
75
-
76
- this.http.get(url).then(result => {
77
- this.workflows = result.workflows
78
- }).catch(error => {
79
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
80
- }).finally(() => {
81
- this.loading = false
82
- })
83
- },
84
-
85
- /**
86
- * @param {string} stringToFind String to search for
87
- * @description This action is used to search for a string in the workflows
88
- */
89
- searchWorkflows(stringToFind) {
90
- const workflowsUrl = this.url[this.cloudModule](this.cloudObject).search(stringToFind)
91
- this.fetchWorkflows(workflowsUrl)
92
- },
93
-
94
- /**
95
- * @description This action is used to get the statuses from a workflow
96
- */
97
- async fetchWorkflowStatuses(){
98
-
99
- this.loading = true
100
-
101
-
102
- let cloudObjectScope = null
103
-
104
- if (this.cloudObject.split("/").length >= 2) {
105
- cloudObjectScope = this.cloudObject.split("/")[0]
106
- }
107
-
108
-
109
- let path = "workflows/:workflow_id/statuses"
110
-
111
- if (cloudObjectScope) {
112
- path = cloudObjectScope + "/" + path
113
- }
114
-
115
- let url = this.url[this.cloudModule](path, {
116
- workflow_id: this.workflowId,
117
- })
118
-
119
- return this.http.get(url).then(result => {
120
- this.workflow_statuses = result.sort((a, b) => a.number - b.number)
121
- }).catch(error => {
122
- this.msg.danger(I18n.t("core.shared").messages_danger_getting_transition_options)
123
- }).finally(() => {
124
- this.loading = false
125
- })
126
- },
127
-
128
- /**
129
- * @description This action is used to get the current status from workflow statuses
130
- */
131
- getCurrentStatus(){
132
- this.currentStatus = this.workflow_statuses.find((status)=> status.id === this.workflowStatusId)
133
- },
134
-
135
- /**
136
- * @description This action is used to fetch the list of transition options
137
- */
138
- fetchTransitionOptions(url) {
139
- this.loading = true
140
-
141
- // · If the cloud object has / split the url
142
- let cloudObject = this.cloudObject.split("/").pop()
143
- let cloudObjectScope = null
144
-
145
- if (this.cloudObject.split("/").length >= 2) {
146
- cloudObjectScope = this.cloudObject.split("/")[0]
147
- }
148
-
149
- // · Singularize the cloud object
150
- let cloudObjectSingular = this.utils.singularize(cloudObject)
151
-
152
- let path = "workflows/resources/transition-options/:cloudObject/:cloudObjectId"
153
-
154
- if (cloudObjectScope) {
155
- path = cloudObjectScope + "/" + path
156
- }
157
-
158
- if (!url) url = this.url[this.cloudModule](path, {
159
- cloudObject: cloudObjectSingular,
160
- cloudObjectId: this.cloudObjectId,
161
- })
162
-
163
- this.http.get(url).then(result => {
164
- if (result === "") return this.transitionOptions = []
165
- this.transitionOptions = result
166
- }).catch(error => {
167
- if (error?.message === "Not found") return this.transitionOptions = []
168
- this.msg.danger(I18n.t("core.shared").messages_danger_getting_transition_options)
169
- }).finally(() => {
170
- this.loading = false
171
- })
172
- },
173
-
174
- /**
175
- * @param {*} payload
176
- * @description This action is used to update the cloud object status
177
- */
178
- updateStatus(payload) {
179
- this.loading = true
180
-
181
- const url = this.url[this.cloudModule](`${this.cloudObject}/:cloudObjectId`, { cloudObjectId: this.cloudObjectId })
182
-
183
- this.http.put(url, payload).then(() => {
184
- this.msg.success(I18n.t("core.shared").messages_success_status_changed)
185
- this.fetchTransitionOptions()
186
- }).catch(error => {
187
- this.msg.danger(I18n.t("core.shared").messages_danger_updating_status)
188
- }).finally(() => {
189
- this.loading = false
190
- })
191
- },
192
-
193
- /**
194
- * @description This action is used to reset the store
195
- */
196
- reset() {
197
- this.transitionOptions = []
198
- this.workflows = []
199
- this.loading = false
200
- this.cloudModule = null
201
- this.cloudObject = null
202
- this.cloudObjectId = null
203
- },
204
- /**
205
- * @description This action is used to get the information from a workflow
206
- */
207
- async fetchWorkflow (worfkflow_id){
208
- this.loading = true
209
- const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: worfkflow_id })
210
-
211
- return this.http.get(url).then(result => {
212
- this.workflow = result
213
- this.loading = false
214
- }).catch(error => {
215
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
216
- })
217
- },
218
- /**
219
- * @description This action is used to post a workflow
220
- */
221
- async postWorkflow (){
222
- this.loading = true
223
- let statuses_attributes = this.workflow.statuses
224
-
225
- let data = {
226
- workflow: {
227
- name: this.workflow.name,
228
- statuses_attributes: statuses_attributes
229
- }
230
- }
231
-
232
- const url = this.url[this.cloudModule](`${this.cloudObject}`)
233
-
234
- return this.http.post(url, data).then(result => {
235
- this.workflow = result
236
- this.msg.success(I18n.t("core.users.messages_success_operation"))
237
- this.loading = false
238
- }).catch(error => {
239
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
240
- }).finally(()=>{
241
- this.loading = false
242
- })
243
- },
244
- /**
245
- * @description This action is used to update workflow info
246
- */
247
- updateWorkflow(){
248
-
249
- this.loading = true
250
- const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: this.workflow.id })
251
-
252
- this.http.put(url, {
253
- workflow: {
254
- name: this.workflow.name
255
- }
256
- }).then(result => {
257
- this.msg.success(I18n.t("core.users.messages_success_operation"))
258
- }).catch(error => {
259
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
260
- }).finally(()=>{
261
- this.loading = false
262
- })
263
- },
264
- /**
265
- * @description This action is used to post a new status for the actual workflow
266
- */
267
- async postStatus(){
268
- this.loading = true
269
- let new_status = {
270
- next_statuses: '',
271
- status_type: 'normal',
272
- number: 0,
273
- name: this.new_status_name
274
- }
275
-
276
- let data = {
277
- workflow_status: new_status
278
- }
279
-
280
- const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId/statuses`, { workflowId: this.workflow.id })
281
-
282
- return this.http.post(url, data).then(result => {
283
- new_status.id = result.id
284
- this.new_status_name = ''
285
- }).catch(error => {
286
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
287
- }).finally(()=>{
288
- this.loading = false
289
- })
290
-
291
- },
292
- /**
293
- * @description This action is used to post delete the actual workflow
294
- */
295
- async deleteWorkflow(){
296
- this.loading = true
297
- const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: this.workflow.id })
298
-
299
- return this.http.delete(url).then(result => {
300
- this.msg.success(I18n.t("core.users.messages_success_operation"))
301
- this.loading = false
302
- }).catch(error => {
303
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
304
- })
305
- },
306
- /**
307
- * @description This action is used to update statuses from a workflow
308
- */
309
- updateWorkflowStatuses(){
310
-
311
- this.loading = true
312
-
313
- let statuses_attributes = Object.values(this.workflow.statuses).concat(this.deleted_workflow_statuses)
314
-
315
- let data = {
316
- workflow: {
317
- name: this.workflow.name,
318
- statuses_attributes: statuses_attributes
319
- }
320
- }
321
- const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: this.workflow.id })
322
-
323
- this.http.put(url, data).then(result => {
324
- this.msg.success(I18n.t("core.users.messages_success_operation"))
325
- this.deleted_workflow_statuses = []
326
- }).catch(error => {
327
- this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
328
- }).finally(()=>{
329
- this.loading = false
330
- })
331
-
332
- },
333
- /**
334
- * @description This action is used to post reset workflow values for the workflow form
335
- */
336
- resetWorkflow(){
337
- this.workflow = {}
338
- this.selected_status = {},
339
- this.status_select = [],
340
- this.status_transition = null,
341
- this.transition_statuses = [],
342
- this.list_status = []
343
- }
344
- }
345
- })