Return the created location from CreateTenantLocation so its locationid is available immediately

The store/branch QR code the app scans is just {tenantid, locationid} JSON, but the
onboarding response previously discarded the DB-assigned locationid, so the frontend
had no way to render a store's QR right after onboarding without a separate lookup.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 11:08:57 +05:30
parent d4cbf92661
commit 7db81c0e68
2 changed files with 14 additions and 8 deletions

View File

@@ -25,7 +25,7 @@ type TenantRepository interface {
GetStaffs(tid int) ([]models.StaffInfo, error) GetStaffs(tid int) ([]models.StaffInfo, error)
CreateStaff(user models.User) error CreateStaff(user models.User) error
UpdateStaff(user models.User) error UpdateStaff(user models.User) error
CreateTenantLocation(data models.Tenantlocations) error CreateTenantLocation(data models.Tenantlocations) (models.Tenantlocations, error)
UpdateTenantLocation(data models.Tenantlocations) error UpdateTenantLocation(data models.Tenantlocations) error
CheckTenantByNo(cno string) int CheckTenantByNo(cno string) int
CreateTenantUser(data models.Tenants) (bool, error) CreateTenantUser(data models.Tenants) (bool, error)
@@ -346,7 +346,7 @@ func (r *tenantRepository) UpdateStaff(user models.User) error {
return nil return nil
} }
func (r *tenantRepository) CreateTenantLocation(data models.Tenantlocations) error { func (r *tenantRepository) CreateTenantLocation(data models.Tenantlocations) (models.Tenantlocations, error) {
var user models.Tenantuser var user models.Tenantuser
tx := r.db.Begin() tx := r.db.Begin()
@@ -360,10 +360,12 @@ func (r *tenantRepository) CreateTenantLocation(data models.Tenantlocations) err
data.Status = "Active" data.Status = "Active"
} }
// Step 1: Insert into tenantlocations // Step 1: Insert into tenantlocations. GORM writes the DB-assigned
// locationid back onto data, which callers need to build the store's
// QR code (payload is just {tenantid, locationid}) right after onboarding.
if err := tx.Create(&data).Error; err != nil { if err := tx.Create(&data).Error; err != nil {
tx.Rollback() tx.Rollback()
return err return models.Tenantlocations{}, err
} }
// Step 2: Insert into app_users // Step 2: Insert into app_users
@@ -389,15 +391,15 @@ func (r *tenantRepository) CreateTenantLocation(data models.Tenantlocations) err
if err := tx.Table("app_users").Create(&user).Error; err != nil { if err := tx.Table("app_users").Create(&user).Error; err != nil {
tx.Rollback() tx.Rollback()
return err return models.Tenantlocations{}, err
} }
// Commit // Commit
if err := tx.Commit().Error; err != nil { if err := tx.Commit().Error; err != nil {
return err return models.Tenantlocations{}, err
} }
return nil return data, nil
} }
func (r *tenantRepository) UpdateTenantLocation(input models.Tenantlocations) error { func (r *tenantRepository) UpdateTenantLocation(input models.Tenantlocations) error {

View File

@@ -107,7 +107,7 @@ func (s *tenantService) UpdateStaff(user models.User) error {
} }
func (s *tenantService) CreateTenantLocation(data models.Tenantlocations) map[string]interface{} { func (s *tenantService) CreateTenantLocation(data models.Tenantlocations) map[string]interface{} {
err := s.repo.CreateTenantLocation(data) created, err := s.repo.CreateTenantLocation(data)
if err != nil { if err != nil {
return map[string]interface{}{ return map[string]interface{}{
"code": http.StatusConflict, "code": http.StatusConflict,
@@ -116,10 +116,14 @@ func (s *tenantService) CreateTenantLocation(data models.Tenantlocations) map[st
} }
} }
// "details" carries back the DB-assigned locationid so the frontend can
// build the store's QR code (tenantid+locationid) immediately after
// onboarding, instead of having to look the new location up separately.
return map[string]interface{}{ return map[string]interface{}{
"code": http.StatusCreated, "code": http.StatusCreated,
"message": "Tenant Location Successfully Created", "message": "Tenant Location Successfully Created",
"status": true, "status": true,
"details": created,
} }
} }