diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-31 03:30:30 +0100 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-31 03:30:30 +0100 |
| commit | e3f7e1135d4f3f950a0933e0a26d47f34f148cf3 (patch) | |
| tree | a22a353ef521afe3d741c43ab7bff143da83302b | |
| parent | 5139266bcd5ce66ddd1e7f8ee85bc4969f8df08f (diff) | |
DeleteTasks AddCustomers Funcs
| -rw-r--r-- | interact.go | 33 | ||||
| -rw-r--r-- | main.go | 15 | ||||
| -rw-r--r-- | sqlite.go | 83 |
3 files changed, 129 insertions, 2 deletions
diff --git a/interact.go b/interact.go index f1ffb53..8e25c97 100644 --- a/interact.go +++ b/interact.go @@ -33,6 +33,16 @@ func interact() { showLastProject() }, }) + + shell.AddCmd(&ishell.Cmd{ + Name: "add", + Help: "Add new Customer", + Func: func(c *ishell.Context) { + //c.Print("\033[H\033[2J") + //c.Println(boldGreen("Start New Project")) + addCustomer() + }, + }) shell.AddCmd(&ishell.Cmd{ Name: "startnow", @@ -56,6 +66,29 @@ func interact() { }) shell.AddCmd(&ishell.Cmd{ + Name: "deletetask", + Help: "<id> Delete a Task with the following id", + Func: func(c *ishell.Context) { + //c.Print("\033[H\033[2J") + arg := "none" + if len(c.Args) > 0 { + arg = strings.Join(c.Args, " ") + argi,err := strconv.Atoi(arg) + if err == nil{ + //c.Println(boldGreen("Opening Project",argi)) + deleteTask(argi) + stdOut() + }else{ + c.Println(boldRed(arg,"is not a valid id!")) + } + }else{ + c.Println(boldRed("deletetask <id> - Please enter an id")) + allProjects() + } + }, + }) + + shell.AddCmd(&ishell.Cmd{ Name: "project", Help: "<id> Open a Project of the following id", Func: func(c *ishell.Context) { @@ -14,6 +14,8 @@ import ( //var svar string var starttime,stoptime string var projectid, edittaskid, editprojectid int +var deltask int +var addcustomer bool var newproject, newtask, stoptask, allproj, runinter bool //var red, green, yellow, cyan color @@ -28,6 +30,10 @@ func init() { //boldGreen := color.New(color.FgGreen, color.Bold) //boldRed := color.New(color.FgRed, color.Bold) + flag.BoolVar(&addcustomer, + "addcustomer", + false, + "Adds a new Customer") flag.BoolVar(&allproj, "all", false, @@ -40,6 +46,10 @@ func init() { "startnow", false, "Start a new Task in current project") + flag.IntVar(&deltask, + "deletetask", + 0, + "Specify which Task to delete") flag.IntVar(&edittaskid, "edittask", 0, @@ -102,6 +112,9 @@ func main() { if newproject { newProject() os.Exit(0) + } else if addcustomer { + addCustomer() + os.Exit(0) } else if newtask { newTask(projectid) stdOut() @@ -124,6 +137,8 @@ func main() { //showLastProject() //getClosedTasks(0) //showOpenTask() + } else if (deltask>0) { + deleteTask(deltask) } else if (edittaskid>0) { editTask(edittaskid) } else if (editprojectid>0) { @@ -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) |
