From e3f7e1135d4f3f950a0933e0a26d47f34f148cf3 Mon Sep 17 00:00:00 2001 From: Nikolaus Gotsche Date: Wed, 31 Jan 2018 03:30:30 +0100 Subject: DeleteTasks AddCustomers Funcs --- sqlite.go | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) (limited to 'sqlite.go') 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) -- cgit v1.2.3