update global care - integrate car insurance #4
			
				
			
		
		
		
	|  | @ -20,19 +20,33 @@ const ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| 	VehicleTypeID50ccAbove    = 1 | 	MotorbikeProductCode = "bbxm" | ||||||
| 	VehicleTypeID50ccBelow    = 2 | 	MotorbikeProviderID  = 4 | ||||||
| 	VehicleTypeIDElectricBike = 3 | 	MotorbikeProductID   = 18 | ||||||
|  | 
 | ||||||
|  | 	CarProductCode = "bbot" | ||||||
|  | 	CarProviderID  = 10 | ||||||
|  | 	CarProductID   = 35 | ||||||
|  | 
 | ||||||
|  | 	NumOfSeatsMinValue = 25 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | type InsuranceConfig struct { | ||||||
| 	CarOccupantAccidentInsurance0   = 1 | 	ProductCode string | ||||||
| 	CarOccupantAccidentInsurance10m = 2 | 	ProviderID  int | ||||||
| 	CarOccupantAccidentInsurance20m = 3 | 	ProductID   int | ||||||
| ) | } | ||||||
| 
 | 
 | ||||||
| const ( | var ( | ||||||
| 	productCodeDefault = "bbxm" | 	CarConfig = InsuranceConfig{ | ||||||
| 	providerIDDefault  = 4 | 		ProductCode: CarProductCode, | ||||||
| 	productIDDefault   = 18 | 		ProviderID:  CarProviderID, | ||||||
|  | 		ProductID:   CarProductID, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	MotorbikeConfig = InsuranceConfig{ | ||||||
|  | 		ProductCode: MotorbikeProductCode, | ||||||
|  | 		ProviderID:  MotorbikeProviderID, | ||||||
|  | 		ProductID:   MotorbikeProductID, | ||||||
|  | 	} | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -54,17 +54,8 @@ func NewClient(env ENV, privateKey, publicKey string, natsClient natsio.Server) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // CreateOrder ...
 | // CreateOrder ...
 | ||||||
| func (c *Client) CreateOrder(p CreateOrderPayload) (*CreateOrderResponseDecoded, error) { | func (c *Client) CreateOrder(data CreateOrderPayload) (*CreateOrderResponseDecoded, error) { | ||||||
| 	url := c.getBaseURL() + apiPathCreateOrder | 	url := c.getBaseURL() + apiPathCreateOrder | ||||||
| 	data := createOrderData{ |  | ||||||
| 		ProductCode: productCodeDefault, |  | ||||||
| 		ProviderID:  providerIDDefault, |  | ||||||
| 		ProductID:   productIDDefault, |  | ||||||
| 		PartnerID:   p.PartnerOrderCode, |  | ||||||
| 		VehicleInfo: p.VehicleInfo, |  | ||||||
| 		InsuredInfo: p.InsuredInfo, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	dataString := base64.Encode(pjson.ToBytes(data)) | 	dataString := base64.Encode(pjson.ToBytes(data)) | ||||||
| 	sign, err := c.signData(dataString) | 	sign, err := c.signData(dataString) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,9 @@ | ||||||
| package globalcare | package globalcare | ||||||
| 
 | 
 | ||||||
| import "time" | import ( | ||||||
|  | 	"encoding/json" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| // CommonRequestBody ...
 | // CommonRequestBody ...
 | ||||||
| type CommonRequestBody struct { | type CommonRequestBody struct { | ||||||
|  | @ -10,12 +13,6 @@ type CommonRequestBody struct { | ||||||
| 
 | 
 | ||||||
| // CreateOrderPayload ...
 | // CreateOrderPayload ...
 | ||||||
| type CreateOrderPayload struct { | type CreateOrderPayload struct { | ||||||
| 	PartnerOrderCode string      `json:"partnerOrderCode"` |  | ||||||
| 	VehicleInfo      VehicleInfo `json:"vehicleInfo"` |  | ||||||
| 	InsuredInfo      InsuredInfo `json:"insuredInfo"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| type createOrderData struct { |  | ||||||
| 	ProductCode string      `json:"productCode"` | 	ProductCode string      `json:"productCode"` | ||||||
| 	ProviderID  int         `json:"providerId"` | 	ProviderID  int         `json:"providerId"` | ||||||
| 	ProductID   int         `json:"productId"` | 	ProductID   int         `json:"productId"` | ||||||
|  | @ -26,12 +23,38 @@ type createOrderData struct { | ||||||
| 
 | 
 | ||||||
| // VehicleInfo ...
 | // VehicleInfo ...
 | ||||||
| type VehicleInfo struct { | type VehicleInfo struct { | ||||||
| 	TypeID                       int    `json:"typeId"` | 	TypeID   int    `json:"typeId"` | ||||||
| 	TypeName                     string `json:"typeName"` | 	TypeName string `json:"typeName"` | ||||||
| 	CarOccupantAccidentInsurance int    `json:"carOccupantAccidentInsurance"` | 	License  string `json:"license"` | ||||||
| 	License                      string `json:"license"` | 	Chassis  string `json:"chassis"` | ||||||
| 	Chassis                      string `json:"chassis"` | 	Engine   string `json:"engine"` | ||||||
| 	Engine                       string `json:"engine"` | 
 | ||||||
|  | 	// V2 = true if TypeID = 1 and insurance type is car
 | ||||||
|  | 	V2 bool `json:"v2,omitempty"` | ||||||
|  | 	// CarOccupantAccidentInsurance type int for motorbike, type CarOccupantAccidentInsuranceObj for car insurance
 | ||||||
|  | 	CarOccupantAccidentInsurance interface{} `json:"carOccupantAccidentInsurance"` | ||||||
|  | 	NumberOfSeatsOver25          int         `json:"numberOfSeatsOver25"` | ||||||
|  | 	NumberOfSeatsOrTonnageName   string      `json:"numberOfSeatsOrTonnageName"` | ||||||
|  | 	NumberOfSeatsOrTonnage       int         `json:"numberOfSeatsOrTonnage"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // CarOccupantAccidentInsuranceObj ...
 | ||||||
|  | type CarOccupantAccidentInsuranceObj struct { | ||||||
|  | 	NumberOfSeats int `json:"numberOfSeats"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *CarOccupantAccidentInsuranceObj) MarshalJSON() ([]byte, error) { | ||||||
|  | 	buy := 1 | ||||||
|  | 	if c.NumberOfSeats <= 0 { | ||||||
|  | 		buy = 2 | ||||||
|  | 	} | ||||||
|  | 	return json.Marshal(&struct { | ||||||
|  | 		Buy           int `json:"buy"` | ||||||
|  | 		NumberOfSeats int `json:"numberOfSeats"` | ||||||
|  | 	}{ | ||||||
|  | 		Buy:           buy, | ||||||
|  | 		NumberOfSeats: c.NumberOfSeats, | ||||||
|  | 	}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // InsuredInfo ...
 | // InsuredInfo ...
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue