//SearchTask is used to return the search results depending on the query func SearchTask(username, query string) (types.Context, error) { var tasks []types.Task var task types.Task var TaskCreated time.Time var context types.Context comments, err := GetComments(username) if err != nil { log.Println("SearchTask: something went wrong in finding comments") } userID, err := GetUserID(username) if err != nil { return context, err } stmt := "select t.id, title, content, created_date, priority, c.name from task t, category c where t.user_id=? and c.id = t.cat_id and (title like '%" + query + "%' or content like '%" + query + "%') order by created_date desc" rows := database.query(stmt, userID, query, query) defer rows.Close() for rows.Next() { err := rows.Scan(&task.Id, &task.Title, &task.Content, &TaskCreated, &task.Priority, &task.Category) if err != nil { log.Println(err) } if comments[task.Id] != nil { task.Comments = comments[task.Id] } task.Title = strings.Replace(task.Title, query, "<span class='highlight'>"+query+"</span>", -1) task.Content = strings.Replace(task.Content, query, "<span class='highlight'>"+query+"</span>", -1) task.Content = string(md.Markdown([]byte(task.Content))) TaskCreated = TaskCreated.Local() CurrentTime := time.Now().Local() week := TaskCreated.AddDate(0, 0, 7) if (week.String() < CurrentTime.String()) && (task.Priority != "1") { task.IsOverdue = true // If one week then overdue by default } task.Created = TaskCreated.Format("Jan 2 2006") tasks = append(tasks, task) } context = types.Context{Tasks: tasks, Search: query, Navigation: "search"} return context, nil }
//GetTasks retrieves all the tasks depending on the //status pending or trashed or completed func GetTasks(status, category string) (types.Context, error) { var tasks []types.Task var task types.Task var TaskCreated time.Time var context types.Context var getTasksql string var rows *sql.Rows comments := GetComments() basicSQL := "select id, title, content, created_date, priority from task t" if status == "pending" && category == "" { getTasksql = basicSQL + " where finish_date is null and is_deleted='N' order by priority desc, created_date asc" } else if status == "deleted" { getTasksql = basicSQL + " where is_deleted='Y' order by priority desc, created_date asc" } else if status == "completed" { getTasksql = basicSQL + " where finish_date is not null order by priority desc, created_date asc" } if category != "" { status = category getTasksql = "select t.id, title, content, created_date, priority from task t, category c where c.id = t.cat_id and name = ? and t.is_deleted!='Y' and t.finish_date is null order by priority desc, created_date asc, finish_date asc" rows, err = database.db.Query(getTasksql, category) if err != nil { log.Println("something went wrong while getting query") } } else { rows = database.query(getTasksql) } defer rows.Close() for rows.Next() { task = types.Task{} err := rows.Scan(&task.Id, &task.Title, &task.Content, &TaskCreated, &task.Priority) task.Content = string(md.Markdown([]byte(task.Content))) // TaskContent = strings.Replace(TaskContent, "\n", "<br>", -1) if err != nil { log.Println(err) } if comments[task.Id] != nil { task.Comments = comments[task.Id] } TaskCreated = TaskCreated.Local() task.Created = TaskCreated.Format(time.UnixDate)[0:20] tasks = append(tasks, task) } context = types.Context{Tasks: tasks, Navigation: status} return context, nil }