annotate pkg/controllers/fwa.go @ 5196:5bc8daa986d9 new-fwa

More code movement.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 07 May 2020 16:25:58 +0200
parents d6710d29516b
children c352dbbf2778
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018, 2019, 2020 by via donau
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package controllers
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import (
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
17 "log"
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 "net/http"
5196
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
19 "time"
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
5196
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
21 "gemma.intevation.de/gemma/pkg/common"
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 "github.com/gorilla/mux"
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 )
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
25 func fairwayAvailability(rw http.ResponseWriter, req *http.Request) {
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 vars := mux.Vars(req)
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 switch vars["kind"] {
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 case "bottleneck":
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
31 fairwayAvailabilityBottleneck(rw, req)
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 case "stretch":
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 case "section":
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
34 default:
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
35 http.Error(rw, "Invalid kind type.", http.StatusBadRequest)
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
36 return
5184
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 }
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 // TODO: Implement me!
445daeefca7b Added controller stub for new fairway availability.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 }
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
41
5196
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
42 func parseFromTo(
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
43 rw http.ResponseWriter,
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
44 req *http.Request,
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
45 ) (time.Time, time.Time, bool) {
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
46 from, ok := parseFormTime(rw, req, "from", time.Now().AddDate(-1, 0, 0))
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
47 if !ok {
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
48 return time.Time{}, time.Time{}, false
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
49 }
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
50
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
51 to, ok := parseFormTime(rw, req, "to", from.AddDate(1, 0, 0))
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
52 if !ok {
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
53 return time.Time{}, time.Time{}, false
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
54 }
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
55 from, to = common.OrderTime(from, to)
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
56 return from, to, true
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
57 }
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
58
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
59 func fairwayAvailabilityBottleneck(rw http.ResponseWriter, req *http.Request) {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
60
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
61 vars := mux.Vars(req)
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
62
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
63 bottleneckID := vars["name"]
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
64 if bottleneckID == "" {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
65 http.Error(rw, "missing bottleneck_id", http.StatusBadRequest)
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
66 return
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
67 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
68 log.Printf("info: fairway availability for bottleneck_id '%s'\n", bottleneckID)
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
69
5196
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
70 from, to, ok := parseFromTo(rw, req)
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
71 if !ok {
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
72 return
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
73 }
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
74
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
75 los, ok := parseFormInt(rw, req, "los", 1)
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
76 if !ok {
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
77 return
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
78 }
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
79
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
80 // TODO: Implement me!
5196
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
81 _ = from
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
82 _ = to
5bc8daa986d9 More code movement.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
83 _ = los
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5184
diff changeset
84 }