Merge recent UI & Postgres work into main branch #4

Merged
bouzoure merged 19 commits from postgres into main 2025-07-24 12:13:01 +02:00
3 changed files with 182 additions and 53 deletions
Showing only changes of commit ff2bb2d443 - Show all commits

View file

@ -1,15 +1,82 @@
package controllers
import "github.com/gofiber/fiber/v2"
import (
"git.readonly.ch/bouzoure/pop-camarades/helpers"
"git.readonly.ch/bouzoure/pop-camarades/models"
"github.com/gofiber/fiber/v2"
)
func Homepage(c *fiber.Ctx) error {
userid, err := helpers.GetSessionUserId(c)
if err != nil {
return err
}
allowedSectionsMembers, err := helpers.PermissionsGetSections(
userid, "show_member",
)
if err != nil {
return err
}
allowedSectionsContacts, err := helpers.PermissionsGetSections(
userid, "show_contact",
)
if err != nil {
return err
}
db, err := helpers.GetDatabase()
if err != nil {
return err
}
var membersCount int64
var contactsCount int64
db.Find(
&models.Person{},
"is_member = ? AND section_id IN ?",
true, allowedSectionsMembers,
).Count(&membersCount)
db.Find(
&models.Person{},
"is_contact = ? AND section_id IN ?",
true, allowedSectionsContacts,
).Count(&contactsCount)
return c.Render("index", fiber.Map{
"PageTitle": "Accueil",
"PageTitle": "Accueil",
"MembersCount": membersCount,
"ContactsCount": contactsCount,
})
}
func Admin(c *fiber.Ctx) error {
db, err := helpers.GetDatabase()
if err != nil {
return err
}
var sectionsCount int64
var listsCount int64
var fieldsCount int64
var usersCount int64
var rolesCount int64
db.Find(&models.Section{}).Count(&sectionsCount)
db.Find(&models.List{}).Count(&listsCount)
db.Find(&models.Field{}).Count(&fieldsCount)
db.Find(&models.User{}).Count(&usersCount)
db.Find(&models.Role{}).Count(&rolesCount)
return c.Render("admin", fiber.Map{
"PageTitle": "Administration",
"PageTitle": "Administration",
"SectionsCount": sectionsCount,
"ListsCount": listsCount,
"FieldsCount": fieldsCount,
"UsersCount": usersCount,
"RolesCount": rolesCount,
})
}

View file

@ -12,47 +12,88 @@
<hr />
</div>
<div class="row" style="max-width: 600px;">
<div class="col-12">
<a class="dashboard-tile" href="/admin/sections">
<div class="alert alert-primary">
<i class="bi-building me-2"></i>
Gestion des sections
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/lists">
<div class="alert alert-primary">
<i class="bi-list-check me-2"></i>
Gestion des listes
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/fields">
<div class="alert alert-primary">
<i class="bi-database-add me-2"></i>
Gestion des champs supplémentaires
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/users">
<div class="alert alert-primary">
<i class="bi-person-square me-2"></i>
Gestion des utilisateurs
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/roles">
<div class="alert alert-primary">
<i class="bi-briefcase me-2"></i>
Gestion des rôles
</div>
</a>
</div>
<div class="row mw-900">
<div class="col-12">
<a class="dashboard-tile" href="/admin/sections">
<div class="alert alert-primary">
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-building me-2"></i>
Gestion des sections
</div>
<div class="col text-center text-md-end fs-1">
{{ SectionsCount }}
</div>
</div>
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/lists">
<div class="alert alert-primary">
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-list-check me-2"></i>
Gestion des listes
</div>
<div class="col text-center text-md-end fs-1">
{{ ListsCount }}
</div>
</div>
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/fields">
<div class="alert alert-primary">
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-database-add me-2"></i>
Gestion des champs supplémentaires
</div>
<div class="col text-center text-md-end fs-1">
{{ FieldsCount }}
</div>
</div>
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/users">
<div class="alert alert-primary">
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-person-square me-2"></i>
Gestion des utilisateurs
</div>
<div class="col text-center text-md-end fs-1">
{{ UsersCount }}
</div>
</div>
</div>
</a>
</div>
<div class="col-12">
<a class="dashboard-tile" href="/admin/roles">
<div class="alert alert-primary">
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-briefcase me-2"></i>
Gestion des rôles
</div>
<div class="col text-center text-md-end fs-1">
{{ RolesCount }}
</div>
</div>
</div>
</a>
</div>
</div>
</div>
{% endblock %}

View file

@ -11,35 +11,56 @@
<hr />
</div>
<div class="row" style="max-width: 600px;">
<div class="row mw-900">
{% if Globals.AllowMembersPage %}
<div class="col-12">
<a class="dashboard-tile" href="/members">
<div class="alert alert-primary">
<i class="bi-people me-2"></i>
Gestion des membres
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-people me-2"></i>
Gestion des membres
</div>
<div class="col text-center text-md-end fs-1">
{{ MembersCount }}
</div>
</div>
</div>
</a>
</div>
{% endif %}
{% if Globals.AllowContactsPage %}
<div class="col-12">
<div class="col-12">
<a class="dashboard-tile" href="/contacts">
<div class="alert alert-primary">
<i class="bi-telephone me-2"></i>
Gestion des contacts
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-telephone me-2"></i>
Gestion des sympathisants
</div>
<div class="col text-center text-md-end fs-1">
{{ ContactsCount }}
</div>
</div>
</div>
</a>
</div>
{% endif %}
{% if Globals.UserIsAdmin %}
<div class="col-12">
<div class="col-12">
<a class="dashboard-tile" href="/admin">
<div class="alert alert-primary">
<i class="bi-gear me-2"></i>
Administration de l'application
<div class="row align-items-center">
<div class="col-12 text-center text-md-start col-md-6">
<i class="bi-gear me-2"></i>
Administration de l'application
</div>
<div class="col text-center text-md-end fs-1">
<i class="bi-arrow-right"></i>
</div>
</div>
</div>
</a>
</div>