123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package client
- import (
- "time"
- )
- type Model struct {
- // object unique id
- ID string
- // created event
- IsCreated bool
- // deleted event
- IsDeleted bool
- // updated event
- IsUpdated bool
- // updated time of this object
- LatestUpdatedTime *time.Time
- }
- func modelFromMap(m map[string]interface{}) *Model {
- createdAtStr := ToString(m["created_at"])
- updatedAtStr := ToString(m["updated_at"])
- deletedAtStr := ToString(m["deleted_at"])
- updatedAt, _ := ToTime(updatedAtStr)
- isCreated := false
- isUpdated := false
- isDeleted := false
- if createdAtStr == updatedAtStr {
- isCreated = true
- } else if deletedAtStr != "" {
- isDeleted = true
- } else {
- isUpdated = true
- }
- return &Model{ID: ToString(m["id"]), LatestUpdatedTime: updatedAt,
- IsCreated: isCreated, IsUpdated: isUpdated, IsDeleted: isDeleted}
- }
- type Product struct {
- Model
- // product name
- Name string
- // product color
- Color string
- }
- func ProductFromMap(m map[string]interface{}) *Product {
- return &Product{Model: *modelFromMap(m),
- Name: ToString(m["name"]),
- Color: ToString(m["color"])}
- }
- type PriceSchedule struct {
- Model
- // date
- Date time.Time
- // after shift change
- AfterShiftChange bool
- // product list
- PriceScheduleProducts []*PriceScheduleProduct
- }
- func PriceScheduleFromMap(m map[string]interface{}) (*PriceSchedule, error) {
- date, err := ToTimeFromISO(m["iso_date"])
- if err != nil {
- return nil, err
- }
- return &PriceSchedule{Model: *modelFromMap(m),
- Date: *date,
- AfterShiftChange: ToBool(m["after_shift_change"])}, nil
- }
- type PriceScheduleProduct struct {
- // product id
- ProductID string
- // product name
- Name string
- // product color
- Color string
- // product price
- Price float32
- }
- func PriceScheduleProductFromMap(m map[string]interface{}) *PriceScheduleProduct {
- return &PriceScheduleProduct{
- ProductID: ToString(m["product_id"]),
- Name: ToString(m["name"]),
- Color: ToString(m["color"]),
- Price: ToFloat32(m["price"]),
- }
- }
- type PriceChangeHistory struct {
- // object unique id of local server
- ID string `json:"id"`
- // original schedule id from FHO
- //
- // omit this id, if price change is done by local server
- PriceScheduleID string `json:"price_schedule_id"`
- // price change time in DATETIME_FROM_ISO_FORMAT
- PriceChangeTime string `json:"price_change_time"`
- // price change status
- Status string `json:"status"`
- // products of price change history
- PriceChangeHistoryProducts []*PriceChangeHistoryProduct `json:"products"`
- }
- type PriceChangeHistoryProduct struct {
- // local database row id
- ID string `json:"id"`
- // product id
- ProductID string `json:"product_id"`
- // product name
- Name string `json:"name"`
- // product color
- Color string `json:"color"`
- // product price
- Price float32 `json:"price"`
- }
|