| | |
| | | return "quotation" |
| | | } |
| | | |
| | | func NewQuotationSearch() *QuotationSearch { |
| | | func NewQuotationSearch(db *gorm.DB) *QuotationSearch { |
| | | if db == nil { |
| | | db = mysqlx.GetDB() |
| | | } |
| | | return &QuotationSearch{ |
| | | Orm: mysqlx.GetDB(), |
| | | Orm: db, |
| | | } |
| | | } |
| | | |
| | |
| | | for key, value := range slf.SearchMap { |
| | | switch v := value.(type) { |
| | | case string: |
| | | if key == "validity_date" || key == "number" { |
| | | db = db.Where(key+" = ?", v) |
| | | if key == "number" || key == "validity_date" { |
| | | db = db.Where(key+" LIKE ?", "%"+v+"%") |
| | | } |
| | | |
| | | if key == "client_name" { |
| | | db = db.Joins("Client").Where("client.name = ?", v) |
| | | db = db.Joins("Client").Where("Client.name LIKE ?", "%"+v+"%") |
| | | } |
| | | |
| | | if key == "contact_name" { |
| | | db = db.Joins("Contact").Where("contact.name = ?", v) |
| | | db = db.Joins("Contact").Where("Contact.name LIKE ?", "%"+v+"%") |
| | | } |
| | | |
| | | if key == "validity_date" { |
| | | db = db.Where(key+" = ?", v) |
| | | if key == "member_name" { |
| | | db = db.Joins("Member").Where("Member.username LIKE ?", "%"+v+"%") |
| | | } |
| | | |
| | | case int: |
| | |
| | | func (slf *QuotationSearch) Find() (*Quotation, error) { |
| | | var db = slf.build() |
| | | var record Quotation |
| | | err := db.Preload("Client").Preload("Contact").Preload("SaleChance").First(&record).Error |
| | | err := db.Preload("Products").Preload("Client").Preload("Contact").Preload("SaleChance").First(&record).Error |
| | | return &record, err |
| | | } |
| | | |
| | |
| | | db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) |
| | | } |
| | | |
| | | err := db.Preload("Member").Preload("QuotationStatus").Preload("Client").Preload("Contact").Order("id desc").Find(&records).Error |
| | | err := db.Preload("Products").Preload("Member").Preload("QuotationStatus").Preload("Client").Preload("Contact").Order("id desc").Find(&records).Error |
| | | return records, total, err |
| | | } |
| | | |
| | |
| | | slf.SearchMap = searchMap |
| | | return slf |
| | | } |
| | | func (slf *QuotationSearch) SetIds(ids []int) *QuotationSearch { |
| | | slf.Orm = slf.Orm.Where("id in (?)", ids) |
| | | return slf |
| | | } |