@redneckz/wildless-cms-uni-blocks 0.14.700 → 0.14.702

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 (193) hide show
  1. package/bundle/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  2. package/bundle/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  3. package/bundle/api/RetailAPI/getTaskById.d.ts +6 -0
  4. package/bundle/api/RetailAPI/updateUserTask.d.ts +8 -8
  5. package/bundle/bundle.umd.js +252 -30
  6. package/bundle/bundle.umd.min.js +1 -1
  7. package/bundle/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  8. package/bundle/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  9. package/bundle/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  10. package/bundle/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  11. package/bundle/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  12. package/bundle/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  13. package/bundle/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  14. package/bundle/ui-kit/DraftDialog/utils.d.ts +138 -0
  15. package/dist/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  16. package/dist/api/RetailAPI/draftTasksKZO.js +9 -0
  17. package/dist/api/RetailAPI/draftTasksKZO.js.map +1 -0
  18. package/dist/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  19. package/dist/api/RetailAPI/getLastTaskStatus.js +9 -0
  20. package/dist/api/RetailAPI/getLastTaskStatus.js.map +1 -0
  21. package/dist/api/RetailAPI/getTaskById.d.ts +6 -0
  22. package/dist/api/RetailAPI/getTaskById.js +9 -0
  23. package/dist/api/RetailAPI/getTaskById.js.map +1 -0
  24. package/dist/api/RetailAPI/updateUserTask.d.ts +8 -8
  25. package/dist/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  26. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +32 -21
  27. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  28. package/dist/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  29. package/dist/components/ApplicationLeadForm/useSaveUserData.js +19 -0
  30. package/dist/components/ApplicationLeadForm/useSaveUserData.js.map +1 -0
  31. package/dist/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  32. package/dist/ui-kit/DraftDialog/DraftActionButton.js +10 -0
  33. package/dist/ui-kit/DraftDialog/DraftActionButton.js.map +1 -0
  34. package/dist/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  35. package/dist/ui-kit/DraftDialog/DraftDialog.js +43 -0
  36. package/dist/ui-kit/DraftDialog/DraftDialog.js.map +1 -0
  37. package/dist/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  38. package/dist/ui-kit/DraftDialog/EmptyDraftDialog.js +22 -0
  39. package/dist/ui-kit/DraftDialog/EmptyDraftDialog.js.map +1 -0
  40. package/dist/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  41. package/dist/ui-kit/DraftDialog/parseDraftTask.js +65 -0
  42. package/dist/ui-kit/DraftDialog/parseDraftTask.js.map +1 -0
  43. package/dist/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  44. package/dist/ui-kit/DraftDialog/useDraftDialog.js +16 -0
  45. package/dist/ui-kit/DraftDialog/useDraftDialog.js.map +1 -0
  46. package/dist/ui-kit/DraftDialog/utils.d.ts +138 -0
  47. package/dist/ui-kit/DraftDialog/utils.js +85 -0
  48. package/dist/ui-kit/DraftDialog/utils.js.map +1 -0
  49. package/lib/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  50. package/lib/api/RetailAPI/draftTasksKZO.js +6 -0
  51. package/lib/api/RetailAPI/draftTasksKZO.js.map +1 -0
  52. package/lib/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  53. package/lib/api/RetailAPI/getLastTaskStatus.js +6 -0
  54. package/lib/api/RetailAPI/getLastTaskStatus.js.map +1 -0
  55. package/lib/api/RetailAPI/getTaskById.d.ts +6 -0
  56. package/lib/api/RetailAPI/getTaskById.js +6 -0
  57. package/lib/api/RetailAPI/getTaskById.js.map +1 -0
  58. package/lib/api/RetailAPI/updateUserTask.d.ts +8 -8
  59. package/lib/common.css +1 -1
  60. package/lib/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  61. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +32 -21
  62. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  63. package/lib/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  64. package/lib/components/ApplicationLeadForm/useSaveUserData.js +16 -0
  65. package/lib/components/ApplicationLeadForm/useSaveUserData.js.map +1 -0
  66. package/lib/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  67. package/lib/ui-kit/DraftDialog/DraftActionButton.js +8 -0
  68. package/lib/ui-kit/DraftDialog/DraftActionButton.js.map +1 -0
  69. package/lib/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  70. package/lib/ui-kit/DraftDialog/DraftDialog.js +41 -0
  71. package/lib/ui-kit/DraftDialog/DraftDialog.js.map +1 -0
  72. package/lib/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  73. package/lib/ui-kit/DraftDialog/EmptyDraftDialog.js +20 -0
  74. package/lib/ui-kit/DraftDialog/EmptyDraftDialog.js.map +1 -0
  75. package/lib/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  76. package/lib/ui-kit/DraftDialog/parseDraftTask.js +62 -0
  77. package/lib/ui-kit/DraftDialog/parseDraftTask.js.map +1 -0
  78. package/lib/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  79. package/lib/ui-kit/DraftDialog/useDraftDialog.js +13 -0
  80. package/lib/ui-kit/DraftDialog/useDraftDialog.js.map +1 -0
  81. package/lib/ui-kit/DraftDialog/utils.d.ts +138 -0
  82. package/lib/ui-kit/DraftDialog/utils.js +78 -0
  83. package/lib/ui-kit/DraftDialog/utils.js.map +1 -0
  84. package/mobile/bundle/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  85. package/mobile/bundle/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  86. package/mobile/bundle/api/RetailAPI/getTaskById.d.ts +6 -0
  87. package/mobile/bundle/api/RetailAPI/updateUserTask.d.ts +8 -8
  88. package/mobile/bundle/bundle.umd.js +252 -30
  89. package/mobile/bundle/bundle.umd.min.js +1 -1
  90. package/mobile/bundle/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  91. package/mobile/bundle/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  92. package/mobile/bundle/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  93. package/mobile/bundle/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  94. package/mobile/bundle/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  95. package/mobile/bundle/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  96. package/mobile/bundle/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  97. package/mobile/bundle/ui-kit/DraftDialog/utils.d.ts +138 -0
  98. package/mobile/dist/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  99. package/mobile/dist/api/RetailAPI/draftTasksKZO.js +9 -0
  100. package/mobile/dist/api/RetailAPI/draftTasksKZO.js.map +1 -0
  101. package/mobile/dist/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  102. package/mobile/dist/api/RetailAPI/getLastTaskStatus.js +9 -0
  103. package/mobile/dist/api/RetailAPI/getLastTaskStatus.js.map +1 -0
  104. package/mobile/dist/api/RetailAPI/getTaskById.d.ts +6 -0
  105. package/mobile/dist/api/RetailAPI/getTaskById.js +9 -0
  106. package/mobile/dist/api/RetailAPI/getTaskById.js.map +1 -0
  107. package/mobile/dist/api/RetailAPI/updateUserTask.d.ts +8 -8
  108. package/mobile/dist/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  109. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +32 -21
  110. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  111. package/mobile/dist/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  112. package/mobile/dist/components/ApplicationLeadForm/useSaveUserData.js +19 -0
  113. package/mobile/dist/components/ApplicationLeadForm/useSaveUserData.js.map +1 -0
  114. package/mobile/dist/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  115. package/mobile/dist/ui-kit/DraftDialog/DraftActionButton.js +10 -0
  116. package/mobile/dist/ui-kit/DraftDialog/DraftActionButton.js.map +1 -0
  117. package/mobile/dist/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  118. package/mobile/dist/ui-kit/DraftDialog/DraftDialog.js +43 -0
  119. package/mobile/dist/ui-kit/DraftDialog/DraftDialog.js.map +1 -0
  120. package/mobile/dist/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  121. package/mobile/dist/ui-kit/DraftDialog/EmptyDraftDialog.js +22 -0
  122. package/mobile/dist/ui-kit/DraftDialog/EmptyDraftDialog.js.map +1 -0
  123. package/mobile/dist/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  124. package/mobile/dist/ui-kit/DraftDialog/parseDraftTask.js +65 -0
  125. package/mobile/dist/ui-kit/DraftDialog/parseDraftTask.js.map +1 -0
  126. package/mobile/dist/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  127. package/mobile/dist/ui-kit/DraftDialog/useDraftDialog.js +16 -0
  128. package/mobile/dist/ui-kit/DraftDialog/useDraftDialog.js.map +1 -0
  129. package/mobile/dist/ui-kit/DraftDialog/utils.d.ts +138 -0
  130. package/mobile/dist/ui-kit/DraftDialog/utils.js +85 -0
  131. package/mobile/dist/ui-kit/DraftDialog/utils.js.map +1 -0
  132. package/mobile/lib/api/RetailAPI/draftTasksKZO.d.ts +26 -0
  133. package/mobile/lib/api/RetailAPI/draftTasksKZO.js +6 -0
  134. package/mobile/lib/api/RetailAPI/draftTasksKZO.js.map +1 -0
  135. package/mobile/lib/api/RetailAPI/getLastTaskStatus.d.ts +6 -0
  136. package/mobile/lib/api/RetailAPI/getLastTaskStatus.js +6 -0
  137. package/mobile/lib/api/RetailAPI/getLastTaskStatus.js.map +1 -0
  138. package/mobile/lib/api/RetailAPI/getTaskById.d.ts +6 -0
  139. package/mobile/lib/api/RetailAPI/getTaskById.js +6 -0
  140. package/mobile/lib/api/RetailAPI/getTaskById.js.map +1 -0
  141. package/mobile/lib/api/RetailAPI/updateUserTask.d.ts +8 -8
  142. package/mobile/lib/common.css +1 -1
  143. package/mobile/lib/components/ApplicationLeadForm/LeadFormState.d.ts +6 -6
  144. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +32 -21
  145. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  146. package/mobile/lib/components/ApplicationLeadForm/useSaveUserData.d.ts +9 -0
  147. package/mobile/lib/components/ApplicationLeadForm/useSaveUserData.js +16 -0
  148. package/mobile/lib/components/ApplicationLeadForm/useSaveUserData.js.map +1 -0
  149. package/mobile/lib/ui-kit/DraftDialog/DraftActionButton.d.ts +7 -0
  150. package/mobile/lib/ui-kit/DraftDialog/DraftActionButton.js +8 -0
  151. package/mobile/lib/ui-kit/DraftDialog/DraftActionButton.js.map +1 -0
  152. package/mobile/lib/ui-kit/DraftDialog/DraftDialog.d.ts +7 -0
  153. package/mobile/lib/ui-kit/DraftDialog/DraftDialog.js +41 -0
  154. package/mobile/lib/ui-kit/DraftDialog/DraftDialog.js.map +1 -0
  155. package/mobile/lib/ui-kit/DraftDialog/EmptyDraftDialog.d.ts +4 -0
  156. package/mobile/lib/ui-kit/DraftDialog/EmptyDraftDialog.js +20 -0
  157. package/mobile/lib/ui-kit/DraftDialog/EmptyDraftDialog.js.map +1 -0
  158. package/mobile/lib/ui-kit/DraftDialog/parseDraftTask.d.ts +3 -0
  159. package/mobile/lib/ui-kit/DraftDialog/parseDraftTask.js +62 -0
  160. package/mobile/lib/ui-kit/DraftDialog/parseDraftTask.js.map +1 -0
  161. package/mobile/lib/ui-kit/DraftDialog/useDraftDialog.d.ts +10 -0
  162. package/mobile/lib/ui-kit/DraftDialog/useDraftDialog.js +13 -0
  163. package/mobile/lib/ui-kit/DraftDialog/useDraftDialog.js.map +1 -0
  164. package/mobile/lib/ui-kit/DraftDialog/utils.d.ts +138 -0
  165. package/mobile/lib/ui-kit/DraftDialog/utils.js +78 -0
  166. package/mobile/lib/ui-kit/DraftDialog/utils.js.map +1 -0
  167. package/mobile/src/api/RetailAPI/draftTasksKZO.ts +33 -0
  168. package/mobile/src/api/RetailAPI/getLastTaskStatus.ts +21 -0
  169. package/mobile/src/api/RetailAPI/getTaskById.ts +12 -0
  170. package/mobile/src/api/RetailAPI/updateUserTask.ts +8 -8
  171. package/mobile/src/components/ApplicationLeadForm/LeadFormState.ts +6 -6
  172. package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +31 -33
  173. package/mobile/src/components/ApplicationLeadForm/useSaveUserData.ts +29 -0
  174. package/mobile/src/ui-kit/DraftDialog/DraftActionButton.tsx +32 -0
  175. package/mobile/src/ui-kit/DraftDialog/DraftDialog.tsx +91 -0
  176. package/mobile/src/ui-kit/DraftDialog/EmptyDraftDialog.tsx +47 -0
  177. package/mobile/src/ui-kit/DraftDialog/parseDraftTask.ts +123 -0
  178. package/mobile/src/ui-kit/DraftDialog/useDraftDialog.tsx +21 -0
  179. package/mobile/src/ui-kit/DraftDialog/utils.ts +148 -0
  180. package/package.json +1 -1
  181. package/src/api/RetailAPI/draftTasksKZO.ts +33 -0
  182. package/src/api/RetailAPI/getLastTaskStatus.ts +21 -0
  183. package/src/api/RetailAPI/getTaskById.ts +12 -0
  184. package/src/api/RetailAPI/updateUserTask.ts +8 -8
  185. package/src/components/ApplicationLeadForm/LeadFormState.ts +6 -6
  186. package/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +31 -33
  187. package/src/components/ApplicationLeadForm/useSaveUserData.ts +29 -0
  188. package/src/ui-kit/DraftDialog/DraftActionButton.tsx +32 -0
  189. package/src/ui-kit/DraftDialog/DraftDialog.tsx +91 -0
  190. package/src/ui-kit/DraftDialog/EmptyDraftDialog.tsx +47 -0
  191. package/src/ui-kit/DraftDialog/parseDraftTask.ts +123 -0
  192. package/src/ui-kit/DraftDialog/useDraftDialog.tsx +21 -0
  193. package/src/ui-kit/DraftDialog/utils.ts +148 -0
@@ -1,12 +1,14 @@
1
1
  import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
2
2
  import { createDraftTask } from '../../api/RetailAPI/createDraftTask';
3
3
  import { createUserProfile } from '../../api/RetailAPI/createUserProfile';
4
+ import { getLastTaskStatus } from '../../api/RetailAPI/getLastTaskStatus';
5
+ import { getTaskById } from '../../api/RetailAPI/getTaskById';
4
6
  import { updateUserProfile } from '../../api/RetailAPI/updateUserProfile';
5
7
  import { updateUserTask } from '../../api/RetailAPI/updateUserTask';
6
8
  import { getUpdateUserProfileData } from '../../api/RetailAPI/utils/getUpdateUserProfile';
7
- import { useSetter } from '../../hooks/useSetter';
8
9
  import { useConsentBkiDialog } from '../../ui-kit/ConsentBkiDialog/useConsentBkiDialog';
9
10
  import { useDialog } from '../../ui-kit/DialogManager/useDialog';
11
+ import { useDraftDialog } from '../../ui-kit/DraftDialog/useDraftDialog';
10
12
  import { useEsiaLoginDialog } from '../../ui-kit/EsiaLoginDialog/useEsiaLoginDialog';
11
13
  import { getObjectValidator } from '../../ui-kit/FormField/getObjectValidator';
12
14
  import { VerifyPhoneDialog } from '../../ui-kit/VerifyPhoneDialog/VerifyPhoneDialog';
@@ -17,7 +19,7 @@ import { type FieldDef } from './ApplicationLeadFormContent';
17
19
  import { CONSENTS } from './consents';
18
20
  import { getLeadFormTaskData } from './getLeadFormTaskData';
19
21
  import { type LeadFormState } from './LeadFormState';
20
- import { useLeadFormStore } from './useLeadFormStore';
22
+ import { useSaveUserData, type UserData } from './useSaveUserData';
21
23
 
22
24
  interface ApplicationLeadApiProps {
23
25
  inputs: FieldDef[];
@@ -25,37 +27,19 @@ interface ApplicationLeadApiProps {
25
27
  nextStepLink: string;
26
28
  }
27
29
 
28
- interface UserData {
29
- participantId: number;
30
- taskId: number;
31
- profileId: number;
32
- programId: string;
33
- }
34
-
35
30
  export const useApplicationLeadApi = ({
36
31
  inputs,
37
32
  programId,
38
33
  nextStepLink,
39
34
  }: ApplicationLeadApiProps) => {
40
35
  const [responseStatus, setResponseStatus] = useState<'OK' | 'Fail' | ''>('');
41
- const leadFormStore = useLeadFormStore();
42
- const saveForm = useSetter(leadFormStore, 'leadForm');
36
+ const saveUserData = useSaveUserData();
43
37
 
44
38
  const openEsiaLoginDialog = useEsiaLoginDialog(nextStepLink);
45
39
  const consentBkiDialog = useConsentBkiDialog(openEsiaLoginDialog);
46
40
  const verifyPhoneDialog = useDialog(VerifyPhoneDialog);
41
+ const draftDialog = useDraftDialog();
47
42
 
48
- const saveUserData = useCallback(
49
- ({ participantId, taskId, profileId, programId: programNumber }: UserData) => {
50
- leadFormStore.participantId = participantId;
51
- leadFormStore.taskId = taskId;
52
- leadFormStore.profileId = profileId;
53
- leadFormStore.programId = programNumber;
54
- },
55
- [],
56
- );
57
-
58
- // eslint-disable-next-line consistent-return
59
43
  const handleSubmit = useCallback(async (formData: LeadFormState) => {
60
44
  const feedbackValidator = objectValidator(getObjectValidator(inputs));
61
45
  if (!isValidationSuccess(feedbackValidator(formData))) {
@@ -68,17 +52,34 @@ export const useApplicationLeadApi = ({
68
52
  });
69
53
 
70
54
  if (profileId && formData?.phone) {
55
+ const sendCurrentTask = async () => {
56
+ await updateUserData({
57
+ programId,
58
+ profileId,
59
+ formData,
60
+ saveUserData,
61
+ });
62
+ verifyPhoneDialog.close();
63
+ consentBkiDialog.open(formData.phone, profileId);
64
+ };
71
65
  const handleSuccessVerify = async () => {
72
66
  try {
73
- await updateUserData({
74
- programId,
67
+ const lastTaskId = await getLastTaskStatus({
75
68
  profileId,
76
- formData,
77
- saveUserData,
78
- saveForm,
69
+ programId,
79
70
  });
80
- verifyPhoneDialog.close();
81
- consentBkiDialog.open(formData.phone, profileId);
71
+
72
+ if (lastTaskId) {
73
+ const task = await getTaskById({ taskId: lastTaskId });
74
+ verifyPhoneDialog.close();
75
+ draftDialog.open({
76
+ task,
77
+ isFromLead: true,
78
+ onClose: sendCurrentTask,
79
+ });
80
+ } else {
81
+ await sendCurrentTask();
82
+ }
82
83
  } catch {
83
84
  setResponseStatus('Fail');
84
85
  }
@@ -110,13 +111,11 @@ const updateUserData = async ({
110
111
  profileId,
111
112
  formData,
112
113
  saveUserData,
113
- saveForm,
114
114
  }: {
115
115
  programId: string;
116
116
  profileId: number;
117
117
  formData: LeadFormState;
118
118
  saveUserData: (userData: UserData) => void;
119
- saveForm: (formData: LeadFormState) => void;
120
119
  }) => {
121
120
  const transformedForm = transformOtherConsentsField(formData);
122
121
 
@@ -140,8 +139,7 @@ const updateUserData = async ({
140
139
  console.log(ex);
141
140
  }
142
141
 
143
- saveUserData({ participantId, taskId, profileId, programId });
144
- saveForm(formData);
142
+ saveUserData({ participantId, taskId, profileId, programId, formData });
145
143
  };
146
144
 
147
145
  const transformOtherConsentsField = (formData: LeadFormState): LeadFormState => {
@@ -0,0 +1,29 @@
1
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { useSetter } from '../../hooks/useSetter';
3
+ import { type LeadFormState } from './LeadFormState';
4
+ import { useLeadFormStore } from './useLeadFormStore';
5
+
6
+ export interface UserData {
7
+ participantId: number;
8
+ taskId: number;
9
+ profileId: number;
10
+ programId: string;
11
+ formData: LeadFormState;
12
+ }
13
+ export const useSaveUserData = () => {
14
+ const leadFormStore = useLeadFormStore();
15
+ const saveForm = useSetter(leadFormStore, 'leadForm');
16
+
17
+ const saveUserData = useCallback(
18
+ ({ participantId, taskId, profileId, formData, programId: programNumber }: UserData) => {
19
+ leadFormStore.participantId = participantId;
20
+ leadFormStore.taskId = taskId;
21
+ leadFormStore.profileId = profileId;
22
+ leadFormStore.programId = programNumber;
23
+ saveForm(formData);
24
+ },
25
+ [],
26
+ );
27
+
28
+ return saveUserData;
29
+ };
@@ -0,0 +1,32 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { noop } from '../../utils/noop';
3
+ import { Heading } from '../Heading/Heading';
4
+ import { Img } from '../Img/Img';
5
+ import { Paragraph } from '../Paragraph/Paragraph';
6
+
7
+ export interface DraftActionButtonProps {
8
+ title: string;
9
+ icon: string;
10
+ description?: string;
11
+ onClick?: () => void;
12
+ }
13
+
14
+ export const DraftActionButton = JSX<DraftActionButtonProps>(
15
+ ({ title, icon, description, onClick = noop }) => (
16
+ <button
17
+ className="flex gap-lg items-center border border-gray rounded-md cursor-pointer p-4 hover:border-green"
18
+ type="button"
19
+ onClick={onClick}
20
+ >
21
+ <Img image={{ src: icon }} width="78" height="78" />
22
+ <div>
23
+ <Heading className="text-left" title={title} headingType="h5" />
24
+ {description ? (
25
+ <Paragraph color="text-secondary-text" size="text-m">
26
+ {description}
27
+ </Paragraph>
28
+ ) : null}
29
+ </div>
30
+ </button>
31
+ ),
32
+ );
@@ -0,0 +1,91 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type Task } from '../../api/RetailAPI/draftTasksKZO';
4
+ import { useLeadFormStore } from '../../components/ApplicationLeadForm/useLeadFormStore';
5
+ import { locationNavigator } from '../../external/locationNavigator';
6
+ import { useSetter } from '../../hooks/useSetter';
7
+ import { noop } from '../../utils/noop';
8
+ import { Button } from '../Button/Button';
9
+ import { Dialog } from '../DialogManager/Dialog';
10
+ import { Heading } from '../Heading/Heading';
11
+ import { DraftActionButton } from './DraftActionButton';
12
+ import { parseDraftTask } from './parseDraftTask';
13
+ import { creditCodesToProgrammIdMap, creditProgramCodeToProductIdMap } from './utils';
14
+
15
+ export interface DraftDialogProps {
16
+ task: Task;
17
+ isFromLead?: boolean;
18
+ onClose?: () => void;
19
+ }
20
+
21
+ export const DraftDialog = JSX<DraftDialogProps>(function ({
22
+ task,
23
+ isFromLead = false,
24
+ onClose = noop,
25
+ }) {
26
+ const leadFormStore = useLeadFormStore();
27
+ const saveForm = useSetter(leadFormStore, 'leadForm');
28
+ const navigator = locationNavigator();
29
+
30
+ const { participants, creditProgram, id: taskId } = task;
31
+
32
+ const programmId: string = creditProgramCodeToProductIdMap[creditProgram.code];
33
+ const isCredit = Boolean(creditCodesToProgrammIdMap[creditProgram.code]);
34
+ const nextStepLink = isCredit ? '/credit-lead' : '/credit-card-lead';
35
+
36
+ const { name, midname, id: participantId, profile } = participants[0];
37
+
38
+ const handleGoToDraft = useCallback(() => {
39
+ const taskFromDraft = parseDraftTask(task);
40
+ leadFormStore.participantId = participantId;
41
+ leadFormStore.taskId = taskId;
42
+ leadFormStore.profileId = profile?.id;
43
+ leadFormStore.programId = programmId;
44
+ saveForm(taskFromDraft);
45
+ navigator.assign(nextStepLink);
46
+ }, []);
47
+
48
+ const handleGoToNewTask = useCallback(() => {
49
+ navigator.assign(isCredit ? '/natural/loans/all-goals' : '/natural/creditcards/svoya');
50
+ }, []);
51
+
52
+ const handleGoToMainPage = useCallback(() => {
53
+ navigator.assign('/');
54
+ }, []);
55
+
56
+ const appeal = name && midname ? `${name} ${midname}, ` : '';
57
+
58
+ return (
59
+ <Dialog
60
+ className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg py-0 px-5xl"
61
+ onClose={onClose}
62
+ >
63
+ <div className="flex flex-col gap-lg">
64
+ <Heading
65
+ className="whitespace-pre-wrap"
66
+ title={`${appeal}мы нашли черновик вашей заявки.\nПродолжите заполнение?`}
67
+ headingType="h5"
68
+ />
69
+ <DraftActionButton
70
+ title="Перейти к черновику"
71
+ icon="api/v1/wcms-file-storage/72d06937-5d8b-4996-9503-52389b93919e/file.svg"
72
+ description="Продолжайте заполнять заявку из черновика"
73
+ onClick={handleGoToDraft}
74
+ />
75
+ <DraftActionButton
76
+ title={isFromLead ? 'Продолжить заполнение текущей заявки' : 'Заполнить новую заявку'}
77
+ icon="api/v1/wcms-file-storage/796c3e8d-341a-480b-b52f-3aa5784ed623/file.svg"
78
+ onClick={isFromLead ? onClose : handleGoToNewTask}
79
+ />
80
+ <Button
81
+ type="button"
82
+ version="secondary"
83
+ className="w-full text-h5"
84
+ onClick={handleGoToMainPage}
85
+ >
86
+ Вернуться на главную
87
+ </Button>
88
+ </div>
89
+ </Dialog>
90
+ );
91
+ });
@@ -0,0 +1,47 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { locationNavigator } from '../../external/locationNavigator';
4
+ import { noop } from '../../utils/noop';
5
+ import { Button } from '../Button/Button';
6
+ import { Dialog } from '../DialogManager/Dialog';
7
+ import { Heading } from '../Heading/Heading';
8
+ import { Paragraph } from '../Paragraph/Paragraph';
9
+
10
+ export interface EmptyDraftDialogProps {
11
+ onClose?: () => void;
12
+ }
13
+
14
+ export const EmptyDraftDialog = JSX<EmptyDraftDialogProps>(function ({ onClose = noop }) {
15
+ const navigator = locationNavigator();
16
+
17
+ const handleGoNewTask = useCallback(() => {
18
+ navigator.assign('/natural/loans/all-goals');
19
+ }, []);
20
+
21
+ const handleGoMainPage = useCallback(() => {
22
+ navigator.assign('/');
23
+ }, []);
24
+
25
+ return (
26
+ <Dialog
27
+ className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg py-0 px-5xl"
28
+ onClose={onClose}
29
+ >
30
+ <div className="flex flex-col gap-lg">
31
+ <Heading className="text-center" title="Заявки не найдены" headingType="h3" />
32
+ <Paragraph size="text-l" align="text-center">
33
+ По данному номеру не найдено незавершенных заявок. Вы можете заполнить новую заявку или
34
+ вернуться на главную страницу
35
+ </Paragraph>
36
+
37
+ <Button type="button" className="w-full" onClick={handleGoNewTask}>
38
+ Заполнить новую заявку
39
+ </Button>
40
+
41
+ <Button type="button" version="secondary" className="w-full" onClick={handleGoMainPage}>
42
+ Вернуться на главную
43
+ </Button>
44
+ </div>
45
+ </Dialog>
46
+ );
47
+ });
@@ -0,0 +1,123 @@
1
+ /* eslint-disable max-lines-per-function */
2
+ import { type Task } from '../../api/RetailAPI/draftTasksKZO';
3
+ import { type LeadFormState } from '../../components/ApplicationLeadForm/LeadFormState';
4
+ import {
5
+ getParticipantAddresses,
6
+ getParticipantContacts,
7
+ getParticipantGender,
8
+ getParticipantIncomes,
9
+ getSelectValue,
10
+ } from './utils';
11
+
12
+ export const parseDraftTask = (task: Task): LeadFormState => {
13
+ const participant = task.participants[0];
14
+
15
+ const { loanAmount: moneyValue, creditPeriod: monthsValue, paymentTypeCd } = task;
16
+
17
+ const {
18
+ currencyCode: currency,
19
+ paymentSystemTypeCd: paymentSystem,
20
+ classCard: cardCategory,
21
+ codeWord,
22
+ birthDate: limitedBirthday,
23
+ midname: middleName,
24
+ name,
25
+ surname,
26
+ birthPlace,
27
+ dulIssueDate: dulIssueDateField,
28
+ dulIssuedBy,
29
+ dulNumber,
30
+ dulSerie,
31
+ dulSubdivisionCode,
32
+ educationLevelCd: education,
33
+ registrationDate: participantDateRegistration,
34
+ houseTypeCd: housing,
35
+ genderCd,
36
+ participantContacts = [],
37
+ participantAddresses = [],
38
+ employmentContractDate: beginDate,
39
+ employmentTypeCd: employment,
40
+ organizationName,
41
+ organizationInn: inn,
42
+ organizationActivityTypeCd: employerActivities,
43
+ organizationTypeCd: organization,
44
+ organizationKindCd: employerOrganization,
45
+ employeesNumberCd: amountWorkers,
46
+ opf: legalForm,
47
+ seniority: generalSeniority,
48
+ generalSeniority: experience5Years,
49
+ jobsNumber,
50
+ lastWorkDuration: lastJobExperience,
51
+ positionCd: positionOrganization,
52
+ maritalStatusCd: familyStatus,
53
+ childrenDependents: children,
54
+ totalDependents: familyMembers,
55
+ otherDependents: dependents,
56
+ militaryStatusCd: conscription,
57
+ participantIncomes,
58
+ snils,
59
+ armyIdFlg,
60
+ bankruptcyFlg,
61
+ shareholderFlg,
62
+ nameLegalEntity: legalEntityName,
63
+ creditInRshbCd,
64
+ payrollCardRshbFlg: isInsurance,
65
+ consentInsuranceFlg: isSalaryClient,
66
+ } = participant;
67
+
68
+ return {
69
+ currency: currency?.key,
70
+ paymentSystem,
71
+ cardCategory: getSelectValue(cardCategory),
72
+ codeWord,
73
+ limitedBirthday,
74
+ middleName,
75
+ name,
76
+ surname,
77
+ birthPlace,
78
+ dulIssueDateField,
79
+ dulIssuedBy,
80
+ dulNumber,
81
+ dulSerie,
82
+ dulSubdivisionCode,
83
+ education: getSelectValue(education),
84
+ participantDateRegistration,
85
+ housing: getSelectValue(housing),
86
+ beginDate,
87
+ employment: getSelectValue(employment),
88
+ organizationName,
89
+ inn,
90
+ employerActivities: getSelectValue(employerActivities),
91
+ organization: getSelectValue(organization),
92
+ employerOrganization: getSelectValue(employerOrganization),
93
+ amountWorkers: getSelectValue(amountWorkers),
94
+ legalForm,
95
+ generalSeniority: generalSeniority?.toString(),
96
+ experience5Years: experience5Years?.toString(),
97
+ jobsNumber: jobsNumber?.toString(),
98
+ lastJobExperience: lastJobExperience?.toString(),
99
+ positionOrganization: getSelectValue(positionOrganization),
100
+ familyStatus: getSelectValue(familyStatus),
101
+ children: children?.toString(),
102
+ familyMembers: familyMembers?.toString(),
103
+ dependents: dependents?.toString(),
104
+ conscription: getSelectValue(conscription),
105
+ snils,
106
+ armyIdFlg,
107
+ bankruptcyFlg,
108
+ shareholderFlg,
109
+ legalEntityName,
110
+ creditInRshbCd: getSelectValue(creditInRshbCd),
111
+ calculator: {
112
+ isInsurance,
113
+ isSalaryClient,
114
+ moneyValue,
115
+ monthsValue,
116
+ isAnnuity: paymentTypeCd?.key === 'ANNUITY',
117
+ },
118
+ ...getParticipantIncomes(participantIncomes),
119
+ ...getParticipantAddresses(participantAddresses),
120
+ ...getParticipantContacts(participantContacts),
121
+ ...getParticipantGender(genderCd),
122
+ };
123
+ };
@@ -0,0 +1,21 @@
1
+ import { type Task } from '../../api/RetailAPI/draftTasksKZO';
2
+ import { useDialog } from '../DialogManager/useDialog';
3
+ import { DraftDialog } from './DraftDialog';
4
+ import { EmptyDraftDialog } from './EmptyDraftDialog';
5
+
6
+ type useDraftDialogOpenProps = {
7
+ task?: Task;
8
+ isFromLead?: boolean;
9
+ onClose?: () => void;
10
+ };
11
+
12
+ export const useDraftDialog = () => {
13
+ const { open: openDraftDialog } = useDialog(DraftDialog);
14
+ const { open: openEmptyDraftDialog } = useDialog(EmptyDraftDialog);
15
+
16
+ return {
17
+ open: ({ task, isFromLead, onClose }: useDraftDialogOpenProps) => {
18
+ task ? openDraftDialog({ task, isFromLead, onClose }) : openEmptyDraftDialog({});
19
+ },
20
+ };
21
+ };
@@ -0,0 +1,148 @@
1
+ /* eslint-disable camelcase */
2
+ import { type LeadProps } from '../../api/RetailAPI/model/LeadFormData';
3
+ import { type Participant } from '../../api/RetailAPI/updateUserTask';
4
+ import { type Option } from '../Select/Option';
5
+
6
+ export const enum EContactType {
7
+ MainPhone = 'MAIN_PHONE',
8
+ SecondPhone = 'SECOND_PHONE',
9
+ HomePhoneFact = 'HOME_PHONE_FACT',
10
+ HomePhoneReg = 'HOME_PHONE_REG',
11
+ OrganizationPhone = 'ORGANIZATION_PHONE',
12
+ EMail = 'EMAIL',
13
+ }
14
+
15
+ export const enum EAddressType {
16
+ REGISTRATION = 'REGISTRATION',
17
+ RESIDENTAL = 'RESIDENTAL',
18
+ WORK = 'WORK',
19
+ }
20
+
21
+ export const enum EIncomesType {
22
+ INCOME_AVERAGE = 'INCOME_AVERAGE',
23
+ MANDATORY_PAYMENTS = 'MANDATORY_PAYMENTS',
24
+ ADDITIONAL_INCOME = 'ADDITIONAL_INCOME',
25
+ OTHER_INCOME = 'OTHER_INCOME',
26
+ OTHER_PAYMENTS = 'OTHER_PAYMENTS',
27
+ RENTAL_INCOME = 'RENTAL_INCOME',
28
+ WAGES = 'WAGES',
29
+ RETIREMENT_INCOME = 'RETIREMENT_INCOME',
30
+ }
31
+
32
+ export const creditCodesToProgrammIdMap = {
33
+ credit_cash: '10',
34
+ credit_cash_single_doc: '28',
35
+ credit_mcx: '39',
36
+ family_offer_credit: '41',
37
+ gas_engine_fuel: '33',
38
+ pension_credit: '12',
39
+ ref_credit: '11',
40
+ ref_credit_single_doc: '29',
41
+ self_employed: '34',
42
+ summer_cash: '35',
43
+ summer_cash_pens: '36',
44
+ };
45
+
46
+ export const cardCodesToProgrammIdMap = {
47
+ amur_card: '14',
48
+ owner_card: '13',
49
+ travel_card: '15',
50
+ };
51
+
52
+ export const creditProgramCodeToProductIdMap = {
53
+ ...creditCodesToProgrammIdMap,
54
+ ...cardCodesToProgrammIdMap,
55
+ };
56
+
57
+ export const getParticipantIncomes = (participantIncomes: Participant['participantIncomes']) => {
58
+ const wages = participantIncomes?.find(
59
+ (contact) => contact.incomeTypeCd.key === EIncomesType.WAGES,
60
+ )?.value;
61
+ const mandatoryPayments = participantIncomes?.find(
62
+ (contact) => contact.incomeTypeCd.key === EIncomesType.MANDATORY_PAYMENTS,
63
+ )?.value;
64
+ const incomeAverage = participantIncomes?.find(
65
+ (contact) => contact.incomeTypeCd.key === EIncomesType.INCOME_AVERAGE,
66
+ )?.value;
67
+ const additionalIncome = participantIncomes?.find(
68
+ (contact) => contact.incomeTypeCd.key === EIncomesType.ADDITIONAL_INCOME,
69
+ )?.value;
70
+ const otherIncome = participantIncomes?.find(
71
+ (contact) => contact.incomeTypeCd.key === EIncomesType.OTHER_INCOME,
72
+ )?.value;
73
+ const otherPayments = participantIncomes?.find(
74
+ (contact) => contact.incomeTypeCd.key === EIncomesType.OTHER_PAYMENTS,
75
+ )?.value;
76
+ const rentalIncome = participantIncomes?.find(
77
+ (contact) => contact.incomeTypeCd.key === EIncomesType.RENTAL_INCOME,
78
+ )?.value;
79
+ const retirementIncome = participantIncomes?.find(
80
+ (contact) => contact.incomeTypeCd.key === EIncomesType.RETIREMENT_INCOME,
81
+ )?.value;
82
+
83
+ return {
84
+ wages,
85
+ mandatoryPayments,
86
+ incomeAverage,
87
+ additionalIncome,
88
+ otherIncome,
89
+ otherPayments,
90
+ rentalIncome,
91
+ retirementIncome,
92
+ };
93
+ };
94
+
95
+ export const getParticipantAddresses = (
96
+ participantAddresses: Participant['participantAddresses'],
97
+ ) => {
98
+ const addressRegistration = participantAddresses?.find(
99
+ (address) => address.addressType.key === EAddressType.REGISTRATION,
100
+ );
101
+ const addressFact = participantAddresses?.find(
102
+ (address) => address.addressType.key === EAddressType.RESIDENTAL,
103
+ );
104
+ const organizationAddress = participantAddresses?.find(
105
+ (address) => address.addressType.key === EAddressType.WORK,
106
+ );
107
+
108
+ return {
109
+ addressRegistration,
110
+ addressFact,
111
+ organizationAddress,
112
+ };
113
+ };
114
+
115
+ export const getParticipantContacts = (participantContacts: Participant['participantContacts']) => {
116
+ const email = participantContacts?.find(
117
+ (contact) => contact.contactTypeCd.key === EContactType.EMail,
118
+ )?.value;
119
+ const phone = participantContacts?.find(
120
+ (contact) => contact.contactTypeCd.key === EContactType.MainPhone,
121
+ )?.value;
122
+ const organizationPhone = participantContacts?.find(
123
+ (contact) => contact.contactTypeCd.key === EContactType.OrganizationPhone,
124
+ )?.value;
125
+
126
+ return {
127
+ email,
128
+ phone,
129
+ organizationPhone,
130
+ };
131
+ };
132
+
133
+ export const getParticipantGender = (gender: Participant['genderCd']) => {
134
+ return gender?.key
135
+ ? {
136
+ sex: gender.key === 'MAN' ? 'male' : 'female',
137
+ }
138
+ : null;
139
+ };
140
+
141
+ export const getSelectValue = (option?: LeadProps): Option | undefined => {
142
+ return option?.key
143
+ ? {
144
+ key: option.key,
145
+ text: option.value,
146
+ }
147
+ : undefined;
148
+ };