backend-service/internal/repositories/interfaces.go
ats-tech25 c265e8f866 feat(admin): Implement comprehensive admin management functionality
- Add new AdminHandler with methods for dashboard, schedules, users, and bookings
- Implement GetDashboard method to retrieve admin dashboard statistics
- Add CreateSchedule method with validation and error handling
- Implement GetUsers method with pagination support
- Add GetBookings method with pagination and filtering capabilities
- Implement GetFinancialReports method with date range filtering
- Add UpdateSchedule method to modify existing schedule slots
- Enhance error handling and response formatting for admin-related operations
- Integrate admin service methods for comprehensive administrative tasks
2025-11-05 16:58:34 +00:00

65 lines
2.2 KiB
Go

package repositories
import (
"time"
"attune-heart-therapy/internal/models"
)
// BookingStats represents booking statistics for admin dashboard
type BookingStats struct {
TotalBookings int64 `json:"total_bookings"`
UpcomingBookings int64 `json:"upcoming_bookings"`
CompletedBookings int64 `json:"completed_bookings"`
CancelledBookings int64 `json:"cancelled_bookings"`
}
// FinancialStats represents financial statistics for admin reports
type FinancialStats struct {
TotalRevenue float64 `json:"total_revenue"`
TotalBookings int64 `json:"total_bookings"`
AverageBooking float64 `json:"average_booking"`
}
// UserRepository handles user data persistence
type UserRepository interface {
Create(user *models.User) error
GetByID(id uint) (*models.User, error)
GetByEmail(email string) (*models.User, error)
Update(user *models.User) error
GetActiveUsersCount() (int64, error)
GetAllUsers(limit, offset int) ([]models.User, int64, error)
}
// BookingRepository handles booking data persistence
type BookingRepository interface {
Create(booking *models.Booking) error
GetByID(id uint) (*models.Booking, error)
GetByUserID(userID uint) ([]models.Booking, error)
GetByPaymentID(paymentID string) (*models.Booking, error)
Update(booking *models.Booking) error
Delete(id uint) error
GetUpcomingBookings() ([]models.Booking, error)
GetAllBookings(limit, offset int) ([]models.Booking, int64, error)
GetBookingStats() (*BookingStats, error)
GetFinancialStats(startDate, endDate time.Time) (*FinancialStats, error)
}
// ScheduleRepository handles schedule data persistence
type ScheduleRepository interface {
Create(schedule *models.Schedule) error
GetAvailable(date time.Time) ([]models.Schedule, error)
Update(schedule *models.Schedule) error
GetByID(id uint) (*models.Schedule, error)
IncrementBookedCount(scheduleID uint) error
DecrementBookedCount(scheduleID uint) error
}
// NotificationRepository handles notification data persistence
type NotificationRepository interface {
Create(notification *models.Notification) error
GetByID(id uint) (*models.Notification, error)
Update(notification *models.Notification) error
GetPendingNotifications() ([]models.Notification, error)
}