package dto

import "time"

type TenantCreateRequest struct {
	Tenantname     string `json:"tenantname"`
	Primaryemail   string `json:"primaryemail"`
	Primarycontact string `json:"primarycontact"`
	Status         string `json:"status"`
}

type TenantLocationCreateRequest struct {
	Address   string  `json:"address"`
	City      string  `json:"city"`
	State     string  `json:"state"`
	Pincode   string  `json:"pincode"`
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`
	Isprimary bool    `json:"isprimary"`
	Status    string  `json:"status"`
}

type TenantCustomerCreateRequest struct {
	Firstname string `json:"firstname"`
	Lastname  string `json:"lastname"`
	Phone     string `json:"phone"`
	Email     string `json:"email"`
}

type HubCreateRequest struct {
	Hubname       string  `json:"hubname"`
	Hubtype       string  `json:"hubtype"` // sorting_center, delivery_hub
	Applocationid int     `json:"applocationid"`
	Contactno     string  `json:"contactno"`
	Address       string  `json:"address"`
	Latitude      float64 `json:"latitude"`
	Longitude     float64 `json:"longitude"`
	Pincode       string  `json:"pincode"`
	Status        string  `json:"status"`
}

type VehicleCreateRequest struct {
	Vehicleno         string  `json:"vehicleno"`
	Vehicletype       string  `json:"vehicletype"`
	Maxweight         float64 `json:"maxweight"`
	Maxvolume         float64 `json:"maxvolume"`
	Partnerid         *int    `json:"partnerid"`
	Batterypercentage int     `json:"batterypercentage"`
	Status            string  `json:"status"`
}

type MilerCreateRequest struct {
	Authname           string `json:"authname"`
	Email              string `json:"email"`
	Contactno          string `json:"contactno"`
	Password           string `json:"password"`
	Displayname        string `json:"displayname"`
	Defaultvehicletype string `json:"defaultvehicletype"`
	Applocationid      int    `json:"applocationid"`
}

type PricingCreateRequest struct {
	Tenantid        int       `json:"tenantid"`
	Applocationid   int       `json:"applocationid"`
	Vehicletype     string    `json:"vehicletype"`
	Baseprice       float64   `json:"baseprice"`
	Baseweight      float64   `json:"baseweight"`
	Priceperkg      float64   `json:"priceperkg"`
	Basedistance    float64   `json:"basedistance"`
	Priceperkm      float64   `json:"priceperkm"`
	Handlingcharges float64   `json:"handlingcharges"`
	Effectivefrom   time.Time `json:"effectivefrom"`
	Effectiveto     time.Time `json:"effectiveto"`
	Currency        string    `json:"currency"`
	Priority        int       `json:"priority"`
	Status          string    `json:"status"`
}

type TripsheetCreateRequest struct {
	Sourcehubid      int  `json:"sourcehubid"`
	Destinationhubid int  `json:"destinationhubid"`
	Vehicleid        *int `json:"vehicleid"`
	Driveruserid     *int `json:"driveruserid"`
}

type TripsheetItemAddRequest struct {
	Consignmentid int `json:"consignmentid"`
}

type ExceptionCreateRequest struct {
	Consignmentid int    `json:"consignmentid"`
	Tripsheetid   *int   `json:"tripsheetid"`
	Hubid         *int   `json:"hubid"`
	Exceptiontype string `json:"exceptiontype"` // Lost, Damaged, Misrouted, Receiver_Refused, Missing_Contents, Undeliverable
	Severity      string `json:"severity"`      // Low, Medium, High, Critical
	Description   string `json:"description"`
}

type ExceptionResolveRequest struct {
	Resolution string `json:"resolution"`
	Status     string `json:"status"` // Resolved, Closed
}
