/
gcfHandler.go
157 lines (139 loc) · 4.35 KB
/
gcfHandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package charge
import (
"encoding/json"
"net/http"
evcharging "github.com/ev-chargingpoint/backend-evchargingpoint"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var response evcharging.Response
func GetChargeHandler(PASETOPUBLICKEYENV, MONGOCONNSTRINGENV, dbname string, r *http.Request) string {
conn := evcharging.MongoConnect(MONGOCONNSTRINGENV, dbname)
response.Status = 400
user, err := evcharging.GetUserLogin(PASETOPUBLICKEYENV, r)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
id := evcharging.GetID(r)
if id == "" {
charge, err := GetAllChargeByUser(user.Id, conn)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
responData := bson.M{
"status": 200,
"message": "Berhasil mendapatkan data",
"data": charge,
}
return evcharging.GCFReturnStruct(responData)
}
idparam, err := primitive.ObjectIDFromHex(id)
if err != nil {
response.Message = "Invalid id parameter"
return evcharging.GCFReturnStruct(response)
}
charge, err := GetChargeFromID(idparam, conn)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
response.Status = 200
response.Message = "Berhasil mendapatkan data"
responseData := bson.M{
"status": response.Status,
"message": response.Message,
"data": charge,
}
return evcharging.GCFReturnStruct(responseData)
}
func ChargeHandler(PASETOPUBLICKEYENV, MONGOCONNSTRINGENV, dbname string, r *http.Request) string {
conn := evcharging.MongoConnect(MONGOCONNSTRINGENV, dbname)
response.Status = 400
var chargeData evcharging.Charge
err := json.NewDecoder(r.Body).Decode(&chargeData)
if err != nil {
response.Message = "error parsing application/json: " + err.Error()
return evcharging.GCFReturnStruct(response)
}
user, err := evcharging.GetUserLogin(PASETOPUBLICKEYENV, r)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
id := evcharging.GetID(r)
if id == "" {
response.Message = "Invalid id parameter"
return evcharging.GCFReturnStruct(response)
}
idchargingstation, err := primitive.ObjectIDFromHex(id)
if err != nil {
response.Message = "Invalid id parameter"
return evcharging.GCFReturnStruct(response)
}
data, err := ChargeCar(idchargingstation, user.Id, conn, chargeData)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
response.Status = 201
response.Message = "Berhasil melakukan charge"
responseData := bson.M{
"status": response.Status,
"message": response.Message,
"data": data,
}
return evcharging.GCFReturnStruct(responseData)
}
func PaymentAndStatusChargeHandler(PASETOPUBLICKEYENV, MONGOCONNSTRINGENV, dbname string, r *http.Request) string {
conn := evcharging.MongoConnect(MONGOCONNSTRINGENV, dbname)
response.Status = 400
var chargeData evcharging.Charge
err := json.NewDecoder(r.Body).Decode(&chargeData)
if err != nil {
response.Message = "error parsing application/json: " + err.Error()
return evcharging.GCFReturnStruct(response)
}
user, err := evcharging.GetUserLogin(PASETOPUBLICKEYENV, r)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
id := evcharging.GetID(r)
if id == "" {
response.Message = "Invalid id parameter"
return evcharging.GCFReturnStruct(response)
}
idcharge, err := primitive.ObjectIDFromHex(id)
if err != nil {
response.Message = "Invalid id parameter"
return evcharging.GCFReturnStruct(response)
}
var data bson.M
if chargeData.Payment {
data, err = ProcessPayment(idcharge, user.Id, conn, chargeData)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
response.Message = "Proses pembayaran berhasil"
} else if chargeData.Status {
data, err = ProcessStatus(idcharge, user.Id, conn, chargeData)
if err != nil {
response.Message = err.Error()
return evcharging.GCFReturnStruct(response)
}
response.Message = "Pengecasan selesai"
} else {
response.Message = "Invalid condition: Payment or Status should be true"
return evcharging.GCFReturnStruct(response)
}
response.Status = 201
responseData := bson.M{
"status": response.Status,
"message": response.Message,
"data": data,
}
return evcharging.GCFReturnStruct(responseData)
}