Find is done
This commit is contained in:
@@ -49,7 +49,7 @@ func (s *AddressesService) AddNewAddress(user_id uint, address_info string, coun
|
||||
return responseErrors.ErrMaxAmtOfAddressesReached
|
||||
}
|
||||
|
||||
_, err = s.validateAddressJson(address_info, country_id)
|
||||
_, err = s.ValidateAddressJson(address_info, country_id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -66,7 +66,7 @@ func (s *AddressesService) ModifyAddress(user_id uint, address_id uint, address_
|
||||
return responseErrors.ErrUserHasNoSuchAddress
|
||||
}
|
||||
|
||||
_, err = s.validateAddressJson(address_info, country_id)
|
||||
_, err = s.ValidateAddressJson(address_info, country_id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -88,7 +88,7 @@ func (s *AddressesService) RetrieveAddressesInfo(user_id uint) (*[]model.Address
|
||||
next_address.CustomerID = (*parsed_addresses)[i].CustomerID
|
||||
next_address.CountryID = (*parsed_addresses)[i].CountryID
|
||||
|
||||
next_address.AddressInfo, err = s.validateAddressJson((*parsed_addresses)[i].AddressInfo, next_address.CountryID)
|
||||
next_address.AddressInfo, err = s.ValidateAddressJson((*parsed_addresses)[i].AddressInfo, next_address.CountryID)
|
||||
// log such errors
|
||||
if err != nil {
|
||||
fmt.Printf("err: %v\n", err)
|
||||
@@ -112,7 +112,7 @@ func (s *AddressesService) DeleteAddress(user_id uint, address_id uint) error {
|
||||
}
|
||||
|
||||
// validateAddressJson makes sure that the info string represents a valid json of address in given country
|
||||
func (s *AddressesService) validateAddressJson(info string, country_id uint) (model.AddressField, error) {
|
||||
func (s *AddressesService) ValidateAddressJson(info string, country_id uint) (model.AddressField, error) {
|
||||
dec := json.NewDecoder(strings.NewReader(info))
|
||||
dec.DisallowUnknownFields()
|
||||
|
||||
|
||||
@@ -1,28 +1,66 @@
|
||||
package orderService
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"git.ma-al.com/goc_daniel/b2b/app/delivery/middleware/perms"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/model"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/repos/cartsRepo"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/repos/ordersRepo"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/service/addressesService"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/query/filters"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/query/find"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/utils/responseErrors"
|
||||
)
|
||||
|
||||
type OrderService struct {
|
||||
ordersRepo ordersRepo.UIOrdersRepo
|
||||
ordersRepo ordersRepo.UIOrdersRepo
|
||||
cartsRepo cartsRepo.UICartsRepo
|
||||
addressesService *addressesService.AddressesService
|
||||
}
|
||||
|
||||
func New() *OrderService {
|
||||
return &OrderService{
|
||||
ordersRepo: ordersRepo.New(),
|
||||
ordersRepo: ordersRepo.New(),
|
||||
cartsRepo: cartsRepo.New(),
|
||||
addressesService: addressesService.New(),
|
||||
}
|
||||
}
|
||||
|
||||
func (s *OrderService) Find(user *model.Customer, p find.Paging, filt *filters.FiltersList) (find.Found[model.CustomerOrder], error) {
|
||||
if !user.HasPermission(perms.ViewAllOrders) {
|
||||
// append filter to view only this user's orders
|
||||
idStr := strconv.FormatUint(uint64(user.ID), 10)
|
||||
filt.Append(filters.Where("b2b_customer_orders.user_id = " + idStr))
|
||||
}
|
||||
|
||||
return s.ordersRepo.Find(user.ID, p, filt)
|
||||
}
|
||||
|
||||
func (s *OrderService) PlaceNewOrder(user_id uint, cart_id uint, country_id uint, address_info string) error {
|
||||
return nil
|
||||
_, err := s.addressesService.ValidateAddressJson(address_info, country_id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
amt, err := s.cartsRepo.UserHasCart(user_id, cart_id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if amt <= 0 {
|
||||
return responseErrors.ErrUserHasNoSuchCart
|
||||
}
|
||||
|
||||
cart, err := s.cartsRepo.RetrieveCart(user_id, cart_id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(cart.Products) == 0 {
|
||||
return responseErrors.ErrEmptyCart
|
||||
}
|
||||
|
||||
// all checks passed
|
||||
return s.ordersRepo.PlaceNewOrder(user_id, cart_id, country_id, address_info)
|
||||
}
|
||||
|
||||
func (s *OrderService) ChangeOrderAddress(user *model.Customer, order_id uint, country_id uint, address_info string) error {
|
||||
|
||||
Reference in New Issue
Block a user