63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
"gestion/models"
|
|
"gestion/utils"
|
|
"strings"
|
|
)
|
|
|
|
func (d *Database) CheckAddress(addressByUser *models.Command) error {
|
|
var correction models.Address
|
|
result := d.GDB.Where("invalid_address = ?", addressByUser.DeliveryAddress).First(&correction)
|
|
if result.Error == nil {
|
|
addressByUser.DeliveryAddress = correction.CorrectAddress
|
|
return fmt.Errorf("adresse invalide %s", correction.CorrectAddress)
|
|
}
|
|
if !isNotFound(result.Error) {
|
|
return fmt.Errorf("checkAddress: %w", result.Error)
|
|
}
|
|
|
|
// (accents/casse/espaces) pour rattraper les variantes mineures de saisie.
|
|
corrections, err := d.AllAddress()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
normalizedInput := utils.NormalizeAddress(addressByUser.DeliveryAddress)
|
|
for _, c := range corrections {
|
|
if strings.EqualFold(utils.NormalizeAddress(c.InvalidAddress), normalizedInput) {
|
|
addressByUser.DeliveryAddress = c.CorrectAddress
|
|
return fmt.Errorf("adresse invalide %s", c.CorrectAddress)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *Database) AddAddress(CorrectAddressByAdmin string, InvalidAddressByAdmin string) error {
|
|
address := models.Address{
|
|
InvalidAddress: InvalidAddressByAdmin,
|
|
CorrectAddress: CorrectAddressByAdmin,
|
|
}
|
|
if err := d.GDB.Create(&address).Error; err != nil {
|
|
return fmt.Errorf("addAddress: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *Database) DeleteAddress(InvalidAddressByAdmin string, CorrectAddressByAdmin string) error {
|
|
result := d.GDB.Where("invalid_address = ? AND correct_address = ?", InvalidAddressByAdmin, CorrectAddressByAdmin).
|
|
Delete(&models.Address{})
|
|
if result.Error != nil {
|
|
return fmt.Errorf("deleteAddress: %w", result.Error)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *Database) AllAddress() ([]models.Address, error) {
|
|
var addresses []models.Address
|
|
if err := d.GDB.Find(&addresses).Error; err != nil {
|
|
return nil, fmt.Errorf("getAllAddress: %w", err)
|
|
}
|
|
return addresses, nil
|
|
}
|