bpiek/api/products.go

90 lines
1.9 KiB
Go
Raw Normal View History

package api
import (
"errors"
"gitea.24example.ru/spavelit/bpiek/model"
)
var products []model.Product
var remainsAndPlanresidues []model.ShortProduct
func (a *Api) GetProducts() ([]model.Product, error) {
if len(products) > 0 {
return products, nil
}
parentCategories, err := a.GetParentCategories()
if err != nil {
return nil, err
}
for _, category := range parentCategories {
categoriesAndProduct, err := a.GetCategoriesAndProductsBySlugParentCategory(category.Slug)
if err != nil {
return nil, err
}
if len(categoriesAndProduct.Products) != 0 {
products = append(products, categoriesAndProduct.Products...)
}
}
return products, nil
}
func (a *Api) GetProductByArticle(article string) (model.Product, error) {
apiResponse, err := a.Client.HTTPClient.
R().
SetResult(&model.Product{}).
Get("client/products/" + article)
if err != nil {
return model.Product{}, err
}
if apiResponse.StatusCode() != 200 {
return model.Product{}, errors.New(
"error getting product by article: " + article)
}
return apiResponse.Result().(model.Product), nil
}
func (a *Api) GetRemainsAndPlanresidues() ([]model.ShortProduct, error) {
if len(remainsAndPlanresidues) != 0 {
return remainsAndPlanresidues, nil
}
parentCategories, err := a.GetParentCategories()
if err != nil {
return nil, err
}
for _, category := range parentCategories {
apiResponse, err := a.Client.HTTPClient.
R().
SetResult(&model.RemainsAndPlanresiduesResponse{}).
Get("client/category/" + category.Slug + "/balances-json")
if err != nil {
return nil, err
}
if apiResponse.StatusCode() != 200 {
return nil, errors.New("file remains and planresidues not found")
}
result := apiResponse.Result().(model.RemainsAndPlanresiduesResponse)
if len(result.Products) != 0 {
remainsAndPlanresidues = append(remainsAndPlanresidues, result.Products...)
}
}
return remainsAndPlanresidues, nil
}