1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_6/6.1/golang/todo/menu/task_handlers.go
2025-06-16 11:31:09 +03:00

137 lines
2.9 KiB
Go

package menu
import (
"bufio"
"fmt"
"golang/todo/db"
"os"
)
// Функция для добавления новой задачи
func addTask(rep *db.SQLiteRepository) {
task := db.Task{}
reader := bufio.NewReader(os.Stdin)
fmt.Print("Input project ID: ")
projectID, err := getIntValueFromStd(reader)
if err != nil {
printNotValidData()
return
}
fmt.Print("Input task name: ")
name, _ := getStringValueFromStd(reader)
fmt.Print("Input description task: ")
desc, _ := getStringValueFromStd(reader)
fmt.Print("Input priority task: ")
priority, err := getIntValueFromStd(reader)
if err != nil {
printNotValidData()
return
}
task.Name = name
task.Description = desc
task.Priority = uint8(priority)
if task.Name != "" && task.Description != "" {
task, err := rep.AddTask(task, projectID)
if err != nil {
fmt.Println(err)
}
fmt.Printf("\nAdded task: %+v\n", *task)
} else {
printNotValidData()
}
}
// Функция для удаления задачи
func deleteTaskByID(rep *db.SQLiteRepository) {
fmt.Print("Input ID for deleting task: ")
id, err := getIntValueFromStd(bufio.NewReader(os.Stdin))
if err != nil {
printNotValidData()
return
}
err = rep.DeleteTask(id)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Task deleted")
}
// Функция для получения всех задач
func getAllTasks(rep *db.SQLiteRepository) {
tasks, err := rep.GetAllTasks()
if err != nil {
printNotValidData()
return
}
if len(tasks) == 0 {
fmt.Println("You don't have any task")
} else {
fmt.Println("You current tasks: ")
for _, it := range tasks {
fmt.Printf("TaskID: %v || Name: %v || Desc: %v ||"+
" Priority: %v || IsDone: %v || ProjID: %v\n",
it.ID, it.Name, it.Description, it.Priority,
it.IsDone, it.ProjectID,
)
}
}
}
// Функция для получения всех задач проекта
func getAllProjectTasks(rep *db.SQLiteRepository) {
fmt.Print("Input ID for project: ")
id, err := getIntValueFromStd(bufio.NewReader(os.Stdin))
if err != nil {
printNotValidData()
return
}
tasks, err := rep.GetProjectTasks(id)
if err != nil {
fmt.Println(err)
return
}
if len(tasks) == 0 {
fmt.Println("You don't have any task")
} else {
fmt.Printf(
"Project with ID = %d have next tasks:\n",
id,
)
for _, it := range tasks {
fmt.Printf("TaskID: %v || Name: %v || Desc: %v ||"+
" Priority: %v || IsDone: %v\n",
it.ID, it.Name, it.Description,
it.Priority, it.IsDone,
)
}
}
}
// Функция для перевода задачи в состояние "Выполнено"
func doneTask(rep *db.SQLiteRepository) {
fmt.Print("Input task ID: ")
id, err := getIntValueFromStd(bufio.NewReader(os.Stdin))
if err != nil {
printNotValidData()
return
}
err = rep.TaskDone(id)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Congratulations! Task done!")
}