Move pagination to helper function and implement filters+search in contacts
This commit is contained in:
parent
581d11c98d
commit
b3c309743b
5 changed files with 470 additions and 61 deletions
|
|
@ -116,45 +116,20 @@ func Members(c *fiber.Ctx) error {
|
|||
).Count(&count)
|
||||
}
|
||||
|
||||
pageQuery := c.Query("p")
|
||||
page, _ := strconv.Atoi(pageQuery)
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
|
||||
pageSize := 50
|
||||
maxPages := 1
|
||||
|
||||
if count > int64(pageSize) {
|
||||
maxPages = int(count) / pageSize
|
||||
}
|
||||
|
||||
if page > maxPages {
|
||||
page = 1
|
||||
}
|
||||
|
||||
offset := (page - 1) * pageSize
|
||||
|
||||
var pages []int
|
||||
for i := 1; i <= maxPages; i++ {
|
||||
if i == page {
|
||||
pages = append(pages, i)
|
||||
} else if i >= (page-2) && i < page {
|
||||
pages = append(pages, i)
|
||||
} else if i <= (page+2) && i > page {
|
||||
pages = append(pages, i)
|
||||
} else if page <= 2 && i <= 5 {
|
||||
pages = append(pages, i)
|
||||
} else if page >= (maxPages-2) && i >= (maxPages-5) {
|
||||
pages = append(pages, i)
|
||||
}
|
||||
}
|
||||
page, _ := strconv.Atoi(c.Query("p"))
|
||||
pagination := helpers.Paginate(50, int(count), page)
|
||||
|
||||
var people []models.Person
|
||||
if len(filterSearch) > 0 {
|
||||
result := db.Unscoped().Offset(offset).Limit(pageSize).Order(
|
||||
result := db.Unscoped().Offset(
|
||||
pagination.Offset,
|
||||
).Limit(
|
||||
pagination.PageSize,
|
||||
).Order(
|
||||
"last_name collate nocase asc, first_name collate nocase asc",
|
||||
).Preload("Section").Find(
|
||||
).Preload(
|
||||
"Section",
|
||||
).Find(
|
||||
&people,
|
||||
fmt.Sprintf(
|
||||
"is_member = ? AND section_id IN ? AND (first_name LIKE ? OR last_name LIKE ?) AND deleted_at %s",
|
||||
|
|
@ -167,9 +142,15 @@ func Members(c *fiber.Ctx) error {
|
|||
return err
|
||||
}
|
||||
} else {
|
||||
result := db.Unscoped().Offset(offset).Limit(pageSize).Order(
|
||||
result := db.Unscoped().Offset(
|
||||
pagination.Offset,
|
||||
).Limit(
|
||||
pagination.PageSize,
|
||||
).Order(
|
||||
"last_name collate nocase asc, first_name collate nocase asc",
|
||||
).Preload("Section").Find(
|
||||
).Preload(
|
||||
"Section",
|
||||
).Find(
|
||||
&people,
|
||||
fmt.Sprintf(
|
||||
"is_member = ? AND section_id IN ? AND deleted_at %s",
|
||||
|
|
@ -194,9 +175,7 @@ func Members(c *fiber.Ctx) error {
|
|||
"PageTitle": "Membres",
|
||||
"MembersPage": true,
|
||||
"People": people,
|
||||
"Page": page,
|
||||
"Pages": pages,
|
||||
"MaxPages": maxPages,
|
||||
"Pagination": pagination,
|
||||
"PermShow": permShow,
|
||||
"PermShowArchived": permShowArchived,
|
||||
"Sections": sections,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue