initial commit

This commit is contained in:
2026-05-25 11:52:26 +05:30
commit 0d42ac84e1
53 changed files with 11222 additions and 0 deletions

View File

@@ -0,0 +1,203 @@
package repositories
import (
"context"
"fmt"
"nearle/models"
"strconv"
firebase "firebase.google.com/go"
"firebase.google.com/go/messaging"
"google.golang.org/api/option"
"gorm.io/gorm"
)
type UtilsRepository interface {
GetApptypes(tag string) ([]models.Apptypes, error)
SendNotification(token string, notification models.FcmNotification, data map[string]string) error
GetSubcategories(moduleid int, categoryid int) ([]models.Appsubcategories, error)
GetApplocations(aid int) ([]models.Applocations, error)
GetApplocationConfig(aid int) ([]models.Applocations, error)
GetAppConfig(configID int) (models.Appconfig, error)
GetAppCategory() ([]models.AppCategory, error)
}
type utilsRepository struct {
db *gorm.DB
}
func NewUtilsRepository(db *gorm.DB) UtilsRepository {
return &utilsRepository{db: db}
}
func (r *utilsRepository) GetApptypes(tag string) ([]models.Apptypes, error) {
var data []models.Apptypes
q1 := `Select * from app_types where status ='Active' and tag='` + tag + `'`
print(q1)
err := r.db.Raw(q1).Find(&data).Error
if err != nil {
return nil, err
}
return data, nil
}
func (r *utilsRepository) SendNotification(token string, notification models.FcmNotification, data map[string]string) error {
opt := option.WithCredentialsFile("nearle-gear-firebase-adminsdk-l9oha-23ca3b3609.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
return fmt.Errorf("error initializing Firebase app: %v", err)
}
client, err := app.Messaging(context.Background())
if err != nil {
return fmt.Errorf("error getting Messaging client: %v", err)
}
message := &messaging.Message{
Token: token,
Notification: &messaging.Notification{
Title: notification.Title,
Body: notification.Body,
},
Android: &messaging.AndroidConfig{
Priority: "high",
Notification: &messaging.AndroidNotification{
Sound: "ring",
},
},
Data: data,
}
_, err = client.Send(context.Background(), message)
if err != nil {
return fmt.Errorf("error sending FCM message: %v", err)
}
return nil
}
func (r *utilsRepository) GetSubcategories(moduleid int, categoryid int) ([]models.Appsubcategories, error) {
var data []models.Appsubcategories
query := `
SELECT a.subcategoryid,a.categoryid,a.subcategoryname,b.categoryname,a.status,c.moduleid
FROM app_subcategory a
INNER JOIN app_category b ON a.categoryid = b.categoryid
INNER JOIN app_module c ON a.categoryid = c.categoryid
WHERE 1=1`
var params []interface{}
if moduleid != 0 {
query += " AND c.moduleid = ?"
params = append(params, moduleid)
}
if categoryid != 0 {
query += " AND a.categoryid = ?"
params = append(params, categoryid)
}
if err := r.db.Raw(query, params...).Scan(&data).Error; err != nil {
return nil, err
}
print(query)
return data, nil
}
func (r *utilsRepository) GetApplocations(aid int) ([]models.Applocations, error) {
var data []models.Applocations
q1 := `Select * from app_location where status='Active'`
if aid != 0 {
q1 += ` and applocationid = ?`
params := []interface{}{aid}
err := r.db.Raw(q1, params...).Scan(&data).Error
if err != nil {
return nil, err
}
} else {
err := r.db.Raw(q1).Scan(&data).Error
if err != nil {
return nil, err
}
}
print(q1)
return data, nil
}
func (r *utilsRepository) GetApplocationConfig(aid int) ([]models.Applocations, error) {
var data []models.Applocations
var q1, q2 string
if aid != 0 {
q1 = `SELECT * FROM app_location WHERE status='Active' AND applocationid=` + strconv.Itoa(aid)
} else {
q1 = `SELECT * FROM app_location WHERE status='Active'`
}
if err := r.db.Raw(q1).Scan(&data).Error; err != nil {
return nil, err
}
for i := range data {
q2 = `
SELECT a.userid, a.userfcmtoken, b.notify, b.applocationid
FROM app_users a
INNER JOIN app_locationconfig b ON a.userid = b.userid
WHERE b.notify='true' AND b.applocationid=` + strconv.Itoa(data[i].Applocationid)
var users []models.Applocationadmins
if err := r.db.Raw(q2).Scan(&users).Error; err != nil {
return nil, err
}
data[i].Applocationadmins = users
}
print(q1)
return data, nil
}
func (r *utilsRepository) GetAppConfig(configID int) (models.Appconfig, error) {
var data models.Appconfig
var q1 string
if configID != 0 {
q1 = `SELECT a.configid,a.Appname,a.paymentdevkey,a.paymentlivekey,a.fcmkey,a.googleapikey,a.applocationradius,
b.providerid,b.providerapi,b.providerkey
FROM app_config a
LEFT JOIN smsproviders b ON a.smsproviderid=b.providerid
WHERE a.configid=` + strconv.Itoa(configID)
} else {
q1 = `SELECT a.configid,a.Appname,a.paymentdevkey,a.paymentlivekey,a.fcmkey,a.googleapikey,a.applocationradius,
b.providerid,b.providerapi,b.providerkey
FROM app_config a
LEFT JOIN smsproviders b ON a.smsproviderid=b.providerid
ORDER BY configid ASC`
}
fmt.Println(q1)
if err := r.db.Raw(q1).Find(&data).Error; err != nil {
return data, err
}
return data, nil
}
func (r *utilsRepository) GetAppCategory() ([]models.AppCategory, error) {
var data []models.AppCategory
query := `SELECT * FROM app_category WHERE status = 'Active' ORDER BY sortorder ASC`
if err := r.db.Raw(query).Scan(&data).Error; err != nil {
return nil, err
}
return data, nil
}