278 lines
12 KiB
Go
278 lines
12 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
type Tenantinfo struct {
|
|
Tenantid int `json:"tenantid" gorm:"Primary_Key"`
|
|
Locationid int `json:"locationid"`
|
|
Tenantname string `json:"tenantname"`
|
|
Locationname string `json:"locationname"`
|
|
Tenanttype string `json:"tenanttype"`
|
|
Registrationno string `json:"registrationno"`
|
|
Tenanttoken string `json:"tenanttoken"`
|
|
Companyname string `json:"companyname"`
|
|
Primaryemail string `json:"primaryemail"`
|
|
Primarycontact string `json:"primarycontact"`
|
|
Locationcatact string `json:"locationcontact"`
|
|
Categoryid int `json:"categoryid"`
|
|
Subcategoryid int `json:"subcategoryid"`
|
|
Address string `json:"address"`
|
|
Suburb string `json:"suburb"`
|
|
City string `json:"city"`
|
|
State string `json:"state"`
|
|
Postcode string `json:"postcode"`
|
|
Latitude string `json:"latitude"`
|
|
Longitude string `json:"longitude"`
|
|
Tenantimage string `json:"tenantimage"`
|
|
// When the merchant was created.
|
|
//
|
|
// The column has always been there — `tenants.created` defaults to now() —
|
|
// and `GetTenantByID` already does SELECT a.*, so the value was in every
|
|
// result set and thrown away for want of a field to scan into. A shop
|
|
// profile that cannot say how long the business has been on the platform is
|
|
// missing a fact the database has held all along.
|
|
Created time.Time `json:"created"`
|
|
Tenantinfo string `json:"tenantinfo"`
|
|
// The FSSAI or trade licence.
|
|
//
|
|
// The column has always existed and `GetCustomerTenants` already selects it
|
|
// for the customer app — it was missing from THIS struct alone, so
|
|
// `gettenantinfo` could never return it however well it was stored.
|
|
//
|
|
// That is not cosmetic. The shop-profile screen reads a merchant's own
|
|
// record back through this endpoint, and the setup walkthrough decides
|
|
// whether the profile step is finished by looking at exactly this field. A
|
|
// merchant could type their licence, save it, see it stored — and the step
|
|
// would stay open forever, because the read that judges it never carried
|
|
// the value.
|
|
Licenseno string `json:"licenseno"`
|
|
Paymenttype int `json:"paymenttype"`
|
|
Paymode1 int `json:"paymode1"`
|
|
Paymode2 int `json:"paymode2"`
|
|
Promotion int `json:"promotion"`
|
|
Partnerid int `json:"partnerid"`
|
|
Minorder int `json:"minorder"`
|
|
Applocationid int `json:"applolcationid"`
|
|
Applocation string `json:"applocation"`
|
|
Approved int `json:"approved"`
|
|
Moduleid int `json:"moduleid"`
|
|
Subcategoryname string `json:"subcategoryname"`
|
|
// The app category this store trades under, by name.
|
|
//
|
|
// `GetTenantByID` has always joined `app_category b` and selected
|
|
// `b.categoryname`, and the struct had nowhere to put it — so the value was
|
|
// computed on every read and discarded, leaving the console to print
|
|
// "Category 2" at a merchant who trades under Daily Needs.
|
|
Categoryname string `json:"categoryname"`
|
|
Firstname string `json:"firstname"`
|
|
Lastname string `json:"lastname"`
|
|
Accountname string `json:"Accountname"`
|
|
Status string `json:"status"`
|
|
Allocationid int `json:"allocationid"`
|
|
Allocationtype string `json:"allocationtype"`
|
|
Allocationmode int `json:"allocationmode"`
|
|
|
|
// How many outlets this merchant has.
|
|
//
|
|
// Only `GetAllTenants` fills this; it is 0 everywhere else, which is why it
|
|
// is last and optional rather than part of the record proper. The console's
|
|
// store list previously derived it by counting duplicate rows, and this
|
|
// endpoint has never returned duplicates — see the note on the query.
|
|
Branchcount int `json:"branchcount"`
|
|
}
|
|
|
|
type Tenantlocations struct {
|
|
Locationid int `json:"locationid" gorm:"Primary_Key"`
|
|
Tenantid int `json:"tenantid"`
|
|
Applocationid int `json:"applocationid"`
|
|
Moduleid int `json:"moduleid"`
|
|
Roleid int `json:"roleid" gorm:"-"`
|
|
Locationname string `json:"locationname"`
|
|
Email string `json:"email"`
|
|
Contactno string `json:"contactno"`
|
|
Latitude string `json:"latitude"`
|
|
Longitude string `json:"longitude"`
|
|
Address string `json:"address"`
|
|
Suburb string `json:"suburb"`
|
|
City string `json:"city"`
|
|
State string `json:"state"`
|
|
Postcode string `json:"postcode"`
|
|
Opentime string `json:"opentime"`
|
|
Closetime string `json:"closetime"`
|
|
Partnerid int `json:"partnerid"`
|
|
Deliveryradius int `json:"deliveryradius"`
|
|
Deliverymins int `json:"deliverymins"`
|
|
Cancelsecs int `json:"cancelsecs"`
|
|
Status string `json:"status" gorm:"default:Active"`
|
|
|
|
// Who will run this outlet, when the caller already has somebody in mind.
|
|
//
|
|
// `gorm:"-"` because it is not a column — it names an existing `app_users`
|
|
// row to bind to the new branch instead of spawning a fresh login.
|
|
//
|
|
// Spawning was the only option, and it produced an account named after the
|
|
// SHOP, on the SHOP's email address, one per outlet. Two people behind the
|
|
// same counter shared one credential and nothing recorded which of them did
|
|
// anything. Naming a person here is what lets a merchant decide who runs a
|
|
// branch, and hire that person before the branch exists.
|
|
//
|
|
// Zero keeps the old behaviour exactly, so every existing caller is
|
|
// unaffected.
|
|
Operatorid int `json:"operatorid" gorm:"-"`
|
|
}
|
|
|
|
type Tenantslot struct {
|
|
Slot1 string `json:"slot1"`
|
|
Slot2 string `json:"slot2"`
|
|
Slot3 string `json:"slot3"`
|
|
}
|
|
|
|
type CreateTenantCustomerRequest struct {
|
|
ModuleID int `json:"moduleid"`
|
|
TenantID int `json:"tenantid"`
|
|
LocationID int `json:"locationid"`
|
|
CustomerID int `json:"customerid"`
|
|
CustomerLocationID int `json:"customerlocationid"`
|
|
Status int `json:"status"`
|
|
}
|
|
|
|
type Tenantcustomer struct {
|
|
TenantCustomerID int `json:"tenantcustomerid" gorm:"primaryKey;column:tenantcustomerid"`
|
|
ModuleID int `json:"moduleid" gorm:"column:moduleid"`
|
|
TenantID int `json:"tenantid" gorm:"column:tenantid"`
|
|
LocationID int `json:"locationid" gorm:"column:locationid"`
|
|
CustomerID int `json:"customerid" gorm:"column:customerid"`
|
|
CustomerLocationID int `json:"customerlocationid" gorm:"column:customerlocationid"`
|
|
Status int `json:"status" gorm:"column:status"`
|
|
Created time.Time `json:"created" gorm:"column:created;autoCreateTime"`
|
|
Updated time.Time `json:"updated" gorm:"column:updated;autoUpdateTime"`
|
|
}
|
|
|
|
type CustomerTenantResponse struct {
|
|
// Customer Customers `json:"customer"`
|
|
Details []TenantInfo `json:"details"`
|
|
}
|
|
|
|
type Tenantpricing struct {
|
|
Tenantpricingid int `json:"tenantpricingid" gorm:"Primary_Key"`
|
|
Pricingid int `json:"pricingid"`
|
|
Tenantid int `json:"tenantid"`
|
|
Applocationid int `json:"applocationid"`
|
|
Pricingtypeid int `json:"pricingtypeid"`
|
|
Slab string `json:"slab"`
|
|
Configid int `json:"configid"`
|
|
Pricingdate string `json:"pricingdate"`
|
|
Baseprice float32 `json:"baseprice"`
|
|
Priceperkm float32 `json:"priceperkm"`
|
|
Minkm int `json:"minkm"`
|
|
Maxkm int `json:"maxkm"`
|
|
Orders int `json:"orders"`
|
|
Othercharges float32 `json:"othercharges"`
|
|
}
|
|
|
|
type StaffInfo struct {
|
|
Userid int `json:"userid"`
|
|
// What the role is called, so a console does not have to map ids itself.
|
|
// `app_roles` holds six rows for four back-office roles and most accounts
|
|
// carry an id absent from it, so any mapping written client-side is wrong.
|
|
Rolename string `json:"rolename"`
|
|
Authname string `json:"authname"`
|
|
Configid int `json:"configid"`
|
|
Authmode int `json:"authmode"`
|
|
Roleid int `json:"roleid"`
|
|
Firstname string `json:"firstname"`
|
|
Lastname string `json:"lastname"`
|
|
Fullname string `json:"fullname"`
|
|
Password string `json:"password"`
|
|
Email string `json:"email"`
|
|
Contactno string `json:"contactno"`
|
|
Address string `json:"address"`
|
|
Suburb string `json:"suburb"`
|
|
City string `json:"city"`
|
|
State string `json:"state"`
|
|
Postcode string `json:"postcode"`
|
|
Userfcmtoken string `json:"userfcmtoken"`
|
|
Pin int `json:"pin"`
|
|
Applocationid int `json:"applocationid"`
|
|
Partnerid int `json:"partnerid"`
|
|
Tenantid int `json:"tenantid"`
|
|
Locationid int `json:"locationid"`
|
|
Locationname string `json:"locationname"`
|
|
// Whether this login still works, straight off `app_users.status`.
|
|
// Without it every row on the console's Users & access screen read
|
|
// "Unknown", because the field was never selected or sent.
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type Tenantuser struct {
|
|
Userid int `json:"userid" gorm:"Primary_Key"`
|
|
Authname string `json:"authname"`
|
|
Firstname string `json:"firstname"`
|
|
Lastname string `json:"lastname"`
|
|
Password string `json:"password"`
|
|
Email string `json:"email"`
|
|
Dialcode string `json:"dialcode"`
|
|
Contactno string `json:"contactno"`
|
|
Configid int `json:"configid"`
|
|
Authmode int `json:"authmode"`
|
|
Roleid int `json:"roleid"`
|
|
Pin int `json:"pin"`
|
|
Deviceid string `json:"deviceid"`
|
|
Devicetype string `json:"devicetype"`
|
|
Userfcmtoken string `json:"userfcmtoken"`
|
|
Address string `json:"address"`
|
|
Suburb string `json:"suburb"`
|
|
City string `json:"city"`
|
|
State string `json:"state"`
|
|
Postcode string `json:"postcode"`
|
|
Partnerid int `json:"partnerid"`
|
|
Tenantid int `json:"tenantid"`
|
|
Locationid int `json:"locationid"`
|
|
Applocationid int `json:"applocationid"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type Tenants struct {
|
|
Tenantid int `json:"tenantid" gorm:"Primary_Key"`
|
|
Tenantname string `json:"tenantname"`
|
|
Configid int `json:"configid"`
|
|
Partnerid int `json:"partnerid"`
|
|
Moduleid int `json:"moduleid"`
|
|
Tenanttype string `json:"tenanttype"`
|
|
Registrationno string `json:"registrationno"`
|
|
Tenanttoken string `json:"tenanttoken"`
|
|
Companyname string `json:"companyname"`
|
|
Devicetype string `json:"devicetype"`
|
|
Deviceid string `json:"deviceid"`
|
|
Firstname string `json:"firstname"`
|
|
Primaryemail string `json:"primaryemail"`
|
|
Primarycontact string `json:"primarycontact"`
|
|
Categoryid int `json:"categoryid"`
|
|
Subcategoryid int `json:"subcategoryid"`
|
|
Address string `json:"address"`
|
|
Suburb string `json:"suburb"`
|
|
City string `json:"city"`
|
|
State string `json:"state"`
|
|
Postcode string `json:"postcode"`
|
|
Latitude string `json:"latitude"`
|
|
Longitude string `json:"longitude"`
|
|
Tenantimage string `json:"tenantimage"`
|
|
Tenantinfo string `json:"tenantinfo"`
|
|
Paymode1 int `json:"paymode1"`
|
|
Paymode2 int `json:"paymode2"`
|
|
Promotion int `json:"promotion"`
|
|
Minorder int `json:"minorder"`
|
|
Applocationid int `json:"applocationid"`
|
|
Approved *int `json:"approved" gorm:"default:0"`
|
|
Status string `json:"status" gorm:"default:Active"`
|
|
Partneruserid int `json:"partneruserid"`
|
|
Tenantlocations Tenantlocations `json:"tenantlocations" gorm:"ForeignKey:tenantid"`
|
|
// Tenantsubscriptions Tenantsubscriptions `json:"tenantsubscriptions" gorm:"ForeignKey:tenantid"`
|
|
}
|
|
|
|
type TenantSearch struct {
|
|
Tenantname string `json:"tenantname"`
|
|
Productname string `json:"productname"`
|
|
Subcatname string `json:"subcatname"`
|
|
}
|