1
+ import extend from '../utilz/singleUser.js'
2
+ import models from '../models/Index.js'
3
+ import docModifier from '../utilz/doc-modifier.js'
4
+
5
+ // import {
6
+ // noteError,
7
+ // noteLoading,
8
+ // noteSuccess
9
+ // } from './notifications.js'
10
+
11
+
12
+ export default {
13
+ get : {
14
+ //GET ALL ITEMS!
15
+ dashboard ( context ) {
16
+
17
+ models . Item . getAll ( )
18
+ . then ( ( res ) => {
19
+ let articles = res . docs . map ( docModifier ) ;
20
+
21
+ let JavaScriptArticles = [ ] ;
22
+ let CSharpArticles = [ ] ;
23
+ let JavaArticles = [ ] ;
24
+ let PytonArticles = [ ] ;
25
+
26
+ for ( let i = 0 ; i < articles . length ; i ++ ) {
27
+ let categoryArticle = articles [ i ] . category ;
28
+
29
+ if ( categoryArticle === 'JavaScript' ) {
30
+ JavaScriptArticles . push ( articles [ i ] )
31
+ JavaScriptArticles = JavaScriptArticles . sort ( ( a , b ) => a . title . localeCompare ( b . title ) )
32
+ } else if ( categoryArticle === 'C#' ) {
33
+ CSharpArticles . push ( articles [ i ] )
34
+ CSharpArticles = CSharpArticles . sort ( ( a , b ) => a . title . localeCompare ( b . title ) )
35
+ } else if ( categoryArticle === 'Java' ) {
36
+ JavaArticles . push ( articles [ i ] )
37
+ JavaArticles = JavaArticles . sort ( ( a , b ) => a . title . localeCompare ( b . title ) )
38
+ } else if ( categoryArticle === 'Pyton' ) {
39
+ PytonArticles . push ( articles [ i ] )
40
+ PytonArticles = PytonArticles . sort ( ( a , b ) => a . title . localeCompare ( b . title ) )
41
+ }
42
+ }
43
+
44
+ context . JavaScriptArticles = JavaScriptArticles ;
45
+ context . JavaArticles = JavaArticles
46
+ context . CSharpArticles = CSharpArticles
47
+ context . PytonArticles = PytonArticles
48
+
49
+ extend ( context ) . then ( function ( ) {
50
+ this . partial ( '../templates/item/dashboard.hbs' )
51
+ } )
52
+ } )
53
+ . catch ( ( err ) => console . error ( err ) )
54
+ } ,
55
+ //CREATE FORM FOR NEW ITEM!
56
+ create ( context ) {
57
+ extend ( context ) . then ( function ( ) {
58
+ this . partial ( '../templates/item/create.hbs' )
59
+ } )
60
+ } ,
61
+ //GET A SINGLE ITEM VIEW!
62
+ details ( context ) {
63
+ let {
64
+ id
65
+ } = context . params
66
+
67
+ models . Item . getSingle ( id )
68
+ . then ( ( res ) => {
69
+ let currentArticle = docModifier ( res )
70
+ context . currentArticle = currentArticle
71
+
72
+ //Check for author of item!
73
+ if ( currentArticle . uid !== localStorage . getItem ( 'userId' ) ) {
74
+ context . isAuthor = false ;
75
+ } else {
76
+ context . isAuthor = true ;
77
+ }
78
+
79
+ extend ( context ) . then ( function ( ) {
80
+ this . partial ( '../templates/item/details.hbs' )
81
+ } )
82
+ } )
83
+ . catch ( ( err ) => console . error ( err ) )
84
+ } ,
85
+ //LOAD EDIT FORM
86
+ edit ( context ) {
87
+
88
+ let {
89
+ id
90
+ } = context . params
91
+ context . id = id
92
+
93
+ extend ( context ) . then ( function ( ) {
94
+ this . partial ( '../templates/item/edit.hbs' )
95
+
96
+ //LOADING DATE FOR EDITED ITEM!
97
+ models . Item . getSingle ( id )
98
+ . then ( ( res ) => {
99
+
100
+ let article = docModifier ( res )
101
+ let $title = document . querySelector ( "#title" )
102
+ $title . value = article . title
103
+ let $category = document . querySelector ( "#category" )
104
+ $category . value = article . category
105
+ let $content = document . querySelector ( "#content" )
106
+ $content . value = article . content
107
+ } )
108
+ } )
109
+ } ,
110
+ } ,
111
+ post : {
112
+ //CREATE NEW ITEM!
113
+ create ( context ) {
114
+
115
+ let possibleCategories = [ 'JavaScript' , 'C#' , 'Java' , 'Pyton' ]
116
+ let data = {
117
+ ...context . params ,
118
+ uid : localStorage . getItem ( 'userId' ) ,
119
+ creator : localStorage . getItem ( 'userEmail' )
120
+ }
121
+
122
+ if ( possibleCategories . includes ( data . category ) ) {
123
+ models . Item . create ( data )
124
+ . then ( ( ) => {
125
+ context . redirect ( '#/article/dashboard' )
126
+ } )
127
+ . catch ( ( err ) => console . error ( err ) )
128
+ } else {
129
+ alert ( 'Please choose valid category!' )
130
+ context . redirect ( '#/article/create' )
131
+ }
132
+ }
133
+
134
+ } ,
135
+ // DELETE ITEM
136
+ del : {
137
+ close ( context ) {
138
+ let {
139
+ id
140
+ } = context . params
141
+ if ( confirm ( 'Do you want to delete this article?' ) ) {
142
+ models . Item . close ( id )
143
+ . then ( ( res ) => {
144
+
145
+ context . redirect ( '#/article/dashboard' )
146
+ //noteSuccess('You closed the article successfully.')
147
+ } )
148
+ . catch ( ( err ) => console . error ( err ) )
149
+ }
150
+ }
151
+
152
+ } ,
153
+ //UPDATE ITEM!
154
+ put : {
155
+ edit ( context ) {
156
+ let {
157
+ id,
158
+ title,
159
+ category,
160
+ content
161
+ } = context . params
162
+
163
+ models . Item . getSingle ( id )
164
+ . then ( ( res ) => {
165
+
166
+ let article = docModifier ( res )
167
+ article . title = title ;
168
+ article . category = category ;
169
+ article . content = content
170
+
171
+ return models . Item . edit ( id , article )
172
+ } )
173
+ . then ( ( res ) => {
174
+
175
+ context . redirect ( '#/article/dashboard' )
176
+ //noteSuccess('Trek edited successfully.')
177
+ } )
178
+ . catch ( ( err ) => console . error ( err ) )
179
+ } ,
180
+ // like(context) {
181
+ // let {
182
+ // id
183
+ // } = context.params
184
+
185
+ // noteLoading('block')
186
+ // models.Item.getSingle(id)
187
+ // .then((res) => {
188
+ // let trek = docModifier(res)
189
+ // trek.likes += 1;
190
+
191
+ // // if (!cause.donors.includes(localStorage.getItem('userEmail'))) {
192
+ // // cause.donors.push(localStorage.getItem('userEmail'))
193
+ // // }
194
+ // return models.Item.edit(id, trek)
195
+ // })
196
+ // .then((res) => {
197
+
198
+ // noteLoading('none')
199
+ // context.redirect('#/treks/dashboard')
200
+ // noteSuccess('You liked the trek successfully.')
201
+ // })
202
+ // .catch((err) => console.error(err))
203
+
204
+ // }
205
+ }
206
+ }
0 commit comments