aboutsummaryrefslogtreecommitdiff
path: root/customer/validators.go
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2023-09-03 22:02:56 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2023-09-03 22:02:56 +0530
commitc6bc8d0c6d1c1ab5d26b9e47e0248002d22ecf8f (patch)
treea80b66210b6f45aaa8b3c0c39baeda451b38f765 /customer/validators.go
parent6922e09f46a24b7bd70db5e78ab1c4a77e59303c (diff)
moved contact details to customer model for simplicity
Diffstat (limited to 'customer/validators.go')
-rw-r--r--customer/validators.go59
1 files changed, 40 insertions, 19 deletions
diff --git a/customer/validators.go b/customer/validators.go
index bfd244f..2a37394 100644
--- a/customer/validators.go
+++ b/customer/validators.go
@@ -29,8 +29,9 @@ import (
func validateContactField(field, value string, userId uint) error {
if value != "" {
var count int64
- err := db.Model(&CustomerContact{}).
- Where(field + " = ? and user_id = ?", value, userId).
+ err := db.Model(&Customer{}).
+ //Select("").
+ Where("user_id = ? and " + field + " = ?", userId, value).
Count(&count).
Error
@@ -55,29 +56,15 @@ func validateContactField(field, value string, userId uint) error {
return nil
}
-func (c *CustomerContact) validate() error {
+func (c *Customer) validate() error {
// trim whitespaces
c.Name = strings.TrimSpace(c.Name)
+ c.Gstin = strings.TrimSpace(c.Gstin)
+ c.ContactName = strings.TrimSpace(c.Name)
c.Phone = strings.TrimSpace(c.Phone)
c.Email = strings.TrimSpace(c.Email)
c.Website = strings.TrimSpace(c.Website)
- var err error
- for _, i := range [][]string{{"phone", c.Phone}, {"email", c.Email}, {"website", c.Website}} {
- err = validateContactField(i[0], i[1], c.UserID)
- if err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func (c *Customer) validate() error {
- // trim whitespaces
- c.Name = strings.TrimSpace(c.Name)
- c.Gstin = strings.TrimSpace(c.Gstin)
-
// don't validate if GSTIN is empty
if c.Gstin != "" {
// GSTIN regex validation
@@ -103,5 +90,39 @@ func (c *Customer) validate() error {
}
}
+ var err error
+ for _, i := range [][]string{{"phone", c.Phone}, {"email", c.Email}, {"website", c.Website}} {
+ err = validateContactField(i[0], i[1], c.UserID)
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func checkCustomerOwnership(customerId, userId uint) error {
+ var customer Customer
+ err := db.
+ Select("id", "user_id").
+ Where("id = ?", customerId).
+ Find(&customer).
+ Error
+
+ // TODO: handle potential errors
+ if err != nil {
+ return err
+ }
+
+ // customer doesn't exist
+ if customer.ID == 0 {
+ return errors.ErrNotFound
+ }
+
+ // user doesn't own this customer
+ if customer.UserID != userId {
+ return errors.ErrForbidden
+ }
+
return nil
}