summaryrefslogtreecommitdiff
path: root/sqlite.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.go')
-rw-r--r--sqlite.go83
1 files changed, 81 insertions, 2 deletions
diff --git a/sqlite.go b/sqlite.go
index 9c310b2..12cfc93 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -244,7 +244,19 @@ func showLastProject() {
fmt.Println(" Last Changes",currproject.last.Local().Format("2006 Mon Jan _2 15:04"))
}
}
+func addCustomer() {
+ nam := getInput("Enter Customer Name: ")
+ add := getInput("Enter Address (separate lines by ;): ")
+ satstr := getInput("Hourly Rate: ")
+ sat,err := strconv.ParseFloat(satstr,64)
+ checkErr(err)
+ stmt, err := db.Prepare("INSERT INTO customers(name, address, satz) values(?, ?, ?)")
+ checkErr(err)
+ _, err = stmt.Exec(nam,add,sat)
+ checkErr(err)
+ fmt.Println(" Customer Added:",nam, add, sat)
+}
func newProject() {
boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
@@ -352,9 +364,10 @@ func setProject (nid int) {
var first time.Time
var last time.Time
var finish int
+ var custo int
for rows.Next() {
- err = rows.Scan(&uid, &prname, &first, &last, &finish)
+ err = rows.Scan(&uid, &prname, &first, &last, &finish, &custo)
checkErr(err)
}
rows.Close() //good habit to close
@@ -363,6 +376,7 @@ func setProject (nid int) {
currproject.first = first
currproject.last = last
currproject.finish = finish != 0
+ currproject.customer = custo
updateProject(uid)
} else {
fmt.Println(boldRed("There is an Open Task"))
@@ -380,16 +394,55 @@ func allProjects() {
var last time.Time
var finish int
var customer int
+ var start,stop time.Time
fmt.Println("___All Projects________________")
for rows.Next() {
err = rows.Scan(&uid, &prname, &first, &last, &finish, &customer)
checkErr(err)
- fmt.Println(" ",uid,prname,first.Local().Format("2006-09-02 19:13"),last.Local().Format("2006-09-02 19:13"),finish,customer)
+ rows2,err := db.Query("SELECT start, stop FROM timetable WHERE project = $1 AND checkout = 0 AND stop != '1791-09-30 19:07'",uid)
+ checkErr(err)
+ sum := 0.0
+ for rows2.Next() {
+ err = rows2.Scan(&start,&stop)
+ checkErr(err)
+ sum += float64(stop.Sub(start))/(1000000000*60*60)
+ }
+
+ fmt.Printf(" %v:%s First: %s, Last:%s, Total:%.2f(h) ,Fin:%v, For:%v\n",uid,prname,first.Local().Format("2006-09-02 19:13"),last.Local().Format("2006-09-02 19:13"),sum,finish,customer)
}
rows.Close() //good habit to close
}
+func deleteTask(id int) {
+ boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc()
+ boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
+ var chk,prj int
+ var start,stop time.Time
+ var task string
+ rows,err := db.Query("SELECT project, start, stop, task, checkout FROM timetable WHERE id = $1",id)
+ checkErr(err)
+ if rows.Next() {
+ err = rows.Scan(&prj, &start, &stop, &task, &chk)
+ checkErr(err)
+ rows.Close() //good habit to close
+ fmt.Println(boldGreen("Delete Task", id))
+ dur := float64(stop.Sub(start))/(1000000000*60*60)
+ fmt.Printf("%v: %v (%v-%v) - %.2f h\n",prj,task,start.Local().Format("2006 Mon Jan _2 15:04"),stop.Local().Format("15:04"),dur)
+ if isSure() {
+ stmt, err := db.Prepare("DELETE FROM timetable WHERE id = ?")
+ checkErr(err)
+ _, err = stmt.Exec(id)
+ checkErr(err)
+ fmt.Println(boldGreen(id," deleted successfully!"))
+ } else {
+ return
+ }
+ }else{
+ fmt.Println(boldRed(id," is Not a known Task!"))
+ }
+}
+
func editTask(id int) {
boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc()
boldRed := color.New(color.FgRed, color.Bold).SprintFunc()
@@ -521,6 +574,18 @@ func editProject(id int) {
fmt.Println("...Project",id,"Updated")
}
+func isTask(id int) bool {
+
+ rows,err := db.Query("SELECT * FROM timetable WHERE id = $1",id)
+ checkErr(err)
+ defer rows.Close()
+ if rows.Next() {
+ return true
+ } else {
+ return false
+ }
+}
+
func isProject(id int) bool {
rows,err := db.Query("SELECT * FROM projects WHERE id = $1",id)
@@ -574,6 +639,20 @@ func getInput(quest string) string {
return line
}
+func isSure() bool {
+ fmt.Print("Are You Sure ? (type 'yes' to confirm) : ")
+ in := bufio.NewReader(os.Stdin)
+ line, err := in.ReadString('\n')
+ line = strings.TrimSuffix(line, "\n")
+ checkErr(err)
+
+ if line == "yes" {
+ return true
+ } else {
+ return false
+ }
+}
+
func checkErr(err error) {
if err != nil {
panic(err)