feat (generate-file): general-consent pdf done
This commit is contained in:
No files matched your search
@@ -0,0 +1,153 @@
|
||||
package convhelper
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// check string pointer, if nil return default value
|
||||
func StrConvDefault(f *string, def string) string {
|
||||
if f == nil {
|
||||
return def
|
||||
}
|
||||
return *f
|
||||
}
|
||||
|
||||
// check string pointer, if nil return empty string
|
||||
func StrConvEmpty(f *string) string {
|
||||
return StrConvDefault(f, "-")
|
||||
}
|
||||
|
||||
func ByteConvStr(f *byte) string {
|
||||
if f != nil {
|
||||
return strconv.Itoa(int(*f))
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func Float32Conv(f *float32) float32 {
|
||||
if f == nil {
|
||||
return 0
|
||||
}
|
||||
return *f
|
||||
}
|
||||
|
||||
func StrRelConv(b bool, d string) string {
|
||||
if b {
|
||||
return d
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func UintToString(f interface{}) *string {
|
||||
if f == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
var t string
|
||||
switch v := f.(type) {
|
||||
case uint:
|
||||
t = strconv.FormatUint(uint64(v), 10)
|
||||
case uint8:
|
||||
t = strconv.FormatUint(uint64(v), 10)
|
||||
case uint16:
|
||||
t = strconv.FormatUint(uint64(v), 10)
|
||||
case uint32:
|
||||
t = strconv.FormatUint(uint64(v), 10)
|
||||
case uint64:
|
||||
t = strconv.FormatUint(v, 10)
|
||||
// Handle pointer types
|
||||
case *uint:
|
||||
if v != nil {
|
||||
t = strconv.FormatUint(uint64(*v), 10)
|
||||
}
|
||||
case *uint8:
|
||||
if v != nil {
|
||||
t = strconv.FormatUint(uint64(*v), 10)
|
||||
}
|
||||
case *uint16:
|
||||
if v != nil {
|
||||
t = strconv.FormatUint(uint64(*v), 10)
|
||||
}
|
||||
case *uint32:
|
||||
if v != nil {
|
||||
t = strconv.FormatUint(uint64(*v), 10)
|
||||
}
|
||||
case *uint64:
|
||||
if v != nil {
|
||||
t = strconv.FormatUint(*v, 10)
|
||||
}
|
||||
default:
|
||||
return nil // Unsupported type
|
||||
}
|
||||
|
||||
return &t
|
||||
}
|
||||
|
||||
func BoolToString(f *bool) *string {
|
||||
if f == nil {
|
||||
return nil
|
||||
}
|
||||
t := strconv.FormatBool(*f)
|
||||
return &t
|
||||
}
|
||||
|
||||
func TimeToString(f *time.Time) *string {
|
||||
if f == nil {
|
||||
return nil
|
||||
}
|
||||
t := f.Format("2006-01-02 15:04:05")
|
||||
return &t
|
||||
}
|
||||
|
||||
// Handling gorm.DeletedAt
|
||||
func DeletedAtToString(deletedAt *gorm.DeletedAt) *string {
|
||||
if deletedAt == nil || !deletedAt.Valid {
|
||||
return nil
|
||||
}
|
||||
return TimeToString(&deletedAt.Time)
|
||||
}
|
||||
|
||||
func BoolToFloat64(b bool) float64 {
|
||||
if b {
|
||||
return 1.0
|
||||
}
|
||||
return 0.0
|
||||
}
|
||||
|
||||
func Float64ToBool(f float64) bool {
|
||||
return f == 1.0
|
||||
}
|
||||
|
||||
func StringToBool(s string) bool {
|
||||
return s == "1"
|
||||
}
|
||||
|
||||
func StringToFloat32(s string) float32 {
|
||||
f, _ := strconv.ParseFloat(s, 32)
|
||||
return float32(f)
|
||||
}
|
||||
|
||||
func StringToFloat64(s string) float64 {
|
||||
f, _ := strconv.ParseFloat(s, 64)
|
||||
return f
|
||||
}
|
||||
|
||||
func Float64ToString(f float64) string {
|
||||
return fmt.Sprintf("%.2f", f)
|
||||
}
|
||||
|
||||
func StringToUint64(s string) *uint64 {
|
||||
if s == "" {
|
||||
return nil
|
||||
}
|
||||
u, err := strconv.ParseUint(s, 10, 64)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return &u
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package usecasehelper
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -166,3 +167,44 @@ func index[S ~[]E, E comparable](s S, v E) int {
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
func FormatIndonesianDate(t time.Time) string {
|
||||
monthNames := [...]string{
|
||||
"", // dummy index 0
|
||||
"Januari",
|
||||
"Februari",
|
||||
"Maret",
|
||||
"April",
|
||||
"Mei",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"Agustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Desember",
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%d %s %d", t.Day(), monthNames[int(t.Month())], t.Year())
|
||||
}
|
||||
|
||||
func GetLastTwoPathSegments(s string) string {
|
||||
u, err := url.Parse(s)
|
||||
var path string
|
||||
|
||||
if err == nil && u.Path != "" {
|
||||
path = u.Path
|
||||
} else {
|
||||
path = s
|
||||
}
|
||||
|
||||
parts := strings.Split(strings.Trim(path, "/"), "/")
|
||||
n := len(parts)
|
||||
|
||||
if n >= 2 {
|
||||
return parts[n-2] + "/" + parts[n-1]
|
||||
}
|
||||
|
||||
// fallback: return entire string if less than 2 segments
|
||||
return strings.Trim(path, "/")
|
||||
}
|
||||
Reference in New Issue
Block a user