-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroute_freelancers.go
121 lines (115 loc) · 3.23 KB
/
route_freelancers.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
package main
import (
"github.com/gorilla/mux"
"graduate/data"
"html/template"
"log"
"net/http"
"strconv"
)
func allFreelancers(w http.ResponseWriter, r *http.Request) {
pageData := PageData{
Title: "Freelancers",
}
sess, err := session(w, r)
if err == nil {
user, _ := data.GetUserByID(sess.UserID)
if user.IsFreelancer() {
user, _ := data.GetFreelancerByUserID(user.ID)
pageData.User = &user
} else if user.IsCustomer() {
user, _ := data.GetCustomerByUserID(user.ID)
pageData.User = &user
}
}
freelancers := new([]data.Freelancer)
specialization, _ := data.GetAllSpecialization()
if search := r.FormValue("search"); search != "" {
*freelancers, err = data.GetFreelancersWhere(`first_name ILIKE '%' || $1 || '%'
OR last_name ILIKE '%' || $1 || '%'`, search)
if err != nil {
log.Println(err)
}
if len(*freelancers) == 0 {
freelancers = nil
}
} else {
*freelancers, err = data.GetAllFreelancers()
if err != nil {
log.Println(err)
}
if len(*freelancers) == 0 {
freelancers = nil
}
}
pageData.Content = struct {
Freelancers *[]data.Freelancer
Specializations *[]data.Specialization
}{freelancers, &specialization}
generateHTML(w, &pageData, nil, "base", "header", "footer", "freelancer/freelancers")
}
func viewFreelancer(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
id, _ := strconv.ParseInt(vars["id"], 10, 8)
freelancer, _ := data.GetFreelancerByUserID(int(id))
freelancerOrders := freelancer.FinishWorks()
pageData := PageData{
Title :freelancer.FirstName + " " + freelancer.LastName,
Content: struct {
*data.Freelancer
FreelancerOrders *[]data.CompleteOrder
}{&freelancer, &freelancerOrders},
}
sess, err := session(w, r)
if err == nil {
user, _ := data.GetUserByID(sess.UserID)
pageData.User = &user
}
funcMap := template.FuncMap{
"getNameSpecialization": data.GetSpecializationName,
}
generateHTML(w, &pageData, funcMap, "base", "header", "footer", "freelancer/freelancer_view")
}
func specialization(w http.ResponseWriter, r *http.Request) {
pageData := PageData{
Title:"Freelancers",
}
sess, err := session(w, r)
if err == nil {
user, _ := data.GetUserByID(sess.UserID)
if user.IsFreelancer(){
user, _ := data.GetFreelancerByUserID(user.ID)
pageData.User = &user
}else if user.IsCustomer(){
user, _ := data.GetCustomerByUserID(user.ID)
pageData.User = &user
}
}
vars := mux.Vars(r)
id, _ := strconv.ParseInt(vars["id"], 10, 8)
freelancers := new([]data.Freelancer)
specializations, _ := data.GetAllSpecialization()
if search := r.FormValue("search"); search != ""{
*freelancers, err = data.GetFreelancersWhere(`first_name ILIKE '%' || $1 || '%'
OR last_name ILIKE '%' || $1 || '%'`, search)
if err != nil{
log.Println(err)
}
if len(*freelancers) == 0{
freelancers = nil
}
}else{
*freelancers, err = data.GetFreelancersWhere(" $1 = ANY (specialization)", id)
if err != nil{
log.Println(err)
}
if len(*freelancers) == 0{
freelancers = nil
}
}
pageData.Content = struct {
Freelancers *[]data.Freelancer
Specializations *[]data.Specialization
}{freelancers, &specializations}
generateHTML(w, &pageData, nil, "base", "header", "footer", "freelancer/freelancers")
}