package admin import ( "errors" "fmt" "time" "github.com/metarare/metarare_api/models" ) func StackLog(obj Log) error { var msg string switch obj.ActionType { case "user": msg = fmt.Sprintf("관리자(%d) %s이(가) 유저(%d) 상태를 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID, obj.From, obj.To) case "artist": if obj.SubActionType == "created" { msg = fmt.Sprintf("관리자(%d) %s이(가) 작가(%d)를 등록했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID) } else if obj.SubActionType == "modified" { msg = fmt.Sprintf("관리자(%d) %s이(가) 작가(%d) 상태를 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID, obj.From, obj.To) } case "collection": if obj.Target == "collection" { msg = fmt.Sprintf("관리자(%d) %s이(가) 컬렉션(%d) 상태를 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID, obj.From, obj.To) } else if obj.Target == "curation" { msg = fmt.Sprintf("관리자(%d) %s이(가) 컬렉션(%d) 큐레이션 정보를 %s번으로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID, obj.To) } case "system": if obj.Target == "commission" { msg = fmt.Sprintf("관리자(%d) %s이(가) 커미션 수수료 값을 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.From, obj.To) } else if obj.Target == "special_collection" { msg = fmt.Sprintf("관리자(%d) %s이(가) 스페셜 컬렉션을 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.From, obj.To) } else if obj.Target == "gas_deposit" { msg = fmt.Sprintf("관리자(%d) %s이(가) 가스 수수료를 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.From, obj.To) } case "admin": if obj.SubActionType == "created" { msg = fmt.Sprintf("관리자(%d) %s이(가) 새로운 관리자(%d)를 등록했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID) } else if obj.SubActionType == "modified" { if obj.Target == "status" { msg = fmt.Sprintf("관리자(%d) %s이(가) 관리자(%d) 상태를 %s에서 %s로 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID, obj.From, obj.To) } else if obj.Target == "permission" { msg = fmt.Sprintf("관리자(%d) %s이(가) 관리자(%d) 권한을 변경했습니다.", obj.Admin.ID, obj.Admin.Name, obj.TargetID) } } default: return errors.New("invalid parameter value") } adminLog := models.AdminLog{ AdminID: obj.Admin.ID, ActionType: obj.ActionType, SubActionType: obj.SubActionType, Message: msg, ActionedAt: time.Now(), } if err := obj.DB.Save(&adminLog).Error; err != nil { return err } return nil }