forked from aiteung/presensi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mongo.go
148 lines (133 loc) · 4.74 KB
/
mongo.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
package absensi
import (
"context"
"fmt"
"github.com/aiteung/module/model"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
)
func GetNamaFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (nama string) {
karyawan := mongoconn.Collection("karyawan")
filter := bson.M{"phone_number": phone_number}
var staf Karyawan
err := karyawan.FindOne(context.TODO(), filter).Decode(&staf)
if err != nil {
fmt.Printf("GetNamaFromPhoneNumber: %v\n", err)
}
return staf.Nama
}
func GetBiodataFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (staf Karyawan) {
karyawan := mongoconn.Collection("karyawan")
filter := bson.M{"phone_number": phone_number}
err := karyawan.FindOne(context.TODO(), filter).Decode(&staf)
if err != nil {
fmt.Printf("GetBiodataFromPhoneNumber: %v\n", err)
}
return staf
}
func GetKaryawanFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (staf Karyawan) {
karyawan := mongoconn.Collection("karyawan")
filter := bson.M{"phone_number": phone_number}
err := karyawan.FindOne(context.TODO(), filter).Decode(&staf)
if err != nil {
fmt.Printf("getKaryawanFromPhoneNumber: %v\n", err)
}
return staf
}
func GetPresensiTodayFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (presensi Presensi) {
coll := mongoconn.Collection("presensi")
today := bson.M{
"$gte": primitive.NewObjectIDFromTimestamp(GetDateSekarang()),
}
filter := bson.M{"phone_number": phone_number, "_id": today}
err := coll.FindOne(context.TODO(), filter).Decode(&presensi)
if err != nil {
fmt.Printf("GetPresensiTodayFromPhoneNumber: %v\n", err)
}
return presensi
}
func GetPresensiCurrentMonth(mongoconn *mongo.Database) (allpresensi []Presensi) {
startdate, enddate := GetFirstLastDateCurrentMonth()
coll := mongoconn.Collection("presensi")
today := bson.M{
"$gte": primitive.NewDateTimeFromTime(startdate),
"$lte": primitive.NewDateTimeFromTime(enddate),
}
filter := bson.M{"datetime": today}
cursor, err := coll.Find(context.TODO(), filter)
if err != nil {
fmt.Printf("getPresensiTodayFromPhoneNumber: %v\n", err)
}
err = cursor.All(context.TODO(), &allpresensi)
if err != nil {
fmt.Println(err)
}
return
}
func GetLokasi(mongoconn *mongo.Database, long float64, lat float64) (namalokasi string) {
lokasicollection := mongoconn.Collection("lokasi")
filter := bson.M{
"batas": bson.M{
"$geoIntersects": bson.M{
"$geometry": bson.M{
"type": "Point",
"coordinates": []float64{long, lat},
},
},
},
}
var lokasi Lokasi
err := lokasicollection.FindOne(context.TODO(), filter).Decode(&lokasi)
if err != nil {
fmt.Printf("GetLokasi: %v\n", err)
}
return lokasi.Nama
}
func getKaryawanFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (staf Karyawan) {
karyawan := mongoconn.Collection("karyawan")
filter := bson.M{"phone_number": phone_number}
err := karyawan.FindOne(context.TODO(), filter).Decode(&staf)
if err != nil {
fmt.Printf("getKaryawanFromPhoneNumber: %v\n", err)
}
return staf
}
func getPresensiTodayFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (presensi Presensi) {
coll := mongoconn.Collection("presensi")
today := bson.M{
"$gte": primitive.NewObjectIDFromTimestamp(GetDateSekarang()),
}
filter := bson.M{"phone_number": phone_number, "_id": today}
err := coll.FindOne(context.TODO(), filter).Decode(&presensi)
if err != nil {
fmt.Printf("getPresensiTodayFromPhoneNumber: %v\n", err)
}
return presensi
}
func getPresensiPulangTodayFromPhoneNumber(mongoconn *mongo.Database, phone_number string) (pulang Pulang) {
coll := mongoconn.Collection("presensi_pulang")
today := bson.M{
"$gte": primitive.NewObjectIDFromTimestamp(GetDateSekarang()),
}
filter := bson.M{"phone_number": phone_number, "_id": today}
err := coll.FindOne(context.TODO(), filter).Decode(&pulang)
if err != nil {
fmt.Printf("getPresensiTodayFromPhoneNumber: %v\n", err)
}
return pulang
}
func InsertPresensi(Pesan model.IteungMessage, Checkin string, Keterangan string, mongoconn *mongo.Database) (InsertedID interface{}) {
insertResult, err := mongoconn.Collection("presensi").InsertOne(context.TODO(), fillStructPresensi(Pesan, Checkin, Keterangan, mongoconn))
if err != nil {
fmt.Printf("InsertOneDoc: %v\n", err)
}
return insertResult.InsertedID
}
func InsertPresensiPulang(Pesan model.IteungMessage, Checkin string, Keterangan string, Durasi string, Persentase string, mongoconn *mongo.Database) (InsertedID interface{}) {
insertResult, err := mongoconn.Collection("presensi_pulang").InsertOne(context.TODO(), fillStructPresensiPulang(Pesan, Checkin, Keterangan, Durasi, Persentase, mongoconn))
if err != nil {
fmt.Printf("InsertOneDoc: %v\n", err)
}
return insertResult.InsertedID
}