Files
stufflog3/entities/item.go
T

66 lines
1.8 KiB
Go

package entities
import (
"git.aiterp.net/stufflog3/stufflog3/models"
"time"
)
type Item struct {
ID int `json:"id"`
ScopeID int `json:"scopeId"`
OwnerID string `json:"ownerId"`
ProjectID *int `json:"projectId,omitempty"`
RequirementID *int `json:"requirementId,omitempty"`
Name string `json:"name"`
Description string `json:"description"`
CreatedTime time.Time `json:"createdTime"`
AcquiredTime *time.Time `json:"acquiredTime"`
ScheduledDate *models.Date `json:"scheduledDate"`
}
type ItemStat struct {
ItemID int `json:"itemId"`
StatID int `json:"statId"`
Acquired int `json:"acquired"`
Required int `json:"required"`
}
func (item *Item) AcquiredOutside(fromTime, toTime time.Time) bool {
return item.AcquiredTime != nil && (item.AcquiredTime.Before(fromTime) || !item.AcquiredTime.Before(toTime))
}
func (item *Item) AcquiredBetween(fromTime, toTime time.Time) bool {
return item.AcquiredTime != nil && !item.AcquiredTime.Before(fromTime) && item.AcquiredTime.Before(toTime)
}
func (item *Item) ApplyUpdate(update models.ItemUpdate) {
if update.RequirementID != nil {
if *update.RequirementID <= 0 {
item.RequirementID = nil
} else {
item.RequirementID = update.RequirementID
}
}
if update.OwnerID != nil {
item.OwnerID = *update.OwnerID
}
if update.Name != nil {
item.Name = *update.Name
}
if update.Description != nil {
item.Description = *update.Description
}
if update.AcquiredTime != nil {
item.AcquiredTime = update.AcquiredTime
}
if update.ScheduledDate != nil {
item.ScheduledDate = update.ScheduledDate
}
if update.ClearScheduledDate {
item.ScheduledDate = nil
}
if update.ClearAcquiredTime {
item.AcquiredTime = nil
}
}