1
+ const Task = require ( '../models/taskModel' )
2
+ const mongoose = require ( 'mongoose' )
3
+
4
+ // get all tasks
5
+ const getTasks = async ( req , res ) => {
6
+ const user_id = req . user . _id
7
+
8
+ const tasks = await Task . find ( { user_id} )
9
+
10
+ res . status ( 200 ) . json ( tasks )
11
+ }
12
+
13
+ // get a single task
14
+ const getTask = async ( req , res ) => {
15
+ const { id } = req . params
16
+
17
+ if ( ! mongoose . Types . ObjectId . isValid ( id ) ) {
18
+ return res . status ( 404 ) . json ( { error : 'No such task' } )
19
+ }
20
+
21
+ const task = await Task . findById ( id )
22
+
23
+ if ( ! task ) {
24
+ return res . status ( 404 ) . json ( { error : 'No such task' } )
25
+ }
26
+
27
+ res . status ( 200 ) . json ( task )
28
+ }
29
+
30
+
31
+ // create new task
32
+ const createTask = async ( req , res ) => {
33
+ const { title, description, progress} = req . body
34
+
35
+ let emptyFields = [ ]
36
+
37
+ if ( ! title ) {
38
+ emptyFields . push ( 'title' )
39
+ }
40
+ if ( ! description ) {
41
+ emptyFields . push ( 'description' )
42
+ }
43
+ if ( ! progress ) {
44
+ emptyFields . push ( 'progress' )
45
+ }
46
+ if ( emptyFields . length > 0 ) {
47
+ return res . status ( 400 ) . json ( { error : 'Please fill in all the fields' , emptyFields } )
48
+ }
49
+
50
+ // add doc to db
51
+ try {
52
+ const user_id = req . user . _id
53
+ const task = await Task . create ( { title, description, progress, user_id} )
54
+ res . status ( 200 ) . json ( task )
55
+ } catch ( error ) {
56
+ res . status ( 400 ) . json ( { error : error . message } )
57
+ }
58
+ }
59
+
60
+ // delete a task
61
+ const deleteTask = async ( req , res ) => {
62
+ const { id } = req . params
63
+
64
+ if ( ! mongoose . Types . ObjectId . isValid ( id ) ) {
65
+ return res . status ( 404 ) . json ( { error : 'No such task' } )
66
+ }
67
+
68
+ const task = await Task . findOneAndDelete ( { _id : id } )
69
+
70
+ if ( ! task ) {
71
+ return res . status ( 400 ) . json ( { error : 'No such task' } )
72
+ }
73
+
74
+ res . status ( 200 ) . json ( task )
75
+ }
76
+
77
+ // update a task
78
+ const updateTask = async ( req , res ) => {
79
+ const { id } = req . params
80
+
81
+ if ( ! mongoose . Types . ObjectId . isValid ( id ) ) {
82
+ return res . status ( 404 ) . json ( { error : 'No such task' } )
83
+ }
84
+
85
+ const task = await Task . findOneAndUpdate ( { _id : id } , {
86
+ ...req . body
87
+ } )
88
+
89
+ if ( ! task ) {
90
+ return res . status ( 400 ) . json ( { error : 'No such task' } )
91
+ }
92
+
93
+ res . status ( 200 ) . json ( task )
94
+ }
95
+
96
+
97
+ module . exports = {
98
+ getTasks,
99
+ getTask,
100
+ createTask,
101
+ deleteTask,
102
+ updateTask
103
+ }
0 commit comments