1
- import { Base } from './_Base' ;
2
1
import { ObjectID } from 'bson' ;
3
2
3
+ import { Base } from './_Base' ;
4
+
4
5
class WorkingGroupsRequests extends Base {
5
6
constructor ( ) {
6
7
super ( 'working-groups-requests' ) ;
@@ -16,8 +17,6 @@ class WorkingGroupsRequests extends Base {
16
17
mailData . _id = _id ;
17
18
18
19
const data = this . findOne ( { _id : workingGroupRequestId } ) ;
19
- console . log ( workingGroupRequestId ) ;
20
- console . log ( data ) ;
21
20
22
21
if ( data . mails ) {
23
22
let internalNum = 0 ;
@@ -40,27 +39,29 @@ class WorkingGroupsRequests extends Base {
40
39
return _id ;
41
40
}
42
41
43
- // addAnswerToRequest(_id, mailIndex, answer) {
44
- // const data = this.findOne({ _id });
45
- // if (mailIndex < 0 && mailIndex >= data.mails.length) {
46
- // return;
47
- // }
48
- // data._updatedAt = new Date();
49
- // data.mails[mailIndex].answers = data.mails[mailIndex].answers ? [...data.mails[mailIndex].answers, answer] : [answer];
50
- // return this.update({ _id }, { $set: { ...data } });
51
- // }
52
-
53
- addAnswerToRequest ( workingGroupRequestId , mailId , answerData ) {
42
+ addAnswerToRequest ( workingGroupRequestId , _mailId , answerData ) {
43
+ const mailId = _mailId === null ? 'noAnswer' : _mailId ;
44
+ const newMailId = mailId === 'noAnswer' ? mailId : '' ;
54
45
const _id = new ObjectID ( ) . toHexString ( ) ;
55
46
answerData . _id = _id ;
56
47
57
48
const data = this . findOne ( { _id : workingGroupRequestId } ) ;
49
+ data . _updatedAt = new Date ( ) ;
58
50
59
- if ( data . mails ) {
60
- data . _updatedAt = new Date ( ) ;
51
+ const newMailData = {
52
+ _id : mailId ,
53
+ description : '' ,
54
+ number : null ,
55
+ ts : new Date ( ) ,
56
+ inum : 1 ,
57
+ answers : [ answerData ] ,
58
+ } ;
61
59
60
+ if ( data . mails ) {
61
+ let isAdded = false ;
62
62
data . mails . forEach ( ( mail ) => {
63
63
if ( mail . _id === mailId ) {
64
+ isAdded = true ;
64
65
if ( mail . answers ) {
65
66
let internalNum = 0 ;
66
67
mail . answers . forEach ( ( answer ) => {
@@ -77,11 +78,36 @@ class WorkingGroupsRequests extends Base {
77
78
}
78
79
}
79
80
} ) ;
81
+ if ( ! isAdded ) {
82
+ data . mails = [ ...data . mails , newMailData ] ;
83
+ }
84
+ } else {
85
+ data . mails = [ newMailData ] ;
86
+ }
87
+
88
+ this . update ( { _id : workingGroupRequestId } , { $set : { ...data } } ) ;
89
+ return { answerId : _id , mailId : newMailId } ;
90
+ }
91
+
92
+ addWorkingGroupRequestAnswerFile ( workingGroupRequestId , mailId , answerId , fileData ) {
93
+ const data = this . findOne ( { _id : workingGroupRequestId } ) ;
94
+ const indexMail = data . mails ? data . mails . findIndex ( ( mail ) => mail . _id === mailId ) : - 1 ;
95
+ if ( indexMail < 0 ) {
96
+ return ;
97
+ }
80
98
81
- this . update ( { _id : workingGroupRequestId } , { $set : { ...data } } ) ;
99
+ const indexAnswer = data . mails [ indexMail ] . answers ? data . mails [ indexMail ] . answers . findIndex ( ( answer ) => answer . _id === answerId ) : - 1 ;
100
+ if ( indexAnswer < 0 ) {
101
+ return ;
82
102
}
83
103
84
- return _id ;
104
+ data . _updatedAt = new Date ( ) ;
105
+ if ( data . mails [ indexMail ] . answers [ indexAnswer ] . documents ) {
106
+ data . mails [ indexMail ] . answers [ indexAnswer ] . documents . push ( fileData ) ;
107
+ } else {
108
+ data . mails [ indexMail ] . answers [ indexAnswer ] . documents = [ fileData ] ;
109
+ }
110
+ return this . update ( { _id : workingGroupRequestId } , { $set : { ...data } } ) ;
85
111
}
86
112
87
113
// UPDATE
@@ -90,8 +116,17 @@ class WorkingGroupsRequests extends Base {
90
116
return this . update ( { _id } , { $set : { ...data } } ) ;
91
117
}
92
118
93
- updateWorkingGroupRequestMail ( _id , data ) {
94
-
119
+ updateWorkingGroupRequestMail ( workingGroupRequestId , updateMailData ) {
120
+ const data = this . findOne ( { _id : workingGroupRequestId } ) ;
121
+ if ( data . mails ) {
122
+ const index = data . mails . findIndex ( ( mail ) => mail . _id === updateMailData . _id ) ;
123
+ if ( index < 0 ) {
124
+ return ;
125
+ }
126
+ data . mails [ index ] = updateMailData ;
127
+ data . _updatedAt = new Date ( ) ;
128
+ return this . update ( { _id : workingGroupRequestId } , { $set : { ...data } } ) ;
129
+ }
95
130
}
96
131
97
132
readAnswer ( _id , mailId , answerId ) {
0 commit comments