Fortlaufende Zyklus-Planung und Periodenlogik einführen
This commit is contained in:
@@ -46,12 +46,13 @@ func (a *App) handleSetCurrentTime(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
month := mustInt(r.FormValue("current_month"), 1)
|
||||
cycle := mustInt(r.FormValue("current_cycle"), settings.CurrentCycle)
|
||||
day := mustInt(r.FormValue("current_day"), 1)
|
||||
if month < 1 || month > 12 || day < 1 || day > settings.DaysPerMonth {
|
||||
if month < 1 || month > 12 || cycle < 0 || day < 1 || day > settings.DaysPerMonth {
|
||||
redirectWithMessage(w, r, "/", "error", "Ingame-Zeit ungültig")
|
||||
return
|
||||
}
|
||||
if _, err := a.db.Exec(`UPDATE settings SET current_month=?, current_day=? WHERE id=1`, month, day); err != nil {
|
||||
if _, err := a.db.Exec(`UPDATE settings SET current_month=?, current_cycle=?, current_day=? WHERE id=1`, month, cycle, day); err != nil {
|
||||
redirectWithMessage(w, r, "/", "error", "Ingame-Zeit nicht gespeichert")
|
||||
return
|
||||
}
|
||||
@@ -369,6 +370,7 @@ func (a *App) handleCreatePlan(w http.ResponseWriter, r *http.Request) {
|
||||
targetRef := strings.TrimSpace(r.FormValue("target_ref"))
|
||||
cropID := mustInt64(r.FormValue("crop_id"), 0)
|
||||
startMonth := mustInt(r.FormValue("start_month"), 1)
|
||||
cycleOffset := mustInt(r.FormValue("cycle_offset"), 0)
|
||||
startDay := mustInt(r.FormValue("start_day"), 1)
|
||||
notes := strings.TrimSpace(r.FormValue("notes"))
|
||||
if targetRef == "" || cropID <= 0 {
|
||||
@@ -381,7 +383,7 @@ func (a *App) handleCreatePlan(w http.ResponseWriter, r *http.Request) {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Einstellungen nicht lesbar")
|
||||
return
|
||||
}
|
||||
if startMonth < 1 || startMonth > 12 || startDay < 1 || startDay > settings.DaysPerMonth {
|
||||
if startMonth < 1 || startMonth > 12 || cycleOffset < 0 || cycleOffset > 20 || startDay < 1 || startDay > settings.DaysPerMonth {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Startdatum ungültig")
|
||||
return
|
||||
}
|
||||
@@ -404,11 +406,13 @@ func (a *App) handleCreatePlan(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
harvestMonth := wrapMonth(startMonth + c.GrowMonths)
|
||||
startPeriod := ((settings.CurrentCycle + cycleOffset) * 12) + (startMonth - 1)
|
||||
harvestPeriod := startPeriod + c.GrowMonths
|
||||
harvestMonth := periodMonth(harvestPeriod)
|
||||
harvestDay := startDay
|
||||
_, err = a.db.Exec(
|
||||
`INSERT INTO plans(field_id,target_ref,target_name,crop_id,start_month,start_day,harvest_month,harvest_day,notes) VALUES (?,?,?,?,?,?,?,?,?)`,
|
||||
fieldID, targetRef, targetName, cropID, startMonth, startDay, harvestMonth, harvestDay, notes,
|
||||
`INSERT INTO plans(field_id,target_ref,target_name,crop_id,start_period,start_month,start_day,harvest_period,harvest_month,harvest_day,notes) VALUES (?,?,?,?,?,?,?,?,?,?,?)`,
|
||||
fieldID, targetRef, targetName, cropID, startPeriod, startMonth, startDay, harvestPeriod, harvestMonth, harvestDay, notes,
|
||||
)
|
||||
if err != nil {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Plan nicht gespeichert")
|
||||
@@ -508,7 +512,7 @@ func (a *App) handleCreateCustomTask(w http.ResponseWriter, r *http.Request) {
|
||||
title := strings.TrimSpace(r.FormValue("title"))
|
||||
month := mustInt(r.FormValue("month"), 0)
|
||||
day := mustInt(r.FormValue("day"), 0)
|
||||
yearOffset := mustInt(r.FormValue("year_offset"), 0)
|
||||
cycleOffset := mustInt(r.FormValue("cycle_offset"), 0)
|
||||
targetName := strings.TrimSpace(r.FormValue("target_name"))
|
||||
notes := strings.TrimSpace(r.FormValue("notes"))
|
||||
settings, err := a.getSettings()
|
||||
@@ -516,7 +520,7 @@ func (a *App) handleCreateCustomTask(w http.ResponseWriter, r *http.Request) {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Einstellungen nicht lesbar")
|
||||
return
|
||||
}
|
||||
if month < 1 || month > 12 || day < 1 || day > settings.DaysPerMonth || yearOffset < 0 || yearOffset > 4 {
|
||||
if month < 1 || month > 12 || day < 1 || day > settings.DaysPerMonth || cycleOffset < 0 || cycleOffset > 20 {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Aufgaben-Datum ungültig")
|
||||
return
|
||||
}
|
||||
@@ -531,8 +535,9 @@ func (a *App) handleCreateCustomTask(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if _, err = a.db.Exec(`INSERT INTO custom_tasks(template_id,title,month,day,year_offset,target_name,notes) VALUES (?,?,?,?,?,?,?)`,
|
||||
nullInt64(templateID), title, month, day, yearOffset, targetName, notes); err != nil {
|
||||
taskPeriod := ((settings.CurrentCycle + cycleOffset) * 12) + (month - 1)
|
||||
if _, err = a.db.Exec(`INSERT INTO custom_tasks(template_id,title,task_period,month,day,year_offset,target_name,notes) VALUES (?,?,?,?,?,?,?,?)`,
|
||||
nullInt64(templateID), title, taskPeriod, month, day, cycleOffset, targetName, notes); err != nil {
|
||||
redirectWithMessage(w, r, "/planning", "error", "Aufgabe konnte nicht gespeichert werden")
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user