New endpoints: - Admin: partner CRUD (GET/POST /admin/partners, GET/PUT/DELETE /admin/partners/:id), bulk express booking create (POST /admin/expressbooking/bulk), bulk cancel (POST /admin/bookings/bulk-cancel), reports (GET /admin/reports), password change (PUT /admin/profile/password), miler notify (POST /admin/milers/:id/notify) - Miler: PIN reset (POST /miler/reset-pin), cancel assignment (POST /miler/bookings/:bookingid/cancel), skip delivery (POST /miler/consignments/:id/skip) - Hub: batch assign (POST /hub/bookings/batch-assign) - greedy nearest-rider queue clearing, capped per rider Bug fixes: - BookingPickupComplete now sets Consignment.Tenantid from the booking's tenant instead of the completing miler's own tenant (fixes cross-tenant shipment mis-attribution) - GetHubUnassignedBookings/GetHubBookingsRange now scoped via scopeBookingsToOwnTenant (fixes partner hub staff seeing other tenants' bookings) Also: CRM booking routes renamed to expressbooking to end the naming collision with the separate CRM clients feature; PickupBooking gains nullable Tenantid; adds CLAUDE.md project memory. Verified: go build ./... and go vet ./... both clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
110 lines
3.6 KiB
Go
110 lines
3.6 KiB
Go
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 PartnerCreateRequest struct {
|
|
Partnername string `json:"partnername"`
|
|
Partnertypeid int `json:"partnertypeid"`
|
|
Contactno string `json:"contactno"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
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
|
|
}
|