Merge remote-tracking branch 'origin/product-procedures' into front-styles
This commit is contained in:
53
app/repos/currencyRepo/currencyRepo.go
Normal file
53
app/repos/currencyRepo/currencyRepo.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package currencyRepo
|
||||
|
||||
import (
|
||||
"git.ma-al.com/goc_daniel/b2b/app/db"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/model"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/query/filters"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/query/find"
|
||||
)
|
||||
|
||||
type UICurrencyRepo interface {
|
||||
CreateConversionRate(currencyRate *model.CurrencyRate) error
|
||||
Get(id uint) (*model.Currency, error)
|
||||
}
|
||||
|
||||
type CurrencyRepo struct{}
|
||||
|
||||
func New() UICurrencyRepo {
|
||||
return &CurrencyRepo{}
|
||||
}
|
||||
|
||||
func (repo *CurrencyRepo) CreateConversionRate(currencyRate *model.CurrencyRate) error {
|
||||
return db.DB.Create(currencyRate).Error
|
||||
}
|
||||
|
||||
func (repo *CurrencyRepo) Get(id uint) (*model.Currency, error) {
|
||||
var currency model.Currency
|
||||
|
||||
err := db.DB.Table("b2b_currencies c").
|
||||
Select("c.*, r.conversion_rate").
|
||||
Joins(`
|
||||
LEFT JOIN b2b_currency_rates r
|
||||
ON r.b2b_id_currency = c.id
|
||||
AND r.created_at = (
|
||||
SELECT MAX(created_at)
|
||||
FROM b2b_currency_rates
|
||||
WHERE b2b_id_currency = c.id
|
||||
)
|
||||
`).
|
||||
Where("c.id = ?", id).
|
||||
Scan(¤cy).Error
|
||||
|
||||
return ¤cy, err
|
||||
}
|
||||
|
||||
func (repo *CurrencyRepo) Find(langId uint, p find.Paging, filt *filters.FiltersList) (*find.Found[model.Currency], error) {
|
||||
|
||||
found, err := find.Paginate[model.Currency](langId, p, db.DB.
|
||||
Model(&model.Currency{}).
|
||||
Scopes(filt.All()...),
|
||||
)
|
||||
|
||||
return &found, err
|
||||
}
|
||||
27
app/repos/customerRepo/customerRepo.go
Normal file
27
app/repos/customerRepo/customerRepo.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package customerRepo
|
||||
|
||||
import (
|
||||
"git.ma-al.com/goc_daniel/b2b/app/db"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/model"
|
||||
)
|
||||
|
||||
type UICustomerRepo interface {
|
||||
Get(id uint) (*model.Customer, error)
|
||||
}
|
||||
|
||||
type CustomerRepo struct{}
|
||||
|
||||
func New() UICustomerRepo {
|
||||
return &CustomerRepo{}
|
||||
}
|
||||
|
||||
func (repo *CustomerRepo) Get(id uint) (*model.Customer, error) {
|
||||
var customer model.Customer
|
||||
|
||||
err := db.DB.
|
||||
Preload("Role").
|
||||
First(&customer, id).
|
||||
Error
|
||||
|
||||
return &customer, err
|
||||
}
|
||||
39
app/repos/productsRepo/productsRepo.go
Normal file
39
app/repos/productsRepo/productsRepo.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package productsRepo
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"git.ma-al.com/goc_daniel/b2b/app/db"
|
||||
)
|
||||
|
||||
type UIProductsRepo interface {
|
||||
GetJSON(p_id_product, p_id_shop, p_id_lang, p_id_customer, b2b_id_country, p_quantity int) (*json.RawMessage, error)
|
||||
}
|
||||
|
||||
type ProductsRepo struct{}
|
||||
|
||||
func New() UIProductsRepo {
|
||||
return &ProductsRepo{}
|
||||
}
|
||||
|
||||
func (repo *ProductsRepo) GetJSON(p_id_product, p_id_shop, p_id_lang, p_id_customer, b2b_id_country, p_quantity int) (*json.RawMessage, error) {
|
||||
var productStr string // ← Scan as string first
|
||||
|
||||
err := db.DB.Raw(`CALL get_full_product(?,?,?,?,?,?)`,
|
||||
p_id_product, p_id_shop, p_id_lang, p_id_customer, b2b_id_country, p_quantity).
|
||||
Scan(&productStr).
|
||||
Error
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Optional: validate it's valid JSON
|
||||
if !json.Valid([]byte(productStr)) {
|
||||
return nil, fmt.Errorf("invalid json returned from stored procedure")
|
||||
}
|
||||
|
||||
raw := json.RawMessage(productStr)
|
||||
return &raw, nil
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
type UIRoutesRepo interface {
|
||||
GetRoutes(langId uint) ([]model.Route, error)
|
||||
GetTopMenu(id uint) ([]model.B2BTopMenu, error)
|
||||
GetTopMenu(id uint, roleId uint) ([]model.B2BTopMenu, error)
|
||||
}
|
||||
|
||||
type RoutesRepo struct{}
|
||||
@@ -26,12 +26,16 @@ func (p *RoutesRepo) GetRoutes(langId uint) ([]model.Route, error) {
|
||||
return routes, nil
|
||||
}
|
||||
|
||||
func (p *RoutesRepo) GetTopMenu(id uint) ([]model.B2BTopMenu, error) {
|
||||
func (p *RoutesRepo) GetTopMenu(langId uint, roleId uint) ([]model.B2BTopMenu, error) {
|
||||
var menus []model.B2BTopMenu
|
||||
|
||||
err := db.Get().
|
||||
Where("active = ?", 1).
|
||||
Order("parent_id ASC, position ASC").
|
||||
err := db.
|
||||
Get().
|
||||
Model(model.B2BTopMenu{}).
|
||||
Joins("JOIN b2b_top_menu_roles tmr ON tmr.top_menu_id = b2b_top_menu.menu_id").
|
||||
Where(model.B2BTopMenu{Active: 1}).
|
||||
Where("tmr.role_id = ?", roleId).
|
||||
Order("b2b_top_menu.parent_id ASC, b2b_top_menu.position ASC").
|
||||
Find(&menus).Error
|
||||
|
||||
return menus, err
|
||||
|
||||
Reference in New Issue
Block a user