123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // Copyright 2017 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package repo
-
- import (
- "net/http"
- "time"
-
- "code.gitea.io/gitea/models/db"
- issues_model "code.gitea.io/gitea/models/issues"
- "code.gitea.io/gitea/modules/util"
- "code.gitea.io/gitea/modules/web"
- "code.gitea.io/gitea/services/context"
- "code.gitea.io/gitea/services/forms"
- )
-
- // AddTimeManually tracks time manually
- func AddTimeManually(c *context.Context) {
- form := web.GetForm(c).(*forms.AddTimeManuallyForm)
- issue := GetActionIssue(c)
- if c.Written() {
- return
- }
- if !c.Repo.CanUseTimetracker(c, issue, c.Doer) {
- c.NotFound("CanUseTimetracker", nil)
- return
- }
- url := issue.Link()
-
- if c.HasError() {
- c.Flash.Error(c.GetErrMsg())
- c.Redirect(url)
- return
- }
-
- total := util.TimeEstimateFromStr(form.TimeString)
-
- if total <= 0 {
- c.Flash.Error(c.Tr("repo.issues.add_time_sum_to_small"))
- c.Redirect(url, http.StatusSeeOther)
- return
- }
-
- if _, err := issues_model.AddTime(c, c.Doer, issue, total, time.Now()); err != nil {
- c.ServerError("AddTime", err)
- return
- }
-
- c.Redirect(url, http.StatusSeeOther)
- }
-
- // DeleteTime deletes tracked time
- func DeleteTime(c *context.Context) {
- issue := GetActionIssue(c)
- if c.Written() {
- return
- }
- if !c.Repo.CanUseTimetracker(c, issue, c.Doer) {
- c.NotFound("CanUseTimetracker", nil)
- return
- }
-
- t, err := issues_model.GetTrackedTimeByID(c, c.ParamsInt64(":timeid"))
- if err != nil {
- if db.IsErrNotExist(err) {
- c.NotFound("time not found", err)
- return
- }
- c.Error(http.StatusInternalServerError, "GetTrackedTimeByID", err.Error())
- return
- }
-
- // only OP or admin may delete
- if !c.IsSigned || (!c.IsUserSiteAdmin() && c.Doer.ID != t.UserID) {
- c.Error(http.StatusForbidden, "not allowed")
- return
- }
-
- if err = issues_model.DeleteTime(c, t); err != nil {
- c.ServerError("DeleteTime", err)
- return
- }
-
- c.Flash.Success(c.Tr("repo.issues.del_time_history", util.SecToTime(t.Time)))
- c.Redirect(issue.Link())
- }
|