diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b378326..84e698c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,8 +20,8 @@ build-2:
script:
- docker login -u $DEPLOY_USERNAME -p $DEPLOY_TOKEN 103.82.242.92:8900
- docker-compose build
- - docker tag registry.gitlab.com/hanifsalafi/web-humas-be:dev 103.82.242.92:8900/humas/web-humas-be:dev
- - docker push 103.82.242.92:8900/humas/web-humas-be:dev
+ - docker tag registry.gitlab.com/hanifsalafi/web-medols-be:dev 103.82.242.92:8900/medols/web-medols-be:dev
+ - docker push 103.82.242.92:8900/medols/web-medols-be:dev
deploy:
stage: deploy
@@ -30,4 +30,4 @@ deploy:
services:
- docker:dind
script:
- - curl --user $JENKINS_USER:$JENKINS_PWD http://38.47.180.165:8080/job/autodeploy-humas-be/build?token=autodeployhumas
\ No newline at end of file
+ - curl --user $JENKINS_USER:$JENKINS_PWD http://38.47.180.165:8080/job/autodeploy-medols-be/build?token=autodeploymedols
\ No newline at end of file
diff --git a/.idea/go-humas-be.iml b/.idea/go-humas-be.iml
deleted file mode 100644
index 5e764c4..0000000
--- a/.idea/go-humas-be.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index ebf4611..40fa4db 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/app/database/entity/activity_logs.entity.go b/app/database/entity/activity_logs.entity.go
index 219cca0..79cb8aa 100644
--- a/app/database/entity/activity_logs.entity.go
+++ b/app/database/entity/activity_logs.entity.go
@@ -1,13 +1,17 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ActivityLogs struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- ActivityTypeId int `json:"activity_type_id" gorm:"type:int4"`
- Url string `json:"url" gorm:"type:varchar"`
- VisitorIp *string `json:"visitor_ip" gorm:"type:varchar"`
- ArticleId *uint `json:"article_id" gorm:"type:int4"`
- UserId *uint `json:"user_id" gorm:"type:int4"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ ActivityTypeId int `json:"activity_type_id" gorm:"type:int4"`
+ Url string `json:"url" gorm:"type:varchar"`
+ VisitorIp *string `json:"visitor_ip" gorm:"type:varchar"`
+ ArticleId *uint `json:"article_id" gorm:"type:int4"`
+ UserId *uint `json:"user_id" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/advertisement.entity.go b/app/database/entity/advertisement.entity.go
index 387674e..f997d18 100644
--- a/app/database/entity/advertisement.entity.go
+++ b/app/database/entity/advertisement.entity.go
@@ -1,18 +1,22 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type Advertisement struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Title string `json:"title" gorm:"type:varchar"`
- Description string `json:"description" gorm:"type:varchar"`
- RedirectLink string `json:"redirect_link" gorm:"type:varchar"`
- ContentFilePath *string `json:"content_file_path" gorm:"type:varchar"`
- ContentFileName *string `json:"content_file_name" gorm:"type:varchar"`
- Placement string `json:"placement" gorm:"type:varchar"`
- StatusId int `json:"status_id" gorm:"type:int4"`
- IsPublish bool `json:"is_publish" gorm:"type:bool"`
- IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Title string `json:"title" gorm:"type:varchar"`
+ Description string `json:"description" gorm:"type:varchar"`
+ RedirectLink string `json:"redirect_link" gorm:"type:varchar"`
+ ContentFilePath *string `json:"content_file_path" gorm:"type:varchar"`
+ ContentFileName *string `json:"content_file_name" gorm:"type:varchar"`
+ Placement string `json:"placement" gorm:"type:varchar"`
+ StatusId int `json:"status_id" gorm:"type:int4"`
+ IsPublish bool `json:"is_publish" gorm:"type:bool"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/article_approvals.entity.go b/app/database/entity/article_approvals.entity.go
index 9b14f29..1420090 100644
--- a/app/database/entity/article_approvals.entity.go
+++ b/app/database/entity/article_approvals.entity.go
@@ -1,13 +1,17 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ArticleApprovals struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- ArticleId uint `json:"article_id" gorm:"type:int4"`
- ApprovalBy uint `json:"approval_by" gorm:"type:int4"`
- StatusId int `json:"status_id" gorm:"type:int4"`
- Message string `json:"message" gorm:"type:varchar"`
- ApprovalAtLevel *int `json:"approval_at_level" gorm:"type:int4"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ ArticleId uint `json:"article_id" gorm:"type:int4"`
+ ApprovalBy uint `json:"approval_by" gorm:"type:int4"`
+ StatusId int `json:"status_id" gorm:"type:int4"`
+ Message string `json:"message" gorm:"type:varchar"`
+ ApprovalAtLevel *int `json:"approval_at_level" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/article_categories.entity.go b/app/database/entity/article_categories.entity.go
index 3894a66..0c1ebdd 100644
--- a/app/database/entity/article_categories.entity.go
+++ b/app/database/entity/article_categories.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ArticleCategories struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -16,6 +19,7 @@ type ArticleCategories struct {
StatusId int `json:"status_id" gorm:"type:int4;default:1"`
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/article_category_details/article_category_details.entity.go b/app/database/entity/article_category_details/article_category_details.entity.go
index 85c2892..50f1e16 100644
--- a/app/database/entity/article_category_details/article_category_details.entity.go
+++ b/app/database/entity/article_category_details/article_category_details.entity.go
@@ -1,8 +1,9 @@
package article_category_details
import (
- entity "go-humas-be/app/database/entity"
+ "github.com/google/uuid"
"time"
+ entity "web-medols-be/app/database/entity"
)
type ArticleCategoryDetails struct {
@@ -10,6 +11,7 @@ type ArticleCategoryDetails struct {
ArticleId uint `json:"article_id" gorm:"type:int4"`
CategoryId int `json:"category_id" gorm:"type:int4"`
Category *entity.ArticleCategories `json:"category" gorm:"foreignKey:CategoryId;references:ID"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/article_comments.entity.go b/app/database/entity/article_comments.entity.go
index de1da6a..7a263ff 100644
--- a/app/database/entity/article_comments.entity.go
+++ b/app/database/entity/article_comments.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ArticleComments struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -11,6 +14,7 @@ type ArticleComments struct {
IsPublic bool `json:"is_public" gorm:"type:bool;default:false"`
StatusId int `json:"status_id" gorm:"type:int4;default:0"`
ApprovedAt *time.Time `json:"approved_at" gorm:"type:timestamp"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/article_files.entity.go b/app/database/entity/article_files.entity.go
index 4c0f9b4..c1891de 100644
--- a/app/database/entity/article_files.entity.go
+++ b/app/database/entity/article_files.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ArticleFiles struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -19,6 +22,7 @@ type ArticleFiles struct {
StatusId int `json:"status_id" gorm:"type:int4"`
IsPublish *bool `json:"is_publish" gorm:"type:bool;default:false"`
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/articles.entity.go b/app/database/entity/articles.entity.go
index 6fe3f4f..f77f238 100644
--- a/app/database/entity/articles.entity.go
+++ b/app/database/entity/articles.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type Articles struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -29,6 +32,7 @@ type Articles struct {
IsDraft *bool `json:"is_draft" gorm:"type:bool;default:false"`
DraftedAt *time.Time `json:"drafted_at" gorm:"type:timestamp"`
PublishSchedule *string `json:"publish_schedule" gorm:"type:varchar"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/audit_trails.entity.go b/app/database/entity/audit_trails.entity.go
index acb37f1..399c8f2 100644
--- a/app/database/entity/audit_trails.entity.go
+++ b/app/database/entity/audit_trails.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type AuditTrails struct {
ID uint `gorm:"primaryKey"`
@@ -13,5 +16,6 @@ type AuditTrails struct {
RequestBody string
ResponseBody string
DurationMs int64
+ ClientId *uuid.UUID
CreatedAt time.Time
}
diff --git a/app/database/entity/clients.go b/app/database/entity/clients.go
new file mode 100644
index 0000000..b4ba2f1
--- /dev/null
+++ b/app/database/entity/clients.go
@@ -0,0 +1,15 @@
+package entity
+
+import (
+ "github.com/google/uuid"
+ "time"
+)
+
+type Clients struct {
+ ID uuid.UUID `json:"id" gorm:"primaryKey;type:UUID"`
+ Name string `json:"name" gorm:"type:varchar"`
+ CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+}
diff --git a/app/database/entity/csrf_token_records.entity.go b/app/database/entity/csrf_token_records.entity.go
index e5681ca..101dd8c 100644
--- a/app/database/entity/csrf_token_records.entity.go
+++ b/app/database/entity/csrf_token_records.entity.go
@@ -1,11 +1,15 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type CsrfTokenRecords struct {
- ID uint `gorm:"primaryKey"`
- Token string `gorm:"uniqueIndex;size:255"`
- Value []byte `gorm:"value"`
- ExpireAt time.Time `gorm:"index"`
+ ID uint `gorm:"primaryKey"`
+ Token string `gorm:"uniqueIndex;size:255"`
+ Value []byte `gorm:"value"`
+ ExpireAt time.Time `gorm:"index"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
CreatedAt time.Time
}
diff --git a/app/database/entity/custom_static_pages.entity.go b/app/database/entity/custom_static_pages.entity.go
index 3a6388c..68c8f5f 100644
--- a/app/database/entity/custom_static_pages.entity.go
+++ b/app/database/entity/custom_static_pages.entity.go
@@ -1,14 +1,18 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type CustomStaticPages struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Title string `json:"title" gorm:"type:varchar"`
- Description string `json:"description" gorm:"type:varchar"`
- Slug string `json:"slug" gorm:"type:varchar"`
- HtmlBody string `json:"html_body" gorm:"type:text"`
- IsActive bool `json:"is_active" gorm:"type:bool"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Title string `json:"title" gorm:"type:varchar"`
+ Description string `json:"description" gorm:"type:varchar"`
+ Slug string `json:"slug" gorm:"type:varchar"`
+ HtmlBody string `json:"html_body" gorm:"type:text"`
+ IsActive bool `json:"is_active" gorm:"type:bool"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/feedbacks.entity.go b/app/database/entity/feedbacks.entity.go
index 8f8b6f9..499dfd2 100644
--- a/app/database/entity/feedbacks.entity.go
+++ b/app/database/entity/feedbacks.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type Feedbacks struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -10,6 +13,7 @@ type Feedbacks struct {
StatusId int `json:"status_id" gorm:"type:int4;default:0"`
ApprovedAt *time.Time `json:"approved_at" gorm:"type:timestamp"`
ReplyMessage *string `json:"reply_message" gorm:"type:varchar"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/forgot_passwords.entity.go b/app/database/entity/forgot_passwords.entity.go
index 1f95270..2fd5543 100644
--- a/app/database/entity/forgot_passwords.entity.go
+++ b/app/database/entity/forgot_passwords.entity.go
@@ -1,12 +1,16 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type ForgotPasswords struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- KeycloakID string `json:"keycloak_id" gorm:"type:varchar"`
- CodeRequest string `json:"code_request" gorm:"type:varchar"`
- IsActive bool `json:"is_active" gorm:"type:bool"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ KeycloakID string `json:"keycloak_id" gorm:"type:varchar"`
+ CodeRequest string `json:"code_request" gorm:"type:varchar"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive bool `json:"is_active" gorm:"type:bool"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/magazine_files.entity.go b/app/database/entity/magazine_files.entity.go
index c16ad49..1ebc3f4 100644
--- a/app/database/entity/magazine_files.entity.go
+++ b/app/database/entity/magazine_files.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type MagazineFiles struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -18,6 +21,7 @@ type MagazineFiles struct {
HeightPixel *string `json:"height_pixel" gorm:"type:varchar"`
Size *string `json:"size" gorm:"type:varchar"`
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/magazines.entity.go b/app/database/entity/magazines.entity.go
index 3cfc206..d2ed199 100644
--- a/app/database/entity/magazines.entity.go
+++ b/app/database/entity/magazines.entity.go
@@ -1,6 +1,9 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type Magazines struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
@@ -14,6 +17,7 @@ type Magazines struct {
StatusId int `json:"status_id" gorm:"type:int4"`
IsPublish *bool `json:"is_publish" gorm:"type:bool"`
PublishedAt *time.Time `json:"published_at" gorm:"type:timestamp"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive bool `json:"is_active" gorm:"type:bool"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/entity/master_menus.entity.go b/app/database/entity/master_menus.entity.go
index 143e764..b0e1290 100644
--- a/app/database/entity/master_menus.entity.go
+++ b/app/database/entity/master_menus.entity.go
@@ -1,18 +1,22 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type MasterMenus struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Name string `json:"name" gorm:"type:varchar"`
- Description string `json:"description" gorm:"type:varchar"`
- ModuleId int `json:"module_id" gorm:"type:int4"`
- ParentMenuId *int `json:"parent_menu_id" gorm:"type:int4"`
- Icon *string `json:"icon" gorm:"type:varchar"`
- Group string `json:"group" gorm:"type:varchar"`
- Position *int `json:"position" gorm:"type:int4"`
- StatusId int `json:"status_id" gorm:"type:int4"`
- IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Name string `json:"name" gorm:"type:varchar"`
+ Description string `json:"description" gorm:"type:varchar"`
+ ModuleId int `json:"module_id" gorm:"type:int4"`
+ ParentMenuId *int `json:"parent_menu_id" gorm:"type:int4"`
+ Icon *string `json:"icon" gorm:"type:varchar"`
+ Group string `json:"group" gorm:"type:varchar"`
+ Position *int `json:"position" gorm:"type:int4"`
+ StatusId int `json:"status_id" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/master_modules.entity.go b/app/database/entity/master_modules.entity.go
index b332b92..4eedc12 100644
--- a/app/database/entity/master_modules.entity.go
+++ b/app/database/entity/master_modules.entity.go
@@ -1,14 +1,18 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type MasterModules struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Name string `json:"name" gorm:"type:varchar"`
- Description string `json:"description" gorm:"type:varchar"`
- PathUrl string `json:"path_url" gorm:"type:varchar"`
- StatusId int `json:"status_id" gorm:"type:int4"`
- IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Name string `json:"name" gorm:"type:varchar"`
+ Description string `json:"description" gorm:"type:varchar"`
+ PathUrl string `json:"path_url" gorm:"type:varchar"`
+ StatusId int `json:"status_id" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/one_time_passwords.entity.go b/app/database/entity/one_time_passwords.entity.go
index aba4be7..1b7b6a6 100644
--- a/app/database/entity/one_time_passwords.entity.go
+++ b/app/database/entity/one_time_passwords.entity.go
@@ -1,14 +1,18 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type OneTimePasswords struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Email string `json:"email" gorm:"type:varchar"`
- Name *string `json:"name" gorm:"type:varchar"`
- Identity *string `json:"identity" gorm:"type:varchar"`
- OtpCode string `json:"otp_code" gorm:"type:varchar"`
- ValidUntil time.Time `json:"valid_until" gorm:"default:(NOW() + INTERVAL '10 minutes')"`
- IsActive bool `json:"is_active" gorm:"type:bool"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Email string `json:"email" gorm:"type:varchar"`
+ Name *string `json:"name" gorm:"type:varchar"`
+ Identity *string `json:"identity" gorm:"type:varchar"`
+ OtpCode string `json:"otp_code" gorm:"type:varchar"`
+ ValidUntil time.Time `json:"valid_until" gorm:"default:(NOW() + INTERVAL '10 minutes')"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive bool `json:"is_active" gorm:"type:bool"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/subscription.entity.go b/app/database/entity/subscription.entity.go
index ef9de18..3d11947 100644
--- a/app/database/entity/subscription.entity.go
+++ b/app/database/entity/subscription.entity.go
@@ -1,11 +1,15 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type Subscription struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Email string `json:"email" gorm:"type:varchar"`
- IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Email string `json:"email" gorm:"type:varchar"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/user_levels.entity.go b/app/database/entity/user_levels.entity.go
index dbbea4d..ee7a906 100644
--- a/app/database/entity/user_levels.entity.go
+++ b/app/database/entity/user_levels.entity.go
@@ -1,17 +1,21 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type UserLevels struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Name string `json:"name" gorm:"type:varchar"`
- AliasName string `json:"alias_name" gorm:"type:varchar"`
- LevelNumber int `json:"level_number" gorm:"type:int4"`
- ParentLevelId *int `json:"parent_level_id" gorm:"type:int4"`
- ProvinceId *int `json:"province_id" gorm:"type:int4"`
- Group *string `json:"group" gorm:"type:varchar"`
- IsApprovalActive *bool `json:"is_approval_active" gorm:"type:bool;default:false"`
- IsActive *bool `json:"is_active" gorm:"type:bool"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Name string `json:"name" gorm:"type:varchar"`
+ AliasName string `json:"alias_name" gorm:"type:varchar"`
+ LevelNumber int `json:"level_number" gorm:"type:int4"`
+ ParentLevelId *int `json:"parent_level_id" gorm:"type:int4"`
+ ProvinceId *int `json:"province_id" gorm:"type:int4"`
+ Group *string `json:"group" gorm:"type:varchar"`
+ IsApprovalActive *bool `json:"is_approval_active" gorm:"type:bool;default:false"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive *bool `json:"is_active" gorm:"type:bool"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/user_role_accesses.entity.go b/app/database/entity/user_role_accesses.entity.go
index 29b516f..2ebf920 100644
--- a/app/database/entity/user_role_accesses.entity.go
+++ b/app/database/entity/user_role_accesses.entity.go
@@ -1,18 +1,22 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type UserRoleAccesses struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- UserRoleId uint `json:"user_role_id" gorm:"type:int4"`
- MenuId int `json:"menu_id" gorm:"type:int4"`
- IsViewEnabled bool `json:"is_view_enabled" gorm:"type:bool"`
- IsInsertEnabled bool `json:"is_insert_enabled" gorm:"type:bool"`
- IsUpdateEnabled bool `json:"is_update_enabled" gorm:"type:bool"`
- IsDeleteEnabled bool `json:"is_delete_enabled" gorm:"type:bool"`
- IsApprovalEnabled bool `json:"is_approval_enabled" gorm:"type:bool"`
- IsAdminEnabled bool `json:"is_admin_enabled" gorm:"type:bool"`
- IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ UserRoleId uint `json:"user_role_id" gorm:"type:int4"`
+ MenuId int `json:"menu_id" gorm:"type:int4"`
+ IsViewEnabled bool `json:"is_view_enabled" gorm:"type:bool"`
+ IsInsertEnabled bool `json:"is_insert_enabled" gorm:"type:bool"`
+ IsUpdateEnabled bool `json:"is_update_enabled" gorm:"type:bool"`
+ IsDeleteEnabled bool `json:"is_delete_enabled" gorm:"type:bool"`
+ IsApprovalEnabled bool `json:"is_approval_enabled" gorm:"type:bool"`
+ IsAdminEnabled bool `json:"is_admin_enabled" gorm:"type:bool"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/user_role_level_details.entity.go b/app/database/entity/user_role_level_details.entity.go
index b37d71f..2bc793f 100644
--- a/app/database/entity/user_role_level_details.entity.go
+++ b/app/database/entity/user_role_level_details.entity.go
@@ -1,12 +1,16 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type UserRoleLevelDetails struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- UserRoleId uint `json:"user_role_id" gorm:"type:int4"`
- UserLevelId uint `json:"user_level_id" gorm:"type:int4"`
- IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ UserRoleId uint `json:"user_role_id" gorm:"type:int4"`
+ UserLevelId uint `json:"user_level_id" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/user_roles.entity.go b/app/database/entity/user_roles.entity.go
index fc9501b..f04223a 100644
--- a/app/database/entity/user_roles.entity.go
+++ b/app/database/entity/user_roles.entity.go
@@ -1,16 +1,20 @@
package entity
-import "time"
+import (
+ "github.com/google/uuid"
+ "time"
+)
type UserRoles struct {
- ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
- Name string `json:"name" gorm:"type:varchar"`
- Description string `json:"description" gorm:"type:varchar"`
- Code string `json:"code" gorm:"type:varchar"`
- StatusId int `json:"status_id" gorm:"type:int4;default:1"`
- CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
- UserLevelId uint `json:"user_level_id" gorm:"type:int4"`
- IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
- CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
- UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
+ ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
+ Name string `json:"name" gorm:"type:varchar"`
+ Description string `json:"description" gorm:"type:varchar"`
+ Code string `json:"code" gorm:"type:varchar"`
+ StatusId int `json:"status_id" gorm:"type:int4;default:1"`
+ CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
+ UserLevelId uint `json:"user_level_id" gorm:"type:int4"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
+ IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
+ CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
+ UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
}
diff --git a/app/database/entity/users/users.entity.go b/app/database/entity/users/users.entity.go
index 95b128a..0a57dc0 100644
--- a/app/database/entity/users/users.entity.go
+++ b/app/database/entity/users/users.entity.go
@@ -1,8 +1,9 @@
package users
import (
- "go-humas-be/app/database/entity"
+ "github.com/google/uuid"
"time"
+ "web-medols-be/app/database/entity"
)
type Users struct {
@@ -29,6 +30,7 @@ type Users struct {
ProfilePicturePath *string `json:"profile_picture_path" gorm:"type:varchar"`
TempPassword *string `json:"temp_password" gorm:"type:varchar"`
IsEmailUpdated *bool `json:"is_email_updated" gorm:"type:bool;default:false"`
+ ClientId *uuid.UUID `json:"client_id" gorm:"type:UUID"`
IsActive *bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`
diff --git a/app/database/index.database.go b/app/database/index.database.go
index 32c46e3..264de8b 100644
--- a/app/database/index.database.go
+++ b/app/database/index.database.go
@@ -2,13 +2,13 @@ package database
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/database/entity/article_category_details"
- "go-humas-be/app/database/entity/users"
- "go-humas-be/config/config"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/database/entity/article_category_details"
+ "web-medols-be/app/database/entity/users"
+ "web-medols-be/config/config"
)
// Database setup database with gorm
@@ -95,6 +95,7 @@ func Models() []interface{} {
entity.ArticleNulisAI{},
entity.AuditTrails{},
entity.Cities{},
+ entity.Clients{},
entity.CsrfTokenRecords{},
entity.CustomStaticPages{},
entity.Districts{},
diff --git a/app/database/seeds/activity_log_types.seeds.go b/app/database/seeds/activity_log_types.seeds.go
index 3d154b7..df07916 100644
--- a/app/database/seeds/activity_log_types.seeds.go
+++ b/app/database/seeds/activity_log_types.seeds.go
@@ -1,8 +1,8 @@
package seeds
import (
- "go-humas-be/app/database/entity"
"gorm.io/gorm"
+ "web-medols-be/app/database/entity"
)
type ActivityLogsSeeder struct{}
diff --git a/app/database/seeds/master_approval_statuses.seeds.go b/app/database/seeds/master_approval_statuses.seeds.go
index 180e6c8..f24b40d 100644
--- a/app/database/seeds/master_approval_statuses.seeds.go
+++ b/app/database/seeds/master_approval_statuses.seeds.go
@@ -1,8 +1,8 @@
package seeds
import (
- "go-humas-be/app/database/entity"
"gorm.io/gorm"
+ "web-medols-be/app/database/entity"
)
type MasterApprovalStatusesSeeder struct{}
diff --git a/app/database/seeds/master_statuses.seeds.go b/app/database/seeds/master_statuses.seeds.go
index 0834786..ea04d24 100644
--- a/app/database/seeds/master_statuses.seeds.go
+++ b/app/database/seeds/master_statuses.seeds.go
@@ -1,8 +1,8 @@
package seeds
import (
- "go-humas-be/app/database/entity"
"gorm.io/gorm"
+ "web-medols-be/app/database/entity"
)
type MasterStatusesSeeder struct{}
diff --git a/app/middleware/audit_trails.middleware.go b/app/middleware/audit_trails.middleware.go
index c30fac2..bc3972b 100644
--- a/app/middleware/audit_trails.middleware.go
+++ b/app/middleware/audit_trails.middleware.go
@@ -3,12 +3,12 @@ package middleware
import (
"encoding/json"
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/database/entity"
- utilSvc "go-humas-be/utils/service"
"gorm.io/gorm"
"log"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ utilSvc "web-medols-be/utils/service"
)
func AuditTrailsMiddleware(db *gorm.DB) fiber.Handler {
diff --git a/app/middleware/client.middleware.go b/app/middleware/client.middleware.go
new file mode 100644
index 0000000..e5b4181
--- /dev/null
+++ b/app/middleware/client.middleware.go
@@ -0,0 +1,121 @@
+package middleware
+
+import (
+ "github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
+ "gorm.io/gorm"
+ "strings"
+ "web-medols-be/app/database/entity"
+)
+
+const (
+ ClientKeyHeader = "X-Client-Key"
+ ClientContextKey = "client_id"
+)
+
+// excludedPaths contains paths that don't require client key validation
+var excludedPaths = []string{
+ "/swagger/*",
+ "/docs/*",
+ "/users/login",
+ "/health/*",
+ "/clients",
+ "/clients/*",
+ "/metrics",
+ "/metrics/*",
+}
+
+// isPathExcluded checks if the given path should be excluded from client key validation
+func isPathExcluded(path string) bool {
+ for _, excludedPath := range excludedPaths {
+ if strings.HasPrefix(excludedPath, "*") {
+ // Handle wildcard at the beginning
+ if strings.HasSuffix(path, excludedPath[1:]) {
+ return true
+ }
+ } else if strings.HasSuffix(excludedPath, "*") {
+ // Handle wildcard at the end
+ prefix := excludedPath[:len(excludedPath)-1]
+ if strings.HasPrefix(path, prefix) {
+ return true
+ }
+ } else {
+ // Exact match
+ if path == excludedPath {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+// ClientMiddleware extracts and validates the Client Key from request headers
+func ClientMiddleware(db *gorm.DB) fiber.Handler {
+ return func(c *fiber.Ctx) error {
+ // Check if path should be excluded from client key validation
+ if isPathExcluded(c.Path()) {
+ return c.Next()
+ }
+
+ // Extract Client Key from header
+ clientKey := c.Get(ClientKeyHeader)
+
+ if clientKey == "" {
+ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
+ "success": false,
+ "code": 400,
+ "messages": []string{"Client Key is required in header: " + ClientKeyHeader},
+ })
+ }
+
+ // Parse UUID
+ clientUUID, err := uuid.Parse(clientKey)
+ if err != nil {
+ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
+ "success": false,
+ "code": 400,
+ "messages": []string{"Invalid Client Key format"},
+ })
+ }
+
+ // Validate client exists and is active
+ var client entity.Clients
+ if err := db.Where("id = ? AND is_active = ?", clientUUID, true).First(&client).Error; err != nil {
+ if err == gorm.ErrRecordNotFound {
+ return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
+ "success": false,
+ "code": 401,
+ "messages": []string{"Invalid or inactive Client Key"},
+ })
+ }
+ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
+ "success": false,
+ "code": 500,
+ "messages": []string{"Error validating Client Key"},
+ })
+ }
+
+ // Store client ID in context for use in handlers
+ c.Locals(ClientContextKey, clientUUID)
+
+ return c.Next()
+ }
+}
+
+// GetClientID retrieves the client ID from the context
+func GetClientID(c *fiber.Ctx) *uuid.UUID {
+ if clientID, ok := c.Locals(ClientContextKey).(uuid.UUID); ok {
+ return &clientID
+ }
+ return nil
+}
+
+// AddExcludedPath adds a new path to the excluded paths list
+func AddExcludedPath(path string) {
+ excludedPaths = append(excludedPaths, path)
+}
+
+// GetExcludedPaths returns the current list of excluded paths
+func GetExcludedPaths() []string {
+ return excludedPaths
+}
diff --git a/app/middleware/csrf.middleware.go b/app/middleware/csrf.middleware.go
index 84d6d16..def2d69 100644
--- a/app/middleware/csrf.middleware.go
+++ b/app/middleware/csrf.middleware.go
@@ -2,9 +2,9 @@ package middleware
import (
"fmt"
- "go-humas-be/app/database/entity"
"gorm.io/gorm"
"time"
+ "web-medols-be/app/database/entity"
)
type PostgresStorage struct {
diff --git a/app/middleware/register.middleware.go b/app/middleware/register.middleware.go
index 641501d..35e9b4d 100644
--- a/app/middleware/register.middleware.go
+++ b/app/middleware/register.middleware.go
@@ -3,11 +3,11 @@ package middleware
import (
"github.com/gofiber/fiber/v2/middleware/csrf"
"github.com/gofiber/fiber/v2/middleware/session"
- "go-humas-be/app/database"
- "go-humas-be/config/config"
- utilsSvc "go-humas-be/utils"
"log"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/config/config"
+ utilsSvc "web-medols-be/utils"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/compress"
@@ -59,7 +59,7 @@ func (m *Middleware) Register(db *database.Database) {
Next: utilsSvc.IsEnabled(m.Cfg.Middleware.Cors.Enable),
AllowOrigins: "http://localhost:3000, http://localhost:4000, https://kontenhumas.com, https://mediapool.id, https://polrinews-project.vercel.app, http://127.0.0.1:3000, http://10.200.202.141",
AllowMethods: "HEAD, GET, POST, PUT, DELETE, OPTION, PATCH",
- AllowHeaders: "Origin, Content-Type, Accept, Accept-Language, Authorization, X-Requested-With, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Origin, Access-Control-Allow-Credentials, X-Csrf-Token, Cookie, Set-Cookie",
+ AllowHeaders: "Origin, Content-Type, Accept, Accept-Language, Authorization, X-Requested-With, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Origin, Access-Control-Allow-Credentials, X-Csrf-Token, Cookie, Set-Cookie, X-Client-Key",
ExposeHeaders: "Content-Length, Content-Type",
AllowCredentials: true,
MaxAge: 12,
@@ -125,6 +125,9 @@ func (m *Middleware) Register(db *database.Database) {
//===============================
+ // Client middleware - must be applied before other business logic
+ m.App.Use(ClientMiddleware(db.DB))
+
m.App.Use(AuditTrailsMiddleware(db.DB))
StartAuditTrailCleanup(db.DB, m.Cfg.Middleware.AuditTrails.Retention)
diff --git a/app/module/activity_logs/activity_logs.module.go b/app/module/activity_logs/activity_logs.module.go
index 31e838b..501dfe3 100644
--- a/app/module/activity_logs/activity_logs.module.go
+++ b/app/module/activity_logs/activity_logs.module.go
@@ -2,10 +2,10 @@ package activity_logs
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/activity_logs/controller"
- "go-humas-be/app/module/activity_logs/repository"
- "go-humas-be/app/module/activity_logs/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/activity_logs/controller"
+ "web-medols-be/app/module/activity_logs/repository"
+ "web-medols-be/app/module/activity_logs/service"
)
// struct of ActivityLogsRouter
diff --git a/app/module/activity_logs/controller/activity_logs.controller.go b/app/module/activity_logs/controller/activity_logs.controller.go
index d755e1a..1477475 100644
--- a/app/module/activity_logs/controller/activity_logs.controller.go
+++ b/app/module/activity_logs/controller/activity_logs.controller.go
@@ -3,13 +3,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/activity_logs/request"
- "go-humas-be/app/module/activity_logs/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
"strings"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/activity_logs/request"
+ "web-medols-be/app/module/activity_logs/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type activityLogsController struct {
@@ -51,6 +52,8 @@ func (_i *activityLogsController) All(c *fiber.Ctx) error {
return err
}
+ clientId := middleware.GetClientID(c)
+
reqContext := request.ActivityLogsQueryRequestContext{
ActivityTypeId: c.Query("activityTypeId"),
Url: c.Query("url"),
@@ -60,7 +63,7 @@ func (_i *activityLogsController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- activityLogsData, paging, err := _i.activityLogsService.All(req)
+ activityLogsData, paging, err := _i.activityLogsService.All(clientId, req)
if err != nil {
return err
}
@@ -90,7 +93,9 @@ func (_i *activityLogsController) Show(c *fiber.Ctx) error {
return err
}
- activityLogsData, err := _i.activityLogsService.Show(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ activityLogsData, err := _i.activityLogsService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -121,6 +126,8 @@ func (_i *activityLogsController) Save(c *fiber.Ctx) error {
return err
}
+ clientId := middleware.GetClientID(c)
+
var authToken *string
getTokenFromHeader := c.Get("Authorization")
if getTokenFromHeader == "" {
@@ -130,7 +137,7 @@ func (_i *activityLogsController) Save(c *fiber.Ctx) error {
}
visitorIp := GetVisitorIP(c)
req.VisitorIp = &visitorIp
- dataResult, err := _i.activityLogsService.Save(*req, authToken)
+ dataResult, err := _i.activityLogsService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -166,7 +173,9 @@ func (_i *activityLogsController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.activityLogsService.Update(uint(id), *req)
+ clientId := middleware.GetClientID(c)
+
+ err = _i.activityLogsService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -195,7 +204,9 @@ func (_i *activityLogsController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.activityLogsService.Delete(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ err = _i.activityLogsService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -218,7 +229,10 @@ func (_i *activityLogsController) Delete(c *fiber.Ctx) error {
// @Router /activity-logs/statistics [get]
func (_i *activityLogsController) GetActivityStats(c *fiber.Ctx) error {
_i.Log.Info().Interface("GetActivityStats", "checker controller").Msg("")
- activityStatsData, err := _i.activityLogsService.GetActivityStats()
+
+ clientId := middleware.GetClientID(c)
+
+ activityStatsData, err := _i.activityLogsService.GetActivityStats(clientId)
if err != nil {
return err
}
diff --git a/app/module/activity_logs/controller/controller.go b/app/module/activity_logs/controller/controller.go
index 6af03a3..b76271c 100644
--- a/app/module/activity_logs/controller/controller.go
+++ b/app/module/activity_logs/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/activity_logs/service"
+ "web-medols-be/app/module/activity_logs/service"
)
type Controller struct {
diff --git a/app/module/activity_logs/mapper/activity_logs.mapper.go b/app/module/activity_logs/mapper/activity_logs.mapper.go
index 2e8d51d..79a1a3f 100644
--- a/app/module/activity_logs/mapper/activity_logs.mapper.go
+++ b/app/module/activity_logs/mapper/activity_logs.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/activity_logs/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/activity_logs/response"
)
func ActivityLogsResponseMapper(activityLogsReq *entity.ActivityLogs) (activityLogsRes *res.ActivityLogsResponse) {
diff --git a/app/module/activity_logs/repository/activity_logs.repository.go b/app/module/activity_logs/repository/activity_logs.repository.go
index a8cb707..d0844ba 100644
--- a/app/module/activity_logs/repository/activity_logs.repository.go
+++ b/app/module/activity_logs/repository/activity_logs.repository.go
@@ -2,13 +2,14 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/activity_logs/request"
- "go-humas-be/utils/paginator"
"strings"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/activity_logs/request"
+ "web-medols-be/utils/paginator"
)
type activityLogsRepository struct {
@@ -18,14 +19,14 @@ type activityLogsRepository struct {
// ActivityLogsRepository define interface of IActivityLogsRepository
type ActivityLogsRepository interface {
- GetAll(req request.ActivityLogsQueryRequest) (activityLogss []*entity.ActivityLogs, paging paginator.Pagination, err error)
- FindOne(id uint) (activityLogs *entity.ActivityLogs, err error)
+ GetAll(clientId *uuid.UUID, req request.ActivityLogsQueryRequest) (activityLogss []*entity.ActivityLogs, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (activityLogs *entity.ActivityLogs, err error)
Create(activityLogs *entity.ActivityLogs) (activityLogsReturn *entity.ActivityLogs, err error)
- Update(id uint, activityLogs *entity.ActivityLogs) (err error)
- Delete(id uint) (err error)
- CountUniqueVisitorAllTime() (count int64, err error)
- CountUniqueVisitorToday() (count int64, err error)
- CountTotalViewAllTime() (count int64, err error)
+ Update(clientId *uuid.UUID, id uint, activityLogs *entity.ActivityLogs) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
+ CountUniqueVisitorAllTime(clientId *uuid.UUID) (count int64, err error)
+ CountUniqueVisitorToday(clientId *uuid.UUID) (count int64, err error)
+ CountTotalViewAllTime(clientId *uuid.UUID) (count int64, err error)
}
func NewActivityLogsRepository(db *database.Database, logger zerolog.Logger) ActivityLogsRepository {
@@ -36,11 +37,16 @@ func NewActivityLogsRepository(db *database.Database, logger zerolog.Logger) Act
}
// implement interface of IActivityLogsRepository
-func (_i *activityLogsRepository) GetAll(req request.ActivityLogsQueryRequest) (activityLogss []*entity.ActivityLogs, paging paginator.Pagination, err error) {
+func (_i *activityLogsRepository) GetAll(clientId *uuid.UUID, req request.ActivityLogsQueryRequest) (activityLogss []*entity.ActivityLogs, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.ActivityLogs{})
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
if req.ActivityTypeId != nil {
query = query.Where("activity_type_id = ?", req.ActivityTypeId)
}
@@ -77,8 +83,15 @@ func (_i *activityLogsRepository) GetAll(req request.ActivityLogsQueryRequest) (
return
}
-func (_i *activityLogsRepository) FindOne(id uint) (activityLogs *entity.ActivityLogs, err error) {
- if err := _i.DB.DB.First(&activityLogs, id).Error; err != nil {
+func (_i *activityLogsRepository) FindOne(clientId *uuid.UUID, id uint) (activityLogs *entity.ActivityLogs, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&activityLogs).Error; err != nil {
return nil, err
}
@@ -90,43 +103,47 @@ func (_i *activityLogsRepository) Create(activityLogs *entity.ActivityLogs) (act
return activityLogs, result.Error
}
-func (_i *activityLogsRepository) Update(id uint, activityLogs *entity.ActivityLogs) (err error) {
- return _i.DB.DB.Model(&entity.ActivityLogs{}).
- Where(&entity.ActivityLogs{ID: id}).
- Updates(activityLogs).Error
+func (_i *activityLogsRepository) Update(clientId *uuid.UUID, id uint, activityLogs *entity.ActivityLogs) (err error) {
+ query := _i.DB.DB.Model(&entity.ActivityLogs{}).Where(&entity.ActivityLogs{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(activityLogs).Error
}
-func (_i *activityLogsRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&entity.ActivityLogs{}, id).Error
+func (_i *activityLogsRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&entity.ActivityLogs{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&entity.ActivityLogs{}).Error
}
-func (_i *activityLogsRepository) CountUniqueVisitorAllTime() (count int64, err error) {
- err = _i.DB.DB.
- Model(&entity.ActivityLogs{}).
- Distinct("visitor_ip").
- Count(&count).Error
-
+func (_i *activityLogsRepository) CountUniqueVisitorAllTime(clientId *uuid.UUID) (count int64, err error) {
+ query := _i.DB.DB.Model(&entity.ActivityLogs{})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ err = query.Distinct("visitor_ip").Count(&count).Error
return
}
-func (_i *activityLogsRepository) CountTotalViewAllTime() (count int64, err error) {
- err = _i.DB.DB.
- Model(&entity.ActivityLogs{}).
- Where("activity_type_id = ?", 2).
- Count(&count).Error
-
+func (_i *activityLogsRepository) CountTotalViewAllTime(clientId *uuid.UUID) (count int64, err error) {
+ query := _i.DB.DB.Model(&entity.ActivityLogs{}).Where("activity_type_id = ?", 2)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ err = query.Count(&count).Error
return
}
-func (_i *activityLogsRepository) CountUniqueVisitorToday() (count int64, err error) {
+func (_i *activityLogsRepository) CountUniqueVisitorToday(clientId *uuid.UUID) (count int64, err error) {
tenMinutesAgo := time.Now().Add(-10 * time.Minute)
- err = _i.DB.DB.
- Model(&entity.AuditTrails{}).
- Where("created_at >= ?", tenMinutesAgo).
- Select("ip").
- Group("ip").
- Count(&count).Error
-
+ query := _i.DB.DB.Model(&entity.AuditTrails{}).Where("created_at >= ?", tenMinutesAgo)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ err = query.Select("ip").Group("ip").Count(&count).Error
return
}
diff --git a/app/module/activity_logs/request/activity_logs.request.go b/app/module/activity_logs/request/activity_logs.request.go
index 60c9613..8c540d5 100644
--- a/app/module/activity_logs/request/activity_logs.request.go
+++ b/app/module/activity_logs/request/activity_logs.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ActivityLogsGeneric interface {
diff --git a/app/module/activity_logs/service/activity_logs.service.go b/app/module/activity_logs/service/activity_logs.service.go
index 81395fd..8e7b5f0 100644
--- a/app/module/activity_logs/service/activity_logs.service.go
+++ b/app/module/activity_logs/service/activity_logs.service.go
@@ -1,16 +1,17 @@
package service
import (
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/activity_logs/mapper"
- "go-humas-be/app/module/activity_logs/repository"
- "go-humas-be/app/module/activity_logs/request"
- "go-humas-be/app/module/activity_logs/response"
- "go-humas-be/app/module/articles/service"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/activity_logs/mapper"
+ "web-medols-be/app/module/activity_logs/repository"
+ "web-medols-be/app/module/activity_logs/request"
+ "web-medols-be/app/module/activity_logs/response"
+ "web-medols-be/app/module/articles/service"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// ActivityLogsService
@@ -23,12 +24,12 @@ type activityLogsService struct {
// ActivityLogsService define interface of IActivityLogsService
type ActivityLogsService interface {
- All(req request.ActivityLogsQueryRequest) (activityLogs []*response.ActivityLogsResponse, paging paginator.Pagination, err error)
- Show(id uint) (activityLogs *response.ActivityLogsResponse, err error)
- Save(req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error)
- Update(id uint, req request.ActivityLogsUpdateRequest) (err error)
- Delete(id uint) error
- GetActivityStats() (activityStats *response.ActivityStatsResponse, err error)
+ All(clientId *uuid.UUID, req request.ActivityLogsQueryRequest) (activityLogs []*response.ActivityLogsResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (activityLogs *response.ActivityLogsResponse, err error)
+ Save(clientId *uuid.UUID, req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error)
+ Update(clientId *uuid.UUID, id uint, req request.ActivityLogsUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ GetActivityStats(clientId *uuid.UUID) (activityStats *response.ActivityStatsResponse, err error)
}
// NewActivityLogsService init ActivityLogsService
@@ -43,8 +44,8 @@ func NewActivityLogsService(repo repository.ActivityLogsRepository, log zerolog.
}
// All implement interface of ActivityLogsService
-func (_i *activityLogsService) All(req request.ActivityLogsQueryRequest) (activityLogss []*response.ActivityLogsResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *activityLogsService) All(clientId *uuid.UUID, req request.ActivityLogsQueryRequest) (activityLogss []*response.ActivityLogsResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -56,8 +57,8 @@ func (_i *activityLogsService) All(req request.ActivityLogsQueryRequest) (activi
return
}
-func (_i *activityLogsService) Show(id uint) (activityLogs *response.ActivityLogsResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *activityLogsService) Show(clientId *uuid.UUID, id uint) (activityLogs *response.ActivityLogsResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -65,11 +66,15 @@ func (_i *activityLogsService) Show(id uint) (activityLogs *response.ActivityLog
return mapper.ActivityLogsResponseMapper(result), nil
}
-func (_i *activityLogsService) Save(req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error) {
+func (_i *activityLogsService) Save(clientId *uuid.UUID, req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
+
if authToken != nil {
createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, *authToken)
newReq.UserId = &createdBy.ID
@@ -81,7 +86,7 @@ func (_i *activityLogsService) Save(req request.ActivityLogsCreateRequest, authT
}
// update article
- err = _i.ArticleService.UpdateActivityCount(*req.ArticleId, req.ActivityTypeId)
+ err = _i.ArticleService.UpdateActivityCount(clientId, *req.ArticleId, req.ActivityTypeId)
if err != nil {
return nil, err
}
@@ -89,26 +94,30 @@ func (_i *activityLogsService) Save(req request.ActivityLogsCreateRequest, authT
return result, nil
}
-func (_i *activityLogsService) Update(id uint, req request.ActivityLogsUpdateRequest) (err error) {
+func (_i *activityLogsService) Update(clientId *uuid.UUID, id uint, req request.ActivityLogsUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+ newReq := req.ToEntity()
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
+ return _i.Repo.Update(clientId, id, newReq)
}
-func (_i *activityLogsService) Delete(id uint) error {
- return _i.Repo.Delete(id)
+func (_i *activityLogsService) Delete(clientId *uuid.UUID, id uint) error {
+ return _i.Repo.Delete(clientId, id)
}
-func (_i *activityLogsService) GetActivityStats() (activityStats *response.ActivityStatsResponse, err error) {
+func (_i *activityLogsService) GetActivityStats(clientId *uuid.UUID) (activityStats *response.ActivityStatsResponse, err error) {
_i.Log.Info().Interface("GetActivityStats", "checker").Msg("")
- countUniqueVisitorAllTime, err := _i.Repo.CountUniqueVisitorAllTime()
+ countUniqueVisitorAllTime, err := _i.Repo.CountUniqueVisitorAllTime(clientId)
if err != nil {
return nil, err
}
- countUniqueVisitorToday, err := _i.Repo.CountUniqueVisitorToday()
+ countUniqueVisitorToday, err := _i.Repo.CountUniqueVisitorToday(clientId)
if err != nil {
return nil, err
}
- countTotalViewAllTime, err := _i.Repo.CountTotalViewAllTime()
+ countTotalViewAllTime, err := _i.Repo.CountTotalViewAllTime(clientId)
if err != nil {
return nil, err
}
diff --git a/app/module/advertisement/advertisement.module.go b/app/module/advertisement/advertisement.module.go
index eae08b4..fbf27be 100644
--- a/app/module/advertisement/advertisement.module.go
+++ b/app/module/advertisement/advertisement.module.go
@@ -2,10 +2,10 @@ package advertisement
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/advertisement/controller"
- "go-humas-be/app/module/advertisement/repository"
- "go-humas-be/app/module/advertisement/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/advertisement/controller"
+ "web-medols-be/app/module/advertisement/repository"
+ "web-medols-be/app/module/advertisement/service"
)
// struct of AdvertisementRouter
diff --git a/app/module/advertisement/controller/advertisement.controller.go b/app/module/advertisement/controller/advertisement.controller.go
index c9d8a60..620d27c 100644
--- a/app/module/advertisement/controller/advertisement.controller.go
+++ b/app/module/advertisement/controller/advertisement.controller.go
@@ -3,13 +3,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/advertisement/request"
- "go-humas-be/app/module/advertisement/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/advertisement/request"
+ "web-medols-be/app/module/advertisement/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type advertisementController struct {
@@ -53,6 +54,8 @@ func (_i *advertisementController) All(c *fiber.Ctx) error {
return err
}
+ clientId := middleware.GetClientID(c)
+
reqContext := request.AdvertisementQueryRequestContext{
Title: c.Query("title"),
Description: c.Query("description"),
@@ -63,7 +66,7 @@ func (_i *advertisementController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- advertisementData, paging, err := _i.advertisementService.All(req)
+ advertisementData, paging, err := _i.advertisementService.All(clientId, req)
if err != nil {
return err
}
@@ -93,7 +96,9 @@ func (_i *advertisementController) Show(c *fiber.Ctx) error {
return err
}
- advertisementData, err := _i.advertisementService.Show(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ advertisementData, err := _i.advertisementService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -124,7 +129,9 @@ func (_i *advertisementController) Save(c *fiber.Ctx) error {
return err
}
- dataResult, err := _i.advertisementService.Save(*req)
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.advertisementService.Save(clientId, *req)
if err != nil {
return err
}
@@ -156,7 +163,9 @@ func (_i *advertisementController) Upload(c *fiber.Ctx) error {
return err
}
- err = _i.advertisementService.Upload(c, uint(id))
+ clientId := middleware.GetClientID(c)
+
+ err = _i.advertisementService.Upload(clientId, c, uint(id))
if err != nil {
return err
}
@@ -191,7 +200,9 @@ func (_i *advertisementController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.advertisementService.Update(uint(id), *req)
+ clientId := middleware.GetClientID(c)
+
+ err = _i.advertisementService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -227,7 +238,9 @@ func (_i *advertisementController) UpdatePublish(c *fiber.Ctx) error {
return err
}
- err = _i.advertisementService.UpdatePublish(uint(id), isPublish)
+ clientId := middleware.GetClientID(c)
+
+ err = _i.advertisementService.UpdatePublish(clientId, uint(id), isPublish)
if err != nil {
return err
}
@@ -256,7 +269,9 @@ func (_i *advertisementController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.advertisementService.Delete(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ err = _i.advertisementService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -279,5 +294,6 @@ func (_i *advertisementController) Delete(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /advertisement/viewer/{filename} [get]
func (_i *advertisementController) Viewer(c *fiber.Ctx) error {
- return _i.advertisementService.Viewer(c)
+ clientId := middleware.GetClientID(c)
+ return _i.advertisementService.Viewer(clientId, c)
}
diff --git a/app/module/advertisement/controller/controller.go b/app/module/advertisement/controller/controller.go
index 1e50050..5d0b8d8 100644
--- a/app/module/advertisement/controller/controller.go
+++ b/app/module/advertisement/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/advertisement/service"
+ "web-medols-be/app/module/advertisement/service"
)
type Controller struct {
diff --git a/app/module/advertisement/mapper/advertisement.mapper.go b/app/module/advertisement/mapper/advertisement.mapper.go
index a03d37a..4ea87d9 100644
--- a/app/module/advertisement/mapper/advertisement.mapper.go
+++ b/app/module/advertisement/mapper/advertisement.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/advertisement/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/advertisement/response"
)
func AdvertisementResponseMapper(advertisementReq *entity.Advertisement, host string) (advertisementRes *res.AdvertisementResponse) {
diff --git a/app/module/advertisement/repository/advertisement.repository.go b/app/module/advertisement/repository/advertisement.repository.go
index e2f5580..29226c3 100644
--- a/app/module/advertisement/repository/advertisement.repository.go
+++ b/app/module/advertisement/repository/advertisement.repository.go
@@ -2,13 +2,14 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/advertisement/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/advertisement/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type advertisementRepository struct {
@@ -18,12 +19,12 @@ type advertisementRepository struct {
// AdvertisementRepository define interface of IAdvertisementRepository
type AdvertisementRepository interface {
- GetAll(req request.AdvertisementQueryRequest) (advertisements []*entity.Advertisement, paging paginator.Pagination, err error)
- FindOne(id uint) (advertisement *entity.Advertisement, err error)
- FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error)
+ GetAll(clientId *uuid.UUID, req request.AdvertisementQueryRequest) (advertisements []*entity.Advertisement, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (advertisement *entity.Advertisement, err error)
+ FindByFilename(clientId *uuid.UUID, contentFilename string) (advertisement *entity.Advertisement, err error)
Create(advertisement *entity.Advertisement) (advertisementReturn *entity.Advertisement, err error)
- Update(id uint, advertisement *entity.Advertisement) (err error)
- Delete(id uint) (err error)
+ Update(clientId *uuid.UUID, id uint, advertisement *entity.Advertisement) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
}
func NewAdvertisementRepository(db *database.Database, logger zerolog.Logger) AdvertisementRepository {
@@ -34,10 +35,16 @@ func NewAdvertisementRepository(db *database.Database, logger zerolog.Logger) Ad
}
// implement interface of IAdvertisementRepository
-func (_i *advertisementRepository) GetAll(req request.AdvertisementQueryRequest) (advertisements []*entity.Advertisement, paging paginator.Pagination, err error) {
+func (_i *advertisementRepository) GetAll(clientId *uuid.UUID, req request.AdvertisementQueryRequest) (advertisements []*entity.Advertisement, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.Advertisement{})
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
query = query.Where("is_active = ?", true)
if req.Title != nil && *req.Title != "" {
@@ -82,17 +89,30 @@ func (_i *advertisementRepository) GetAll(req request.AdvertisementQueryRequest)
return
}
-func (_i *advertisementRepository) FindOne(id uint) (advertisement *entity.Advertisement, err error) {
- if err := _i.DB.DB.First(&advertisement, id).Error; err != nil {
+func (_i *advertisementRepository) FindOne(clientId *uuid.UUID, id uint) (advertisement *entity.Advertisement, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&advertisement).Error; err != nil {
return nil, err
}
return advertisement, nil
}
-func (_i *advertisementRepository) FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error) {
+func (_i *advertisementRepository) FindByFilename(clientId *uuid.UUID, contentFilename string) (advertisement *entity.Advertisement, err error) {
+ query := _i.DB.DB.Where("content_file_name = ?", contentFilename)
- if err := _i.DB.DB.Where("content_file_name = ?", contentFilename).First(&advertisement).Error; err != nil {
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&advertisement).Error; err != nil {
return nil, err
}
@@ -104,16 +124,22 @@ func (_i *advertisementRepository) Create(advertisement *entity.Advertisement) (
return advertisement, result.Error
}
-func (_i *advertisementRepository) Update(id uint, advertisement *entity.Advertisement) (err error) {
+func (_i *advertisementRepository) Update(clientId *uuid.UUID, id uint, advertisement *entity.Advertisement) (err error) {
advertisementMap, err := utilSvc.StructToMap(advertisement)
if err != nil {
return err
}
- return _i.DB.DB.Model(&entity.Advertisement{}).
- Where(&entity.Advertisement{ID: id}).
- Updates(advertisementMap).Error
+ query := _i.DB.DB.Model(&entity.Advertisement{}).Where(&entity.Advertisement{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(advertisementMap).Error
}
-func (_i *advertisementRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&entity.Advertisement{}, id).Error
+func (_i *advertisementRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&entity.Advertisement{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&entity.Advertisement{}).Error
}
diff --git a/app/module/advertisement/request/advertisement.request.go b/app/module/advertisement/request/advertisement.request.go
index f3e25c5..608db8a 100644
--- a/app/module/advertisement/request/advertisement.request.go
+++ b/app/module/advertisement/request/advertisement.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type AdvertisementGeneric interface {
diff --git a/app/module/advertisement/service/advertisement.service.go b/app/module/advertisement/service/advertisement.service.go
index f95dc99..39a22b5 100644
--- a/app/module/advertisement/service/advertisement.service.go
+++ b/app/module/advertisement/service/advertisement.service.go
@@ -4,17 +4,9 @@ import (
"context"
"fmt"
"github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/advertisement/mapper"
- "go-humas-be/app/module/advertisement/repository"
- "go-humas-be/app/module/advertisement/request"
- "go-humas-be/app/module/advertisement/response"
- usersRepository "go-humas-be/app/module/users/repository"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
"io"
"log"
"math/rand"
@@ -23,6 +15,15 @@ import (
"strconv"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/advertisement/mapper"
+ "web-medols-be/app/module/advertisement/repository"
+ "web-medols-be/app/module/advertisement/request"
+ "web-medols-be/app/module/advertisement/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
)
// AdvertisementService
@@ -36,14 +37,14 @@ type advertisementService struct {
// AdvertisementService define interface of IAdvertisementService
type AdvertisementService interface {
- All(req request.AdvertisementQueryRequest) (advertisement []*response.AdvertisementResponse, paging paginator.Pagination, err error)
- Show(id uint) (advertisement *response.AdvertisementResponse, err error)
- Save(req request.AdvertisementCreateRequest) (advertisement *entity.Advertisement, err error)
- Upload(c *fiber.Ctx, id uint) (err error)
- Update(id uint, req request.AdvertisementUpdateRequest) (err error)
- UpdatePublish(id uint, isPublish bool) (err error)
- Delete(id uint) error
- Viewer(c *fiber.Ctx) (err error)
+ All(clientId *uuid.UUID, req request.AdvertisementQueryRequest) (advertisement []*response.AdvertisementResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (advertisement *response.AdvertisementResponse, err error)
+ Save(clientId *uuid.UUID, req request.AdvertisementCreateRequest) (advertisement *entity.Advertisement, err error)
+ Upload(clientId *uuid.UUID, c *fiber.Ctx, id uint) (err error)
+ Update(clientId *uuid.UUID, id uint, req request.AdvertisementUpdateRequest) (err error)
+ UpdatePublish(clientId *uuid.UUID, id uint, isPublish bool) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error)
}
// NewAdvertisementService init AdvertisementService
@@ -59,8 +60,8 @@ func NewAdvertisementService(repo repository.AdvertisementRepository, minioStora
}
// All implement interface of AdvertisementService
-func (_i *advertisementService) All(req request.AdvertisementQueryRequest) (advertisements []*response.AdvertisementResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *advertisementService) All(clientId *uuid.UUID, req request.AdvertisementQueryRequest) (advertisements []*response.AdvertisementResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -73,8 +74,8 @@ func (_i *advertisementService) All(req request.AdvertisementQueryRequest) (adve
return
}
-func (_i *advertisementService) Show(id uint) (advertisement *response.AdvertisementResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *advertisementService) Show(clientId *uuid.UUID, id uint) (advertisement *response.AdvertisementResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -83,13 +84,18 @@ func (_i *advertisementService) Show(id uint) (advertisement *response.Advertise
return mapper.AdvertisementResponseMapper(result, host), nil
}
-func (_i *advertisementService) Save(req request.AdvertisementCreateRequest) (advertisement *entity.Advertisement, err error) {
+func (_i *advertisementService) Save(clientId *uuid.UUID, req request.AdvertisementCreateRequest) (advertisement *entity.Advertisement, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
+
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
+
return _i.Repo.Create(newReq)
}
-func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) {
+func (_i *advertisementService) Upload(clientId *uuid.UUID, c *fiber.Ctx, id uint) (err error) {
bucketName := _i.MinioStorage.Cfg.ObjectStorage.MinioStorage.BucketName
form, err := c.MultipartForm()
@@ -102,7 +108,7 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) {
// Create minio connection.
minioClient, err := _i.MinioStorage.ConnectMinio()
- result, err := _i.Repo.FindOne(id)
+ result, err := _i.Repo.FindOne(clientId, id)
if result == nil {
// Return status 400. Id not found.
@@ -154,7 +160,7 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) {
result.ContentFileName = &newFilename
result.ContentFilePath = &objectName
- err = _i.Repo.Update(id, result)
+ err = _i.Repo.Update(clientId, id, result)
if err != nil {
return err
}
@@ -170,12 +176,16 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) {
return
}
-func (_i *advertisementService) Update(id uint, req request.AdvertisementUpdateRequest) (err error) {
+func (_i *advertisementService) Update(clientId *uuid.UUID, id uint, req request.AdvertisementUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+ newReq := req.ToEntity()
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
+ return _i.Repo.Update(clientId, id, newReq)
}
-func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err error) {
+func (_i *advertisementService) UpdatePublish(clientId *uuid.UUID, id uint, isPublish bool) (err error) {
_i.Log.Info().Str("timestamp", time.Now().
Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish").
Interface("ids", id).Msg("")
@@ -183,7 +193,7 @@ func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err erro
Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish").
Interface("isPublish", isPublish).Msg("")
- result, err := _i.Repo.FindOne(id)
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
@@ -194,21 +204,24 @@ func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err erro
Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish").
Interface("result", result).Msg("")
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *advertisementService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *advertisementService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.IsActive = false
- return _i.Repo.Update(id, result)
+ if clientId != nil {
+ result.ClientId = clientId
+ }
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *advertisementService) Viewer(c *fiber.Ctx) (err error) {
+func (_i *advertisementService) Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
filename := c.Params("filename")
- result, err := _i.Repo.FindByFilename(filename)
+ result, err := _i.Repo.FindByFilename(clientId, filename)
if err != nil {
return err
}
diff --git a/app/module/article_approvals/article_approvals.module.go b/app/module/article_approvals/article_approvals.module.go
index 5d6445d..8f29692 100644
--- a/app/module/article_approvals/article_approvals.module.go
+++ b/app/module/article_approvals/article_approvals.module.go
@@ -2,10 +2,10 @@ package article_approvals
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_approvals/controller"
- "go-humas-be/app/module/article_approvals/repository"
- "go-humas-be/app/module/article_approvals/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_approvals/controller"
+ "web-medols-be/app/module/article_approvals/repository"
+ "web-medols-be/app/module/article_approvals/service"
)
// struct of ArticleApprovalsRouter
diff --git a/app/module/article_approvals/controller/article_approvals.controller.go b/app/module/article_approvals/controller/article_approvals.controller.go
index 6014895..6411176 100644
--- a/app/module/article_approvals/controller/article_approvals.controller.go
+++ b/app/module/article_approvals/controller/article_approvals.controller.go
@@ -3,13 +3,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_approvals/request"
- "go-humas-be/app/module/article_approvals/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/article_approvals/request"
+ "web-medols-be/app/module/article_approvals/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleApprovalsController struct {
@@ -122,7 +123,11 @@ func (_i *articleApprovalsController) Save(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
- dataResult, err := _i.articleApprovalsService.Save(*req, authToken)
+
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.articleApprovalsService.Save(clientId, *req, authToken)
if err != nil {
return err
}
diff --git a/app/module/article_approvals/controller/controller.go b/app/module/article_approvals/controller/controller.go
index 08ae49c..8f12a3f 100644
--- a/app/module/article_approvals/controller/controller.go
+++ b/app/module/article_approvals/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_approvals/service"
+ "web-medols-be/app/module/article_approvals/service"
)
type Controller struct {
diff --git a/app/module/article_approvals/mapper/article_approvals.mapper.go b/app/module/article_approvals/mapper/article_approvals.mapper.go
index 2333f17..336fc39 100644
--- a/app/module/article_approvals/mapper/article_approvals.mapper.go
+++ b/app/module/article_approvals/mapper/article_approvals.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/article_approvals/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/article_approvals/response"
)
func ArticleApprovalsResponseMapper(articleApprovalsReq *entity.ArticleApprovals) (articleApprovalsRes *res.ArticleApprovalsResponse) {
diff --git a/app/module/article_approvals/repository/article_approvals.repository.go b/app/module/article_approvals/repository/article_approvals.repository.go
index bb458cd..d658ef3 100644
--- a/app/module/article_approvals/repository/article_approvals.repository.go
+++ b/app/module/article_approvals/repository/article_approvals.repository.go
@@ -3,12 +3,12 @@ package repository
import (
"fmt"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_approvals/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_approvals/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type articleApprovalsRepository struct {
diff --git a/app/module/article_approvals/request/article_approvals.request.go b/app/module/article_approvals/request/article_approvals.request.go
index fbd959c..4f79252 100644
--- a/app/module/article_approvals/request/article_approvals.request.go
+++ b/app/module/article_approvals/request/article_approvals.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticleApprovalsGeneric interface {
diff --git a/app/module/article_approvals/service/article_approvals.service.go b/app/module/article_approvals/service/article_approvals.service.go
index 1fdf469..0f23692 100644
--- a/app/module/article_approvals/service/article_approvals.service.go
+++ b/app/module/article_approvals/service/article_approvals.service.go
@@ -1,17 +1,18 @@
package service
import (
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_approvals/mapper"
- "go-humas-be/app/module/article_approvals/repository"
- "go-humas-be/app/module/article_approvals/request"
- "go-humas-be/app/module/article_approvals/response"
- articlesService "go-humas-be/app/module/articles/service"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_approvals/mapper"
+ "web-medols-be/app/module/article_approvals/repository"
+ "web-medols-be/app/module/article_approvals/request"
+ "web-medols-be/app/module/article_approvals/response"
+ articlesService "web-medols-be/app/module/articles/service"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ utilSvc "web-medols-be/utils/service"
)
// ArticleApprovalsService
@@ -26,7 +27,7 @@ type articleApprovalsService struct {
type ArticleApprovalsService interface {
All(req request.ArticleApprovalsQueryRequest) (articleApprovals []*response.ArticleApprovalsResponse, paging paginator.Pagination, err error)
Show(id uint) (articleApprovals *response.ArticleApprovalsResponse, err error)
- Save(req request.ArticleApprovalsCreateRequest, authToken string) (articleApprovals *entity.ArticleApprovals, err error)
+ Save(clientId *uuid.UUID, req request.ArticleApprovalsCreateRequest, authToken string) (articleApprovals *entity.ArticleApprovals, err error)
Update(id uint, req request.ArticleApprovalsUpdateRequest) (err error)
Delete(id uint) error
}
@@ -65,7 +66,7 @@ func (_i *articleApprovalsService) Show(id uint) (articleApprovals *response.Art
return mapper.ArticleApprovalsResponseMapper(result), nil
}
-func (_i *articleApprovalsService) Save(req request.ArticleApprovalsCreateRequest, authToken string) (articleApprovals *entity.ArticleApprovals, err error) {
+func (_i *articleApprovalsService) Save(clientId *uuid.UUID, req request.ArticleApprovalsCreateRequest, authToken string) (articleApprovals *entity.ArticleApprovals, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -77,7 +78,7 @@ func (_i *articleApprovalsService) Save(req request.ArticleApprovalsCreateReques
approvalByUserLevelId := createdBy.UserLevelId
approvalParentLevelId := createdBy.UserLevel.ParentLevelId
- err = _i.ArticlesService.UpdateApproval(newReq.ArticleId, newReq.StatusId, int(approvalByUserLevelId), *newReq.ApprovalAtLevel, *approvalParentLevelId)
+ err = _i.ArticlesService.UpdateApproval(clientId, newReq.ArticleId, newReq.StatusId, int(approvalByUserLevelId), *newReq.ApprovalAtLevel, *approvalParentLevelId)
if err != nil {
return nil, err
}
diff --git a/app/module/article_categories/article_categories.module.go b/app/module/article_categories/article_categories.module.go
index 34bf423..3dbda68 100644
--- a/app/module/article_categories/article_categories.module.go
+++ b/app/module/article_categories/article_categories.module.go
@@ -2,10 +2,10 @@ package article_categories
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_categories/controller"
- "go-humas-be/app/module/article_categories/repository"
- "go-humas-be/app/module/article_categories/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_categories/controller"
+ "web-medols-be/app/module/article_categories/repository"
+ "web-medols-be/app/module/article_categories/service"
)
// struct of ArticleCategoriesRouter
diff --git a/app/module/article_categories/controller/article_categories.controller.go b/app/module/article_categories/controller/article_categories.controller.go
index b7826fd..c5aac3b 100644
--- a/app/module/article_categories/controller/article_categories.controller.go
+++ b/app/module/article_categories/controller/article_categories.controller.go
@@ -2,13 +2,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_categories/request"
- "go-humas-be/app/module/article_categories/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/article_categories/request"
+ "web-medols-be/app/module/article_categories/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleCategoriesController struct {
@@ -53,6 +54,7 @@ func (_i *articleCategoriesController) All(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
+ clientId := middleware.GetClientID(c)
reqContext := request.ArticleCategoriesQueryRequestContext{
Title: c.Query("title"),
@@ -64,7 +66,7 @@ func (_i *articleCategoriesController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- articleCategoriesData, paging, err := _i.articleCategoriesService.All(req, authToken)
+ articleCategoriesData, paging, err := _i.articleCategoriesService.All(clientId, req, authToken)
if err != nil {
return err
}
@@ -94,7 +96,9 @@ func (_i *articleCategoriesController) Show(c *fiber.Ctx) error {
return err
}
- articleCategoriesData, err := _i.articleCategoriesService.Show(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ articleCategoriesData, err := _i.articleCategoriesService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -123,7 +127,9 @@ func (_i *articleCategoriesController) ShowByOldId(c *fiber.Ctx) error {
return err
}
- articleCategoriesData, err := _i.articleCategoriesService.ShowByOldId(uint(id))
+ clientId := middleware.GetClientID(c)
+
+ articleCategoriesData, err := _i.articleCategoriesService.ShowByOldId(clientId, uint(id))
if err != nil {
return err
}
@@ -148,8 +154,9 @@ func (_i *articleCategoriesController) ShowByOldId(c *fiber.Ctx) error {
// @Router /article-categories/slug/{slug} [get]
func (_i *articleCategoriesController) ShowBySlug(c *fiber.Ctx) error {
slug := c.Params("slug")
+ clientId := middleware.GetClientID(c)
- articleCategoriesData, err := _i.articleCategoriesService.ShowBySlug(slug)
+ articleCategoriesData, err := _i.articleCategoriesService.ShowBySlug(clientId, slug)
if err != nil {
return err
}
@@ -181,7 +188,9 @@ func (_i *articleCategoriesController) Save(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
- dataResult, err := _i.articleCategoriesService.Save(*req, authToken)
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.articleCategoriesService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -208,7 +217,8 @@ func (_i *articleCategoriesController) Save(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-categories/thumbnail/{id} [post]
func (_i *articleCategoriesController) SaveThumbnail(c *fiber.Ctx) error {
- err := _i.articleCategoriesService.SaveThumbnail(c)
+ clientId := middleware.GetClientID(c)
+ err := _i.articleCategoriesService.SaveThumbnail(clientId, c)
if err != nil {
return err
}
@@ -243,7 +253,8 @@ func (_i *articleCategoriesController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.articleCategoriesService.Update(uint(id), *req)
+ clientId := middleware.GetClientID(c)
+ err = _i.articleCategoriesService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -272,7 +283,8 @@ func (_i *articleCategoriesController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.articleCategoriesService.Delete(uint(id))
+ clientId := middleware.GetClientID(c)
+ err = _i.articleCategoriesService.Delete(clientId, uint(id))
if err != nil {
return err
}
diff --git a/app/module/article_categories/controller/controller.go b/app/module/article_categories/controller/controller.go
index 0a510ae..1a0bdd1 100644
--- a/app/module/article_categories/controller/controller.go
+++ b/app/module/article_categories/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/article_categories/service"
+import "web-medols-be/app/module/article_categories/service"
type Controller struct {
ArticleCategories ArticleCategoriesController
@@ -10,4 +10,4 @@ func NewController(ArticleCategoriesService service.ArticleCategoriesService) *C
return &Controller{
ArticleCategories: NewArticleCategoriesController(ArticleCategoriesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/article_categories/mapper/article_categories.mapper.go b/app/module/article_categories/mapper/article_categories.mapper.go
index 7193203..1f86ba7 100644
--- a/app/module/article_categories/mapper/article_categories.mapper.go
+++ b/app/module/article_categories/mapper/article_categories.mapper.go
@@ -1,10 +1,10 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/article_categories/response"
"strconv"
"strings"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/article_categories/response"
)
func ArticleCategoriesResponseMapper(articleCategoriesReq *entity.ArticleCategories, host string) (articleCategoriesRes *res.ArticleCategoriesResponse) {
diff --git a/app/module/article_categories/repository/article_categories.repository.go b/app/module/article_categories/repository/article_categories.repository.go
index 5b53014..2a65abc 100644
--- a/app/module/article_categories/repository/article_categories.repository.go
+++ b/app/module/article_categories/repository/article_categories.repository.go
@@ -2,13 +2,14 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_categories/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_categories/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type articleCategoriesRepository struct {
@@ -18,13 +19,13 @@ type articleCategoriesRepository struct {
// ArticleCategoriesRepository define interface of IArticleCategoriesRepository
type ArticleCategoriesRepository interface {
- GetAll(req request.ArticleCategoriesQueryRequest) (articleCategoriess []*entity.ArticleCategories, paging paginator.Pagination, err error)
- FindOne(id uint) (articleCategories *entity.ArticleCategories, err error)
- FindOneByOldId(id uint) (articleCategories *entity.ArticleCategories, err error)
- FindOneBySlug(slug string) (articleCategories *entity.ArticleCategories, err error)
+ GetAll(clientId *uuid.UUID, req request.ArticleCategoriesQueryRequest) (articleCategoriess []*entity.ArticleCategories, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (articleCategories *entity.ArticleCategories, err error)
+ FindOneByOldId(clientId *uuid.UUID, id uint) (articleCategories *entity.ArticleCategories, err error)
+ FindOneBySlug(clientId *uuid.UUID, slug string) (articleCategories *entity.ArticleCategories, err error)
Create(articleCategories *entity.ArticleCategories) (articleCategoriesReturn *entity.ArticleCategories, err error)
- Update(id uint, articleCategories *entity.ArticleCategories) (err error)
- Delete(id uint) (err error)
+ Update(clientId *uuid.UUID, id uint, articleCategories *entity.ArticleCategories) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
}
func NewArticleCategoriesRepository(db *database.Database, log zerolog.Logger) ArticleCategoriesRepository {
@@ -35,16 +36,26 @@ func NewArticleCategoriesRepository(db *database.Database, log zerolog.Logger) A
}
// implement interface of IArticleCategoriesRepository
-func (_i *articleCategoriesRepository) GetAll(req request.ArticleCategoriesQueryRequest) (articleCategoriess []*entity.ArticleCategories, paging paginator.Pagination, err error) {
+func (_i *articleCategoriesRepository) GetAll(clientId *uuid.UUID, req request.ArticleCategoriesQueryRequest) (articleCategoriess []*entity.ArticleCategories, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.ArticleCategories{})
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("article_categories.client_id = ?", clientId)
+ }
+
if req.UserLevelId != nil {
query = _i.DB.DB.Model(&entity.ArticleCategories{}).
Joins("LEFT JOIN users ON article_categories.created_by_id = users.id").
Joins("LEFT JOIN user_levels ON users.user_level_id = user_levels.id").
Where("user_levels.id = ? or user_levels.parent_level_id = ?", *req.UserLevelId, *req.UserLevelId)
+
+ // Add ClientId filter for joined query
+ if clientId != nil {
+ query = query.Where("article_categories.client_id = ?", clientId)
+ }
}
query = query.Where("article_categories.is_active = ?", true)
@@ -90,24 +101,45 @@ func (_i *articleCategoriesRepository) GetAll(req request.ArticleCategoriesQuery
return
}
-func (_i *articleCategoriesRepository) FindOne(id uint) (articleCategories *entity.ArticleCategories, err error) {
- if err := _i.DB.DB.First(&articleCategories, id).Error; err != nil {
+func (_i *articleCategoriesRepository) FindOne(clientId *uuid.UUID, id uint) (articleCategories *entity.ArticleCategories, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&articleCategories).Error; err != nil {
return nil, err
}
return articleCategories, nil
}
-func (_i *articleCategoriesRepository) FindOneByOldId(id uint) (articleCategories *entity.ArticleCategories, err error) {
- if err := _i.DB.DB.Where("old_category_id = ?", id).First(&articleCategories).Error; err != nil {
+func (_i *articleCategoriesRepository) FindOneByOldId(clientId *uuid.UUID, id uint) (articleCategories *entity.ArticleCategories, err error) {
+ query := _i.DB.DB.Where("old_category_id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&articleCategories).Error; err != nil {
return nil, err
}
return articleCategories, nil
}
-func (_i *articleCategoriesRepository) FindOneBySlug(slug string) (articleCategories *entity.ArticleCategories, err error) {
- if err := _i.DB.DB.Where("slug = ?", slug).First(&articleCategories).Error; err != nil {
+func (_i *articleCategoriesRepository) FindOneBySlug(clientId *uuid.UUID, slug string) (articleCategories *entity.ArticleCategories, err error) {
+ query := _i.DB.DB.Where("slug = ?", slug)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&articleCategories).Error; err != nil {
return nil, err
}
@@ -119,16 +151,22 @@ func (_i *articleCategoriesRepository) Create(articleCategories *entity.ArticleC
return articleCategories, result.Error
}
-func (_i *articleCategoriesRepository) Update(id uint, articleCategories *entity.ArticleCategories) (err error) {
+func (_i *articleCategoriesRepository) Update(clientId *uuid.UUID, id uint, articleCategories *entity.ArticleCategories) (err error) {
articleCategoriesMap, err := utilSvc.StructToMap(articleCategories)
if err != nil {
return err
}
- return _i.DB.DB.Model(&entity.ArticleCategories{}).
- Where(&entity.ArticleCategories{ID: id}).
- Updates(articleCategoriesMap).Error
+ query := _i.DB.DB.Model(&entity.ArticleCategories{}).Where(&entity.ArticleCategories{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(articleCategoriesMap).Error
}
-func (_i *articleCategoriesRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&entity.ArticleCategories{}, id).Error
+func (_i *articleCategoriesRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&entity.ArticleCategories{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&entity.ArticleCategories{}).Error
}
diff --git a/app/module/article_categories/request/article_categories.request.go b/app/module/article_categories/request/article_categories.request.go
index 486c321..9a275f0 100644
--- a/app/module/article_categories/request/article_categories.request.go
+++ b/app/module/article_categories/request/article_categories.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticleCategoriesGeneric interface {
diff --git a/app/module/article_categories/service/article_categories.service.go b/app/module/article_categories/service/article_categories.service.go
index 3d4c7d7..4478093 100644
--- a/app/module/article_categories/service/article_categories.service.go
+++ b/app/module/article_categories/service/article_categories.service.go
@@ -3,18 +3,9 @@ package service
import (
"context"
"github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_categories/mapper"
- "go-humas-be/app/module/article_categories/repository"
- "go-humas-be/app/module/article_categories/request"
- "go-humas-be/app/module/article_categories/response"
- usersRepository "go-humas-be/app/module/users/repository"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"io"
"log"
"math/rand"
@@ -23,6 +14,16 @@ import (
"strconv"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_categories/mapper"
+ "web-medols-be/app/module/article_categories/repository"
+ "web-medols-be/app/module/article_categories/request"
+ "web-medols-be/app/module/article_categories/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// ArticleCategoriesService
@@ -36,14 +37,14 @@ type articleCategoriesService struct {
// ArticleCategoriesService define interface of IArticleCategoriesService
type ArticleCategoriesService interface {
- All(req request.ArticleCategoriesQueryRequest, authToken string) (articleCategories []*response.ArticleCategoriesResponse, paging paginator.Pagination, err error)
- Show(id uint) (articleCategories *response.ArticleCategoriesResponse, err error)
- ShowByOldId(id uint) (articleCategories *response.ArticleCategoriesResponse, err error)
- ShowBySlug(slug string) (articleCategories *response.ArticleCategoriesResponse, err error)
- Save(req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error)
- SaveThumbnail(c *fiber.Ctx) (err error)
- Update(id uint, req request.ArticleCategoriesUpdateRequest) (err error)
- Delete(id uint) error
+ All(clientId *uuid.UUID, req request.ArticleCategoriesQueryRequest, authToken string) (articleCategories []*response.ArticleCategoriesResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (articleCategories *response.ArticleCategoriesResponse, err error)
+ ShowByOldId(clientId *uuid.UUID, id uint) (articleCategories *response.ArticleCategoriesResponse, err error)
+ ShowBySlug(clientId *uuid.UUID, slug string) (articleCategories *response.ArticleCategoriesResponse, err error)
+ Save(clientId *uuid.UUID, req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error)
+ SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error)
+ Update(clientId *uuid.UUID, id uint, req request.ArticleCategoriesUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
Viewer(c *fiber.Ctx) error
}
@@ -60,7 +61,7 @@ func NewArticleCategoriesService(repo repository.ArticleCategoriesRepository, us
}
// All implement interface of ArticleCategoriesService
-func (_i *articleCategoriesService) All(req request.ArticleCategoriesQueryRequest, authToken string) (articleCategoriess []*response.ArticleCategoriesResponse, paging paginator.Pagination, err error) {
+func (_i *articleCategoriesService) All(clientId *uuid.UUID, req request.ArticleCategoriesQueryRequest, authToken string) (articleCategoriess []*response.ArticleCategoriesResponse, paging paginator.Pagination, err error) {
createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
if createdBy != nil {
if createdBy.UserLevel.LevelNumber > 1 {
@@ -68,7 +69,7 @@ func (_i *articleCategoriesService) All(req request.ArticleCategoriesQueryReques
}
}
- results, paging, err := _i.Repo.GetAll(req)
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -81,8 +82,8 @@ func (_i *articleCategoriesService) All(req request.ArticleCategoriesQueryReques
return
}
-func (_i *articleCategoriesService) Show(id uint) (articleCategories *response.ArticleCategoriesResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleCategoriesService) Show(clientId *uuid.UUID, id uint) (articleCategories *response.ArticleCategoriesResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -90,8 +91,8 @@ func (_i *articleCategoriesService) Show(id uint) (articleCategories *response.A
return mapper.ArticleCategoriesResponseMapper(result, host), nil
}
-func (_i *articleCategoriesService) ShowByOldId(id uint) (articleCategories *response.ArticleCategoriesResponse, err error) {
- result, err := _i.Repo.FindOneByOldId(id)
+func (_i *articleCategoriesService) ShowByOldId(clientId *uuid.UUID, id uint) (articleCategories *response.ArticleCategoriesResponse, err error) {
+ result, err := _i.Repo.FindOneByOldId(clientId, id)
if err != nil {
return nil, err
}
@@ -99,8 +100,8 @@ func (_i *articleCategoriesService) ShowByOldId(id uint) (articleCategories *res
return mapper.ArticleCategoriesResponseMapper(result, host), nil
}
-func (_i *articleCategoriesService) ShowBySlug(slug string) (articleCategories *response.ArticleCategoriesResponse, err error) {
- result, err := _i.Repo.FindOneBySlug(slug)
+func (_i *articleCategoriesService) ShowBySlug(clientId *uuid.UUID, slug string) (articleCategories *response.ArticleCategoriesResponse, err error) {
+ result, err := _i.Repo.FindOneBySlug(clientId, slug)
if err != nil {
return nil, err
}
@@ -108,10 +109,14 @@ func (_i *articleCategoriesService) ShowBySlug(slug string) (articleCategories *
return mapper.ArticleCategoriesResponseMapper(result, host), nil
}
-func (_i *articleCategoriesService) Save(req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error) {
+func (_i *articleCategoriesService) Save(clientId *uuid.UUID, req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
+
if req.CreatedById != nil {
createdBy, err := _i.UsersRepo.FindOne(*req.CreatedById)
if err != nil {
@@ -126,8 +131,7 @@ func (_i *articleCategoriesService) Save(req request.ArticleCategoriesCreateRequ
return _i.Repo.Create(newReq)
}
-func (_i *articleCategoriesService) SaveThumbnail(c *fiber.Ctx) (err error) {
-
+func (_i *articleCategoriesService) SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
@@ -153,7 +157,6 @@ func (_i *articleCategoriesService) SaveThumbnail(c *fiber.Ctx) (err error) {
// Iterasi semua file yang diunggah
for _, file := range files {
-
_i.Log.Info().Str("timestamp", time.Now().
Format(time.RFC3339)).Str("Service:Resource", "Uploader:: loop1").
Interface("data", file).Msg("")
@@ -175,9 +178,9 @@ func (_i *articleCategoriesService) SaveThumbnail(c *fiber.Ctx) (err error) {
newFilename := newFilenameWithoutExt + "." + extension
objectName := "articles/category/thumbnail/" + newFilename
- findCategory, err := _i.Repo.FindOne(uint(id))
+ findCategory, err := _i.Repo.FindOne(clientId, uint(id))
findCategory.ThumbnailPath = &objectName
- err = _i.Repo.Update(uint(id), findCategory)
+ err = _i.Repo.Update(clientId, uint(id), findCategory)
if err != nil {
return err
}
@@ -192,10 +195,13 @@ func (_i *articleCategoriesService) SaveThumbnail(c *fiber.Ctx) (err error) {
return
}
-func (_i *articleCategoriesService) Update(id uint, req request.ArticleCategoriesUpdateRequest) (err error) {
+func (_i *articleCategoriesService) Update(clientId *uuid.UUID, id uint, req request.ArticleCategoriesUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
+ if clientId != nil {
+ newReq.ClientId = clientId
+ }
if req.CreatedById != nil {
createdBy, err := _i.UsersRepo.FindOne(*req.CreatedById)
if err != nil {
@@ -204,23 +210,26 @@ func (_i *articleCategoriesService) Update(id uint, req request.ArticleCategorie
newReq.CreatedById = &createdBy.ID
}
- return _i.Repo.Update(id, newReq)
+ return _i.Repo.Update(clientId, id, newReq)
}
-func (_i *articleCategoriesService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleCategoriesService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
- return _i.Repo.Update(id, result)
+ if clientId != nil {
+ result.ClientId = clientId
+ }
+ return _i.Repo.Update(clientId, id, result)
}
func (_i *articleCategoriesService) Viewer(c *fiber.Ctx) (err error) {
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
- result, err := _i.Repo.FindOne(uint(id))
+ result, err := _i.Repo.FindOne(nil, uint(id))
if err != nil {
return err
}
diff --git a/app/module/article_category_details/article_category_details.module.go b/app/module/article_category_details/article_category_details.module.go
index e482392..c69669a 100644
--- a/app/module/article_category_details/article_category_details.module.go
+++ b/app/module/article_category_details/article_category_details.module.go
@@ -2,10 +2,10 @@ package article_category_details
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_category_details/controller"
- "go-humas-be/app/module/article_category_details/repository"
- "go-humas-be/app/module/article_category_details/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_category_details/controller"
+ "web-medols-be/app/module/article_category_details/repository"
+ "web-medols-be/app/module/article_category_details/service"
)
// struct of ArticleCategoryDetailsRouter
diff --git a/app/module/article_category_details/controller/article_category_details.controller.go b/app/module/article_category_details/controller/article_category_details.controller.go
index f4e2f33..74e4e4f 100644
--- a/app/module/article_category_details/controller/article_category_details.controller.go
+++ b/app/module/article_category_details/controller/article_category_details.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_category_details/request"
- "go-humas-be/app/module/article_category_details/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/article_category_details/request"
+ "web-medols-be/app/module/article_category_details/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleCategoryDetailsController struct {
diff --git a/app/module/article_category_details/controller/controller.go b/app/module/article_category_details/controller/controller.go
index ff2de77..097b5d8 100644
--- a/app/module/article_category_details/controller/controller.go
+++ b/app/module/article_category_details/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/article_category_details/service"
+import "web-medols-be/app/module/article_category_details/service"
type Controller struct {
ArticleCategoryDetails ArticleCategoryDetailsController
@@ -10,4 +10,4 @@ func NewController(ArticleCategoryDetailsService service.ArticleCategoryDetailsS
return &Controller{
ArticleCategoryDetails: NewArticleCategoryDetailsController(ArticleCategoryDetailsService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/article_category_details/mapper/article_category_details.mapper.go b/app/module/article_category_details/mapper/article_category_details.mapper.go
index 15681da..e933de3 100644
--- a/app/module/article_category_details/mapper/article_category_details.mapper.go
+++ b/app/module/article_category_details/mapper/article_category_details.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity/article_category_details"
- res "go-humas-be/app/module/article_category_details/response"
+ "web-medols-be/app/database/entity/article_category_details"
+ res "web-medols-be/app/module/article_category_details/response"
)
func ArticleCategoryDetailsResponseMapper(articleCategoryDetailsReq *article_category_details.ArticleCategoryDetails) (articleCategoryDetailsRes *res.ArticleCategoryDetailsResponse) {
diff --git a/app/module/article_category_details/repository/article_category_details.repository.go b/app/module/article_category_details/repository/article_category_details.repository.go
index a7b977f..0c560aa 100644
--- a/app/module/article_category_details/repository/article_category_details.repository.go
+++ b/app/module/article_category_details/repository/article_category_details.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity/article_category_details"
- "go-humas-be/app/module/article_category_details/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity/article_category_details"
+ "web-medols-be/app/module/article_category_details/request"
+ "web-medols-be/utils/paginator"
)
type articleCategoryDetailsRepository struct {
diff --git a/app/module/article_category_details/request/article_category_details.request.go b/app/module/article_category_details/request/article_category_details.request.go
index c28944a..88b1e83 100644
--- a/app/module/article_category_details/request/article_category_details.request.go
+++ b/app/module/article_category_details/request/article_category_details.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity/article_category_details"
- "go-humas-be/utils/paginator"
"time"
+ "web-medols-be/app/database/entity/article_category_details"
+ "web-medols-be/utils/paginator"
)
type ArticleCategoryDetailsGeneric interface {
diff --git a/app/module/article_category_details/service/article_category_details.service.go b/app/module/article_category_details/service/article_category_details.service.go
index 0ac2b80..9dd6736 100644
--- a/app/module/article_category_details/service/article_category_details.service.go
+++ b/app/module/article_category_details/service/article_category_details.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_category_details/mapper"
- "go-humas-be/app/module/article_category_details/repository"
- "go-humas-be/app/module/article_category_details/request"
- "go-humas-be/app/module/article_category_details/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/article_category_details/mapper"
+ "web-medols-be/app/module/article_category_details/repository"
+ "web-medols-be/app/module/article_category_details/request"
+ "web-medols-be/app/module/article_category_details/response"
+ "web-medols-be/utils/paginator"
)
// ArticleCategoryDetailsService
diff --git a/app/module/article_comments/article_comments.module.go b/app/module/article_comments/article_comments.module.go
index 0a1d6da..b246de0 100644
--- a/app/module/article_comments/article_comments.module.go
+++ b/app/module/article_comments/article_comments.module.go
@@ -2,10 +2,10 @@ package article_comments
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_comments/controller"
- "go-humas-be/app/module/article_comments/repository"
- "go-humas-be/app/module/article_comments/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_comments/controller"
+ "web-medols-be/app/module/article_comments/repository"
+ "web-medols-be/app/module/article_comments/service"
)
// struct of ArticleCommentsRouter
diff --git a/app/module/article_comments/controller/article_comments.controller.go b/app/module/article_comments/controller/article_comments.controller.go
index 4f78b13..1f82776 100644
--- a/app/module/article_comments/controller/article_comments.controller.go
+++ b/app/module/article_comments/controller/article_comments.controller.go
@@ -3,12 +3,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_comments/request"
- "go-humas-be/app/module/article_comments/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/article_comments/request"
+ "web-medols-be/app/module/article_comments/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleCommentsController struct {
@@ -45,6 +46,9 @@ func NewArticleCommentsController(articleCommentsService service.ArticleComments
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments [get]
func (_i *articleCommentsController) All(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
paginate, err := paginator.Paginate(c)
if err != nil {
return err
@@ -60,7 +64,7 @@ func (_i *articleCommentsController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- articleCommentsData, paging, err := _i.articleCommentsService.All(req)
+ articleCommentsData, paging, err := _i.articleCommentsService.All(clientId, req)
if err != nil {
return err
}
@@ -85,12 +89,15 @@ func (_i *articleCommentsController) All(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments/{id} [get]
func (_i *articleCommentsController) Show(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
}
- articleCommentsData, err := _i.articleCommentsService.Show(uint(id))
+ articleCommentsData, err := _i.articleCommentsService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -116,13 +123,16 @@ func (_i *articleCommentsController) Show(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments [post]
func (_i *articleCommentsController) Save(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
req := new(request.ArticleCommentsCreateRequest)
if err := utilVal.ParseAndValidate(c, req); err != nil {
return err
}
authToken := c.Get("Authorization")
- dataResult, err := _i.articleCommentsService.Save(*req, authToken)
+ dataResult, err := _i.articleCommentsService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -148,6 +158,9 @@ func (_i *articleCommentsController) Save(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments/{id} [put]
func (_i *articleCommentsController) Update(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
@@ -158,7 +171,7 @@ func (_i *articleCommentsController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.articleCommentsService.Update(uint(id), *req)
+ err = _i.articleCommentsService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -182,12 +195,15 @@ func (_i *articleCommentsController) Update(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments/{id} [delete]
func (_i *articleCommentsController) Delete(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
}
- err = _i.articleCommentsService.Delete(uint(id))
+ err = _i.articleCommentsService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -211,12 +227,15 @@ func (_i *articleCommentsController) Delete(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-comments/approval [post]
func (_i *articleCommentsController) Approval(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
req := new(request.ArticleCommentsApprovalRequest)
if err := utilVal.ParseAndValidate(c, req); err != nil {
return err
}
- err := _i.articleCommentsService.Approval(req.ID, *req)
+ err := _i.articleCommentsService.Approval(clientId, req.ID, *req)
if err != nil {
return err
}
diff --git a/app/module/article_comments/controller/controller.go b/app/module/article_comments/controller/controller.go
index e0aff99..1a81285 100644
--- a/app/module/article_comments/controller/controller.go
+++ b/app/module/article_comments/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_comments/service"
+ "web-medols-be/app/module/article_comments/service"
)
type Controller struct {
diff --git a/app/module/article_comments/mapper/article_comments.mapper.go b/app/module/article_comments/mapper/article_comments.mapper.go
index 1bc53e3..e6d0962 100644
--- a/app/module/article_comments/mapper/article_comments.mapper.go
+++ b/app/module/article_comments/mapper/article_comments.mapper.go
@@ -1,17 +1,18 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/article_comments/response"
- usersRepository "go-humas-be/app/module/users/repository"
+ "github.com/google/uuid"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/article_comments/response"
+ usersRepository "web-medols-be/app/module/users/repository"
)
-func ArticleCommentsResponseMapper(articleCommentsReq *entity.ArticleComments, usersRepo usersRepository.UsersRepository) (articleCommentsRes *res.ArticleCommentsResponse) {
+func ArticleCommentsResponseMapper(clientId *uuid.UUID, articleCommentsReq *entity.ArticleComments, usersRepo usersRepository.UsersRepository) (articleCommentsRes *res.ArticleCommentsResponse) {
if articleCommentsReq != nil {
commentFromName := ""
if articleCommentsReq.CommentFrom != nil {
- findUser, _ := usersRepo.FindOne(*articleCommentsReq.CommentFrom)
+ findUser, _ := usersRepo.FindOne(clientId, *articleCommentsReq.CommentFrom)
if findUser != nil {
commentFromName = findUser.Fullname
}
diff --git a/app/module/article_comments/repository/article_comments.repository.go b/app/module/article_comments/repository/article_comments.repository.go
index 03426e6..a2ee5ca 100644
--- a/app/module/article_comments/repository/article_comments.repository.go
+++ b/app/module/article_comments/repository/article_comments.repository.go
@@ -2,13 +2,14 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_comments/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_comments/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type articleCommentsRepository struct {
@@ -18,11 +19,11 @@ type articleCommentsRepository struct {
// ArticleCommentsRepository define interface of IArticleCommentsRepository
type ArticleCommentsRepository interface {
- GetAll(req request.ArticleCommentsQueryRequest) (articleCommentss []*entity.ArticleComments, paging paginator.Pagination, err error)
- FindOne(id uint) (articleComments *entity.ArticleComments, err error)
- Create(articleComments *entity.ArticleComments) (articleCommentsReturn *entity.ArticleComments, err error)
- Update(id uint, articleComments *entity.ArticleComments) (err error)
- Delete(id uint) (err error)
+ GetAll(clientId *uuid.UUID, req request.ArticleCommentsQueryRequest) (articleCommentss []*entity.ArticleComments, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (articleComments *entity.ArticleComments, err error)
+ Create(clientId *uuid.UUID, articleComments *entity.ArticleComments) (articleCommentsReturn *entity.ArticleComments, err error)
+ Update(clientId *uuid.UUID, id uint, articleComments *entity.ArticleComments) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
}
func NewArticleCommentsRepository(db *database.Database, logger zerolog.Logger) ArticleCommentsRepository {
@@ -33,12 +34,17 @@ func NewArticleCommentsRepository(db *database.Database, logger zerolog.Logger)
}
// implement interface of IArticleCommentsRepository
-func (_i *articleCommentsRepository) GetAll(req request.ArticleCommentsQueryRequest) (articleCommentss []*entity.ArticleComments, paging paginator.Pagination, err error) {
+func (_i *articleCommentsRepository) GetAll(clientId *uuid.UUID, req request.ArticleCommentsQueryRequest) (articleCommentss []*entity.ArticleComments, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.ArticleComments{})
query = query.Where("is_active = ?", true)
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
if req.Message != nil && *req.Message != "" {
message := strings.ToLower(*req.Message)
query = query.Where("LOWER(message) LIKE ?", "%"+strings.ToLower(message)+"%")
@@ -78,20 +84,39 @@ func (_i *articleCommentsRepository) GetAll(req request.ArticleCommentsQueryRequ
return
}
-func (_i *articleCommentsRepository) FindOne(id uint) (articleComments *entity.ArticleComments, err error) {
- if err := _i.DB.DB.First(&articleComments, id).Error; err != nil {
+func (_i *articleCommentsRepository) FindOne(clientId *uuid.UUID, id uint) (articleComments *entity.ArticleComments, err error) {
+ query := _i.DB.DB
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articleComments, id).Error; err != nil {
return nil, err
}
return articleComments, nil
}
-func (_i *articleCommentsRepository) Create(articleComments *entity.ArticleComments) (articleCommentsReturn *entity.ArticleComments, err error) {
+func (_i *articleCommentsRepository) Create(clientId *uuid.UUID, articleComments *entity.ArticleComments) (articleCommentsReturn *entity.ArticleComments, err error) {
+ // Set client ID
+ if clientId != nil {
+ articleComments.ClientId = clientId
+ }
result := _i.DB.DB.Create(articleComments)
return articleComments, result.Error
}
-func (_i *articleCommentsRepository) Update(id uint, articleComments *entity.ArticleComments) (err error) {
+func (_i *articleCommentsRepository) Update(clientId *uuid.UUID, id uint, articleComments *entity.ArticleComments) (err error) {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.ArticleComments{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
articleCommentsMap, err := utilSvc.StructToMap(articleComments)
if err != nil {
return err
@@ -101,6 +126,17 @@ func (_i *articleCommentsRepository) Update(id uint, articleComments *entity.Art
Updates(articleCommentsMap).Error
}
-func (_i *articleCommentsRepository) Delete(id uint) error {
+func (_i *articleCommentsRepository) Delete(clientId *uuid.UUID, id uint) error {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.ArticleComments{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
return _i.DB.DB.Delete(&entity.ArticleComments{}, id).Error
}
diff --git a/app/module/article_comments/request/article_comments.request.go b/app/module/article_comments/request/article_comments.request.go
index 74b325e..7b054d7 100644
--- a/app/module/article_comments/request/article_comments.request.go
+++ b/app/module/article_comments/request/article_comments.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticleCommentsGeneric interface {
diff --git a/app/module/article_comments/service/article_comments.service.go b/app/module/article_comments/service/article_comments.service.go
index 5b237f4..7630443 100644
--- a/app/module/article_comments/service/article_comments.service.go
+++ b/app/module/article_comments/service/article_comments.service.go
@@ -1,16 +1,17 @@
package service
import (
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_comments/mapper"
- "go-humas-be/app/module/article_comments/repository"
- "go-humas-be/app/module/article_comments/request"
- "go-humas-be/app/module/article_comments/response"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_comments/mapper"
+ "web-medols-be/app/module/article_comments/repository"
+ "web-medols-be/app/module/article_comments/request"
+ "web-medols-be/app/module/article_comments/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ utilSvc "web-medols-be/utils/service"
)
// ArticleCommentsService
@@ -22,12 +23,12 @@ type articleCommentsService struct {
// ArticleCommentsService define interface of IArticleCommentsService
type ArticleCommentsService interface {
- All(req request.ArticleCommentsQueryRequest) (articleComments []*response.ArticleCommentsResponse, paging paginator.Pagination, err error)
- Show(id uint) (articleComments *response.ArticleCommentsResponse, err error)
- Save(req request.ArticleCommentsCreateRequest, authToken string) (articleComments *entity.ArticleComments, err error)
- Update(id uint, req request.ArticleCommentsUpdateRequest) (err error)
- Delete(id uint) error
- Approval(id uint, req request.ArticleCommentsApprovalRequest) (err error)
+ All(clientId *uuid.UUID, req request.ArticleCommentsQueryRequest) (articleComments []*response.ArticleCommentsResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (articleComments *response.ArticleCommentsResponse, err error)
+ Save(clientId *uuid.UUID, req request.ArticleCommentsCreateRequest, authToken string) (articleComments *entity.ArticleComments, err error)
+ Update(clientId *uuid.UUID, id uint, req request.ArticleCommentsUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ Approval(clientId *uuid.UUID, id uint, req request.ArticleCommentsApprovalRequest) (err error)
}
// NewArticleCommentsService init ArticleCommentsService
@@ -41,29 +42,29 @@ func NewArticleCommentsService(repo repository.ArticleCommentsRepository, log ze
}
// All implement interface of ArticleCommentsService
-func (_i *articleCommentsService) All(req request.ArticleCommentsQueryRequest) (articleCommentss []*response.ArticleCommentsResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *articleCommentsService) All(clientId *uuid.UUID, req request.ArticleCommentsQueryRequest) (articleCommentss []*response.ArticleCommentsResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
for _, result := range results {
- articleCommentss = append(articleCommentss, mapper.ArticleCommentsResponseMapper(result, _i.UsersRepo))
+ articleCommentss = append(articleCommentss, mapper.ArticleCommentsResponseMapper(clientId, result, _i.UsersRepo))
}
return
}
-func (_i *articleCommentsService) Show(id uint) (articleComments *response.ArticleCommentsResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleCommentsService) Show(clientId *uuid.UUID, id uint) (articleComments *response.ArticleCommentsResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
- return mapper.ArticleCommentsResponseMapper(result, _i.UsersRepo), nil
+ return mapper.ArticleCommentsResponseMapper(clientId, result, _i.UsersRepo), nil
}
-func (_i *articleCommentsService) Save(req request.ArticleCommentsCreateRequest, authToken string) (articleComments *entity.ArticleComments, err error) {
+func (_i *articleCommentsService) Save(clientId *uuid.UUID, req request.ArticleCommentsCreateRequest, authToken string) (articleComments *entity.ArticleComments, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -72,25 +73,25 @@ func (_i *articleCommentsService) Save(req request.ArticleCommentsCreateRequest,
newReq.CommentFrom = &createdBy.ID
newReq.IsActive = true
- return _i.Repo.Create(newReq)
+ return _i.Repo.Create(clientId, newReq)
}
-func (_i *articleCommentsService) Update(id uint, req request.ArticleCommentsUpdateRequest) (err error) {
+func (_i *articleCommentsService) Update(clientId *uuid.UUID, id uint, req request.ArticleCommentsUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+ return _i.Repo.Update(clientId, id, req.ToEntity())
}
-func (_i *articleCommentsService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleCommentsService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.IsActive = false
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *articleCommentsService) Approval(id uint, req request.ArticleCommentsApprovalRequest) (err error) {
+func (_i *articleCommentsService) Approval(clientId *uuid.UUID, id uint, req request.ArticleCommentsApprovalRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -100,5 +101,5 @@ func (_i *articleCommentsService) Approval(id uint, req request.ArticleCommentsA
newReq.IsPublic = false
}
- return _i.Repo.Update(id, newReq)
+ return _i.Repo.Update(clientId, id, newReq)
}
diff --git a/app/module/article_files/article_files.module.go b/app/module/article_files/article_files.module.go
index 3bb9a49..6f7d757 100644
--- a/app/module/article_files/article_files.module.go
+++ b/app/module/article_files/article_files.module.go
@@ -2,10 +2,10 @@ package article_files
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_files/controller"
- "go-humas-be/app/module/article_files/repository"
- "go-humas-be/app/module/article_files/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_files/controller"
+ "web-medols-be/app/module/article_files/repository"
+ "web-medols-be/app/module/article_files/service"
)
// struct of ArticleFilesRouter
diff --git a/app/module/article_files/controller/article_files.controller.go b/app/module/article_files/controller/article_files.controller.go
index 34dc3f8..50a78cd 100644
--- a/app/module/article_files/controller/article_files.controller.go
+++ b/app/module/article_files/controller/article_files.controller.go
@@ -3,12 +3,13 @@ package controller
import (
"fmt"
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_files/request"
- "go-humas-be/app/module/article_files/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/article_files/request"
+ "web-medols-be/app/module/article_files/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleFilesController struct {
@@ -44,6 +45,9 @@ func NewArticleFilesController(articleFilesService service.ArticleFilesService)
// @Failure 500 {object} response.InternalServerError
// @Router /article-files [get]
func (_i *articleFilesController) All(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
paginate, err := paginator.Paginate(c)
if err != nil {
return err
@@ -58,7 +62,7 @@ func (_i *articleFilesController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- articleFilesData, paging, err := _i.articleFilesService.All(req)
+ articleFilesData, paging, err := _i.articleFilesService.All(clientId, req)
if err != nil {
return err
}
@@ -83,12 +87,15 @@ func (_i *articleFilesController) All(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-files/{id} [get]
func (_i *articleFilesController) Show(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
}
- articleFilesData, err := _i.articleFilesService.Show(uint(id))
+ articleFilesData, err := _i.articleFilesService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -115,12 +122,15 @@ func (_i *articleFilesController) Show(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-files/{articleId} [post]
func (_i *articleFilesController) Save(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("articleId"), 10, 0)
if err != nil {
return err
}
- err = _i.articleFilesService.Save(c, uint(id))
+ err = _i.articleFilesService.Save(clientId, c, uint(id))
if err != nil {
return err
}
@@ -145,6 +155,9 @@ func (_i *articleFilesController) Save(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-files/{id} [put]
func (_i *articleFilesController) Update(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
@@ -155,7 +168,7 @@ func (_i *articleFilesController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.articleFilesService.Update(uint(id), *req)
+ err = _i.articleFilesService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -179,12 +192,15 @@ func (_i *articleFilesController) Update(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-files/{id} [delete]
func (_i *articleFilesController) Delete(c *fiber.Ctx) error {
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
return err
}
- err = _i.articleFilesService.Delete(uint(id))
+ err = _i.articleFilesService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -207,7 +223,10 @@ func (_i *articleFilesController) Delete(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /article-files/viewer/{filename} [get]
func (_i *articleFilesController) Viewer(c *fiber.Ctx) error {
- return _i.articleFilesService.Viewer(c)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ return _i.articleFilesService.Viewer(clientId, c)
}
// GetUploadStatus ArticleFiles
diff --git a/app/module/article_files/controller/controller.go b/app/module/article_files/controller/controller.go
index e0a1200..16163fd 100644
--- a/app/module/article_files/controller/controller.go
+++ b/app/module/article_files/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/article_files/service"
+import "web-medols-be/app/module/article_files/service"
type Controller struct {
ArticleFiles ArticleFilesController
@@ -10,4 +10,4 @@ func NewController(ArticleFilesService service.ArticleFilesService) *Controller
return &Controller{
ArticleFiles: NewArticleFilesController(ArticleFilesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/article_files/mapper/article_files.mapper.go b/app/module/article_files/mapper/article_files.mapper.go
index cad2088..9645451 100644
--- a/app/module/article_files/mapper/article_files.mapper.go
+++ b/app/module/article_files/mapper/article_files.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/article_files/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/article_files/response"
)
func ArticleFilesResponseMapper(articleFilesReq *entity.ArticleFiles, host string) (articleFilesRes *res.ArticleFilesResponse) {
diff --git a/app/module/article_files/repository/article_files.repository.go b/app/module/article_files/repository/article_files.repository.go
index 85b5c4a..d55eb82 100644
--- a/app/module/article_files/repository/article_files.repository.go
+++ b/app/module/article_files/repository/article_files.repository.go
@@ -2,12 +2,13 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_files/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ "github.com/google/uuid"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_files/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type articleFilesRepository struct {
@@ -16,13 +17,13 @@ type articleFilesRepository struct {
// ArticleFilesRepository define interface of IArticleFilesRepository
type ArticleFilesRepository interface {
- GetAll(req request.ArticleFilesQueryRequest) (articleFiless []*entity.ArticleFiles, paging paginator.Pagination, err error)
- FindOne(id uint) (articleFiles *entity.ArticleFiles, err error)
- FindByArticle(articleId uint) (articleFiles []*entity.ArticleFiles, err error)
- FindByFilename(filename string) (articleFiles *entity.ArticleFiles, err error)
- Create(articleFiles *entity.ArticleFiles) (err error)
- Update(id uint, articleFiles *entity.ArticleFiles) (err error)
- Delete(id uint) (err error)
+ GetAll(clientId *uuid.UUID, req request.ArticleFilesQueryRequest) (articleFiless []*entity.ArticleFiles, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (articleFiles *entity.ArticleFiles, err error)
+ FindByArticle(clientId *uuid.UUID, articleId uint) (articleFiles []*entity.ArticleFiles, err error)
+ FindByFilename(clientId *uuid.UUID, filename string) (articleFiles *entity.ArticleFiles, err error)
+ Create(clientId *uuid.UUID, articleFiles *entity.ArticleFiles) (err error)
+ Update(clientId *uuid.UUID, id uint, articleFiles *entity.ArticleFiles) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
}
func NewArticleFilesRepository(db *database.Database) ArticleFilesRepository {
@@ -32,12 +33,17 @@ func NewArticleFilesRepository(db *database.Database) ArticleFilesRepository {
}
// implement interface of IArticleFilesRepository
-func (_i *articleFilesRepository) GetAll(req request.ArticleFilesQueryRequest) (articleFiless []*entity.ArticleFiles, paging paginator.Pagination, err error) {
+func (_i *articleFilesRepository) GetAll(clientId *uuid.UUID, req request.ArticleFilesQueryRequest) (articleFiless []*entity.ArticleFiles, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.ArticleFiles{})
query = query.Where("is_active = ?", true)
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
if req.ArticleId != nil {
query = query.Where("article_id = ?", req.ArticleId)
}
@@ -74,36 +80,62 @@ func (_i *articleFilesRepository) GetAll(req request.ArticleFilesQueryRequest) (
return
}
-func (_i *articleFilesRepository) FindOne(id uint) (articleFiles *entity.ArticleFiles, err error) {
- if err := _i.DB.DB.First(&articleFiles, id).Error; err != nil {
+func (_i *articleFilesRepository) FindOne(clientId *uuid.UUID, id uint) (articleFiles *entity.ArticleFiles, err error) {
+ query := _i.DB.DB
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articleFiles, id).Error; err != nil {
return nil, err
}
return articleFiles, nil
}
-func (_i *articleFilesRepository) FindByArticle(articleId uint) (articleFiles []*entity.ArticleFiles, err error) {
- if err := _i.DB.DB.Where("article_id = ?", articleId).Find(&articleFiles).Error; err != nil {
+func (_i *articleFilesRepository) FindByArticle(clientId *uuid.UUID, articleId uint) (articleFiles []*entity.ArticleFiles, err error) {
+ query := _i.DB.DB.Where("article_id = ?", articleId)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.Find(&articleFiles).Error; err != nil {
return nil, err
}
return articleFiles, nil
}
-func (_i *articleFilesRepository) FindByFilename(articleFilename string) (articleFiles *entity.ArticleFiles, err error) {
-
- if err := _i.DB.DB.Where("file_name = ?", articleFilename).First(&articleFiles).Error; err != nil {
+func (_i *articleFilesRepository) FindByFilename(clientId *uuid.UUID, articleFilename string) (articleFiles *entity.ArticleFiles, err error) {
+ query := _i.DB.DB.Where("file_name = ?", articleFilename)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articleFiles).Error; err != nil {
return nil, err
}
return articleFiles, nil
}
-func (_i *articleFilesRepository) Create(articleFiles *entity.ArticleFiles) (err error) {
+func (_i *articleFilesRepository) Create(clientId *uuid.UUID, articleFiles *entity.ArticleFiles) (err error) {
+ // Set client ID
+ if clientId != nil {
+ articleFiles.ClientId = clientId
+ }
return _i.DB.DB.Create(articleFiles).Error
}
-func (_i *articleFilesRepository) Update(id uint, articleFiles *entity.ArticleFiles) (err error) {
+func (_i *articleFilesRepository) Update(clientId *uuid.UUID, id uint, articleFiles *entity.ArticleFiles) (err error) {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.ArticleFiles{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
articleFilesMap, err := utilSvc.StructToMap(articleFiles)
if err != nil {
return err
@@ -113,6 +145,17 @@ func (_i *articleFilesRepository) Update(id uint, articleFiles *entity.ArticleFi
Updates(articleFilesMap).Error
}
-func (_i *articleFilesRepository) Delete(id uint) error {
+func (_i *articleFilesRepository) Delete(clientId *uuid.UUID, id uint) error {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.ArticleFiles{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
return _i.DB.DB.Delete(&entity.ArticleFiles{}, id).Error
}
diff --git a/app/module/article_files/request/article_files.request.go b/app/module/article_files/request/article_files.request.go
index da3b7a5..f6a6861 100644
--- a/app/module/article_files/request/article_files.request.go
+++ b/app/module/article_files/request/article_files.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticleFilesGeneric interface {
diff --git a/app/module/article_files/service/article_files.service.go b/app/module/article_files/service/article_files.service.go
index 0817c27..72237f9 100644
--- a/app/module/article_files/service/article_files.service.go
+++ b/app/module/article_files/service/article_files.service.go
@@ -4,15 +4,9 @@ import (
"context"
"fmt"
"github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_files/mapper"
- "go-humas-be/app/module/article_files/repository"
- "go-humas-be/app/module/article_files/request"
- "go-humas-be/app/module/article_files/response"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
"io"
"log"
"math/rand"
@@ -24,6 +18,13 @@ import (
"strings"
"sync"
"time"
+ "web-medols-be/app/module/article_files/mapper"
+ "web-medols-be/app/module/article_files/repository"
+ "web-medols-be/app/module/article_files/request"
+ "web-medols-be/app/module/article_files/response"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
)
// ArticleFilesService
@@ -36,14 +37,14 @@ type articleFilesService struct {
// ArticleFilesService define interface of IArticleFilesService
type ArticleFilesService interface {
- All(req request.ArticleFilesQueryRequest) (articleFiles []*response.ArticleFilesResponse, paging paginator.Pagination, err error)
- Show(id uint) (articleFiles *response.ArticleFilesResponse, err error)
- Save(c *fiber.Ctx, id uint) error
- SaveAsync(c *fiber.Ctx, id uint) error
- Update(id uint, req request.ArticleFilesUpdateRequest) (err error)
+ All(clientId *uuid.UUID, req request.ArticleFilesQueryRequest) (articleFiles []*response.ArticleFilesResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (articleFiles *response.ArticleFilesResponse, err error)
+ Save(clientId *uuid.UUID, c *fiber.Ctx, id uint) error
+ SaveAsync(clientId *uuid.UUID, c *fiber.Ctx, id uint) error
+ Update(clientId *uuid.UUID, id uint, req request.ArticleFilesUpdateRequest) (err error)
GetUploadStatus(c *fiber.Ctx) (progress int, err error)
- Delete(id uint) error
- Viewer(c *fiber.Ctx) error
+ Delete(clientId *uuid.UUID, id uint) error
+ Viewer(clientId *uuid.UUID, c *fiber.Ctx) error
}
// NewArticleFilesService init ArticleFilesService
@@ -69,8 +70,8 @@ type progressWriter struct {
}
// All implement interface of ArticleFilesService
-func (_i *articleFilesService) All(req request.ArticleFilesQueryRequest) (articleFiless []*response.ArticleFilesResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *articleFilesService) All(clientId *uuid.UUID, req request.ArticleFilesQueryRequest) (articleFiless []*response.ArticleFilesResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -84,8 +85,8 @@ func (_i *articleFilesService) All(req request.ArticleFilesQueryRequest) (articl
return
}
-func (_i *articleFilesService) Show(id uint) (articleFiles *response.ArticleFilesResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleFilesService) Show(clientId *uuid.UUID, id uint) (articleFiles *response.ArticleFilesResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -95,7 +96,7 @@ func (_i *articleFilesService) Show(id uint) (articleFiles *response.ArticleFile
return mapper.ArticleFilesResponseMapper(result, host), nil
}
-func (_i *articleFilesService) SaveAsync(c *fiber.Ctx, id uint) (err error) {
+func (_i *articleFilesService) SaveAsync(clientId *uuid.UUID, c *fiber.Ctx, id uint) (err error) {
bucketName := _i.MinioStorage.Cfg.ObjectStorage.MinioStorage.BucketName
ctx := context.Background()
@@ -159,7 +160,7 @@ func (_i *articleFilesService) SaveAsync(c *fiber.Ctx, id uint) (err error) {
Size: &fileSize,
}
- err = _i.Repo.Create(req.ToEntity())
+ err = _i.Repo.Create(clientId, req.ToEntity())
if err != nil {
return err
}
@@ -194,7 +195,7 @@ func (_i *articleFilesService) SaveAsync(c *fiber.Ctx, id uint) (err error) {
return
}
-func (_i *articleFilesService) Save(c *fiber.Ctx, id uint) (err error) {
+func (_i *articleFilesService) Save(clientId *uuid.UUID, c *fiber.Ctx, id uint) (err error) {
bucketName := _i.MinioStorage.Cfg.ObjectStorage.MinioStorage.BucketName
form, err := c.MultipartForm()
@@ -256,7 +257,7 @@ func (_i *articleFilesService) Save(c *fiber.Ctx, id uint) (err error) {
Size: &fileSize,
}
- err = _i.Repo.Create(req.ToEntity())
+ err = _i.Repo.Create(clientId, req.ToEntity())
if err != nil {
return err
}
@@ -276,23 +277,23 @@ func (_i *articleFilesService) Save(c *fiber.Ctx, id uint) (err error) {
return
}
-func (_i *articleFilesService) Update(id uint, req request.ArticleFilesUpdateRequest) (err error) {
+func (_i *articleFilesService) Update(clientId *uuid.UUID, id uint, req request.ArticleFilesUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+ return _i.Repo.Update(clientId, id, req.ToEntity())
}
-func (_i *articleFilesService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articleFilesService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.IsActive = false
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *articleFilesService) Viewer(c *fiber.Ctx) (err error) {
+func (_i *articleFilesService) Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
filename := c.Params("filename")
- result, err := _i.Repo.FindByFilename(filename)
+ result, err := _i.Repo.FindByFilename(clientId, filename)
if err != nil {
return err
}
diff --git a/app/module/article_nulis_ai/article_nulis_ai.module.go b/app/module/article_nulis_ai/article_nulis_ai.module.go
index f34f257..f47bbee 100644
--- a/app/module/article_nulis_ai/article_nulis_ai.module.go
+++ b/app/module/article_nulis_ai/article_nulis_ai.module.go
@@ -2,10 +2,10 @@ package article_nulis_ai
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/article_nulis_ai/controller"
- "go-humas-be/app/module/article_nulis_ai/repository"
- "go-humas-be/app/module/article_nulis_ai/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/article_nulis_ai/controller"
+ "web-medols-be/app/module/article_nulis_ai/repository"
+ "web-medols-be/app/module/article_nulis_ai/service"
)
// struct of ArticleNulisAIRouter
diff --git a/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go b/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go
index f81541d..f7a7781 100644
--- a/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go
+++ b/app/module/article_nulis_ai/controller/article_nulis_ai.controller.go
@@ -3,12 +3,12 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_nulis_ai/request"
- "go-humas-be/app/module/article_nulis_ai/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/module/article_nulis_ai/request"
+ "web-medols-be/app/module/article_nulis_ai/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articleNulisAIController struct {
diff --git a/app/module/article_nulis_ai/controller/controller.go b/app/module/article_nulis_ai/controller/controller.go
index 03095c6..c2f3815 100644
--- a/app/module/article_nulis_ai/controller/controller.go
+++ b/app/module/article_nulis_ai/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/article_nulis_ai/service"
+ "web-medols-be/app/module/article_nulis_ai/service"
)
type Controller struct {
diff --git a/app/module/article_nulis_ai/mapper/article_nulis_ai.mapper.go b/app/module/article_nulis_ai/mapper/article_nulis_ai.mapper.go
index e894c74..a4fdf56 100644
--- a/app/module/article_nulis_ai/mapper/article_nulis_ai.mapper.go
+++ b/app/module/article_nulis_ai/mapper/article_nulis_ai.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/article_nulis_ai/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/article_nulis_ai/response"
)
func ArticleNulisAIResponseMapper(articleNulisAIReq *entity.ArticleNulisAI) (articleNulisAIRes *res.ArticleNulisAIResponse) {
diff --git a/app/module/article_nulis_ai/repository/article_nulis_ai.repository.go b/app/module/article_nulis_ai/repository/article_nulis_ai.repository.go
index 73b5921..ac79db8 100644
--- a/app/module/article_nulis_ai/repository/article_nulis_ai.repository.go
+++ b/app/module/article_nulis_ai/repository/article_nulis_ai.repository.go
@@ -3,11 +3,11 @@ package repository
import (
"fmt"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_nulis_ai/request"
- "go-humas-be/utils/paginator"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_nulis_ai/request"
+ "web-medols-be/utils/paginator"
)
type articleNulisAIRepository struct {
diff --git a/app/module/article_nulis_ai/request/article_nulis_ai.request.go b/app/module/article_nulis_ai/request/article_nulis_ai.request.go
index 70e2756..07dfccc 100644
--- a/app/module/article_nulis_ai/request/article_nulis_ai.request.go
+++ b/app/module/article_nulis_ai/request/article_nulis_ai.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticleNulisAIGeneric interface {
diff --git a/app/module/article_nulis_ai/service/article_nulis_ai.service.go b/app/module/article_nulis_ai/service/article_nulis_ai.service.go
index 68dc40b..ed996b3 100644
--- a/app/module/article_nulis_ai/service/article_nulis_ai.service.go
+++ b/app/module/article_nulis_ai/service/article_nulis_ai.service.go
@@ -2,17 +2,17 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/article_nulis_ai/mapper"
- "go-humas-be/app/module/article_nulis_ai/repository"
- "go-humas-be/app/module/article_nulis_ai/request"
- "go-humas-be/app/module/article_nulis_ai/response"
- articlesRepository "go-humas-be/app/module/articles/repository"
- articles "go-humas-be/app/module/articles/request"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/article_nulis_ai/mapper"
+ "web-medols-be/app/module/article_nulis_ai/repository"
+ "web-medols-be/app/module/article_nulis_ai/request"
+ "web-medols-be/app/module/article_nulis_ai/response"
+ articlesRepository "web-medols-be/app/module/articles/repository"
+ articles "web-medols-be/app/module/articles/request"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ utilSvc "web-medols-be/utils/service"
)
// ArticleNulisAIService
@@ -96,7 +96,7 @@ func (_i *articleNulisAIService) Publish(req request.ArticleNulisAICreateRequest
newArticleReq := articleReq.ToEntity()
newArticleReq.CreatedById = &createdBy.ID
- _, err = _i.ArticlesRepo.Create(newArticleReq)
+ _, err = _i.ArticlesRepo.Create(nil, newArticleReq)
if err != nil {
return err
} else {
diff --git a/app/module/articles/articles.module.go b/app/module/articles/articles.module.go
index 55313df..3ef4365 100644
--- a/app/module/articles/articles.module.go
+++ b/app/module/articles/articles.module.go
@@ -2,10 +2,10 @@ package articles
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/articles/controller"
- "go-humas-be/app/module/articles/repository"
- "go-humas-be/app/module/articles/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/articles/controller"
+ "web-medols-be/app/module/articles/repository"
+ "web-medols-be/app/module/articles/service"
)
// ArticlesRouter struct of ArticlesRouter
diff --git a/app/module/articles/controller/articles.controller.go b/app/module/articles/controller/articles.controller.go
index 3a041f8..83d3f41 100644
--- a/app/module/articles/controller/articles.controller.go
+++ b/app/module/articles/controller/articles.controller.go
@@ -2,17 +2,20 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/articles/request"
- "go-humas-be/app/module/articles/service"
- "go-humas-be/utils/paginator"
+ "github.com/rs/zerolog"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/articles/request"
+ "web-medols-be/app/module/articles/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type articlesController struct {
articlesService service.ArticlesService
+ Log zerolog.Logger
}
type ArticlesController interface {
@@ -31,9 +34,10 @@ type ArticlesController interface {
PublishScheduling(c *fiber.Ctx) error
}
-func NewArticlesController(articlesService service.ArticlesService) ArticlesController {
+func NewArticlesController(articlesService service.ArticlesService, log zerolog.Logger) ArticlesController {
return &articlesController{
articlesService: articlesService,
+ Log: log,
}
}
@@ -42,6 +46,7 @@ func NewArticlesController(articlesService service.ArticlesService) ArticlesCont
// @Description API for getting all Articles
// @Tags Articles
// @Security Bearer
+// @Param X-Client-Key header string true "Insert the X-Client-Key"
// @Param req query request.ArticlesQueryRequest false "query parameters"
// @Param req query paginator.Pagination false "pagination parameters"
// @Success 200 {object} response.Response
@@ -70,7 +75,12 @@ func (_i *articlesController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- articlesData, paging, err := _i.articlesService.All(req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ _i.Log.Info().Interface("clientId", clientId).Msg("")
+
+ articlesData, paging, err := _i.articlesService.All(clientId, req)
if err != nil {
return err
}
@@ -100,7 +110,10 @@ func (_i *articlesController) Show(c *fiber.Ctx) error {
return err
}
- articlesData, err := _i.articlesService.Show(uint(id))
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ articlesData, err := _i.articlesService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -129,7 +142,10 @@ func (_i *articlesController) ShowByOldId(c *fiber.Ctx) error {
return err
}
- articlesData, err := _i.articlesService.ShowByOldId(uint(id))
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ articlesData, err := _i.articlesService.ShowByOldId(clientId, uint(id))
if err != nil {
return err
}
@@ -161,7 +177,11 @@ func (_i *articlesController) Save(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
- dataResult, err := _i.articlesService.Save(*req, authToken)
+
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.articlesService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -188,7 +208,10 @@ func (_i *articlesController) Save(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /articles/thumbnail/{id} [post]
func (_i *articlesController) SaveThumbnail(c *fiber.Ctx) error {
- err := _i.articlesService.SaveThumbnail(c)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err := _i.articlesService.SaveThumbnail(clientId, c)
if err != nil {
return err
}
@@ -223,7 +246,10 @@ func (_i *articlesController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.articlesService.Update(uint(id), *req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.articlesService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -258,7 +284,10 @@ func (_i *articlesController) UpdateBanner(c *fiber.Ctx) error {
return err
}
- err = _i.articlesService.UpdateBanner(uint(id), isBanner)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.articlesService.UpdateBanner(clientId, uint(id), isBanner)
if err != nil {
return err
}
@@ -287,7 +316,10 @@ func (_i *articlesController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.articlesService.Delete(uint(id))
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.articlesService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -310,7 +342,10 @@ func (_i *articlesController) Delete(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /articles/thumbnail/viewer/{thumbnailName} [get]
func (_i *articlesController) Viewer(c *fiber.Ctx) error {
- return _i.articlesService.Viewer(c)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ return _i.articlesService.Viewer(clientId, c)
}
// SummaryStats Articles
@@ -327,7 +362,10 @@ func (_i *articlesController) Viewer(c *fiber.Ctx) error {
func (_i *articlesController) SummaryStats(c *fiber.Ctx) error {
authToken := c.Get("Authorization")
- response, err := _i.articlesService.SummaryStats(authToken)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ response, err := _i.articlesService.SummaryStats(clientId, authToken)
if err != nil {
return err
}
@@ -357,7 +395,10 @@ func (_i *articlesController) ArticlePerUserLevelStats(c *fiber.Ctx) error {
startDate := c.Query("startDate")
endDate := c.Query("endDate")
- response, err := _i.articlesService.ArticlePerUserLevelStats(authToken, &startDate, &endDate)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ response, err := _i.articlesService.ArticlePerUserLevelStats(clientId, authToken, &startDate, &endDate)
if err != nil {
return err
}
@@ -389,7 +430,10 @@ func (_i *articlesController) ArticleMonthlyStats(c *fiber.Ctx) error {
return err
}
- response, err := _i.articlesService.ArticleMonthlyStats(authToken, &yearInt)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ response, err := _i.articlesService.ArticleMonthlyStats(clientId, authToken, &yearInt)
if err != nil {
return err
}
@@ -422,7 +466,10 @@ func (_i *articlesController) PublishScheduling(c *fiber.Ctx) error {
}
date := c.Query("date")
- err = _i.articlesService.PublishScheduling(uint(id), date)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.articlesService.PublishScheduling(clientId, uint(id), date)
if err != nil {
return err
}
diff --git a/app/module/articles/controller/controller.go b/app/module/articles/controller/controller.go
index 4208b7d..3b50fe8 100644
--- a/app/module/articles/controller/controller.go
+++ b/app/module/articles/controller/controller.go
@@ -1,15 +1,16 @@
package controller
import (
- "go-humas-be/app/module/articles/service"
+ "github.com/rs/zerolog"
+ "web-medols-be/app/module/articles/service"
)
type Controller struct {
Articles ArticlesController
}
-func NewController(ArticlesService service.ArticlesService) *Controller {
+func NewController(ArticlesService service.ArticlesService, log zerolog.Logger) *Controller {
return &Controller{
- Articles: NewArticlesController(ArticlesService),
+ Articles: NewArticlesController(ArticlesService, log),
}
}
diff --git a/app/module/articles/mapper/articles.mapper.go b/app/module/articles/mapper/articles.mapper.go
index 38e5dff..e1f66a6 100644
--- a/app/module/articles/mapper/articles.mapper.go
+++ b/app/module/articles/mapper/articles.mapper.go
@@ -1,22 +1,24 @@
package mapper
import (
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- articleCategoriesMapper "go-humas-be/app/module/article_categories/mapper"
- articleCategoriesRepository "go-humas-be/app/module/article_categories/repository"
- articleCategoriesResponse "go-humas-be/app/module/article_categories/response"
- articleCategoryDetailsRepository "go-humas-be/app/module/article_category_details/repository"
- articleFilesMapper "go-humas-be/app/module/article_files/mapper"
- articleFilesRepository "go-humas-be/app/module/article_files/repository"
- articleFilesResponse "go-humas-be/app/module/article_files/response"
- res "go-humas-be/app/module/articles/response"
- usersRepository "go-humas-be/app/module/users/repository"
+ "web-medols-be/app/database/entity"
+ articleCategoriesMapper "web-medols-be/app/module/article_categories/mapper"
+ articleCategoriesRepository "web-medols-be/app/module/article_categories/repository"
+ articleCategoriesResponse "web-medols-be/app/module/article_categories/response"
+ articleCategoryDetailsRepository "web-medols-be/app/module/article_category_details/repository"
+ articleFilesMapper "web-medols-be/app/module/article_files/mapper"
+ articleFilesRepository "web-medols-be/app/module/article_files/repository"
+ articleFilesResponse "web-medols-be/app/module/article_files/response"
+ res "web-medols-be/app/module/articles/response"
+ usersRepository "web-medols-be/app/module/users/repository"
)
func ArticlesResponseMapper(
log zerolog.Logger,
host string,
+ clientId *uuid.UUID,
articlesReq *entity.Articles,
articleCategoriesRepo articleCategoriesRepository.ArticleCategoriesRepository,
articleCategoryDetailsRepo articleCategoryDetailsRepository.ArticleCategoryDetailsRepository,
@@ -42,7 +44,7 @@ func ArticlesResponseMapper(
log.Info().Interface("articleCategoriesArr", articleCategoriesArr).Msg("")
}
- articleFiles, _ := articleFilesRepo.FindByArticle(articlesReq.ID)
+ articleFiles, _ := articleFilesRepo.FindByArticle(clientId, articlesReq.ID)
var articleFilesArr []*articleFilesResponse.ArticleFilesResponse
if articleFiles != nil && len(articleFiles) > 0 {
for _, result := range articleFiles {
diff --git a/app/module/articles/repository/articles.repository.go b/app/module/articles/repository/articles.repository.go
index c449acb..517ebcf 100644
--- a/app/module/articles/repository/articles.repository.go
+++ b/app/module/articles/repository/articles.repository.go
@@ -2,15 +2,16 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/articles/request"
- "go-humas-be/app/module/articles/response"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/articles/request"
+ "web-medols-be/app/module/articles/response"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type articlesRepository struct {
@@ -20,18 +21,18 @@ type articlesRepository struct {
// ArticlesRepository define interface of IArticlesRepository
type ArticlesRepository interface {
- GetAll(req request.ArticlesQueryRequest) (articless []*entity.Articles, paging paginator.Pagination, err error)
- GetAllPublishSchedule() (articless []*entity.Articles, err error)
- FindOne(id uint) (articles *entity.Articles, err error)
- FindByFilename(thumbnailName string) (articleReturn *entity.Articles, err error)
- FindByOldId(oldId uint) (articles *entity.Articles, err error)
- Create(articles *entity.Articles) (articleReturn *entity.Articles, err error)
- Update(id uint, articles *entity.Articles) (err error)
- UpdateSkipNull(id uint, articles *entity.Articles) (err error)
- Delete(id uint) (err error)
- SummaryStats(userID uint) (articleSummaryStats *response.ArticleSummaryStats, err error)
- ArticlePerUserLevelStats(userLevelId *uint, levelNumber *int, startDate *time.Time, endDate *time.Time) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error)
- ArticleMonthlyStats(userLevelId *uint, levelNumber *int, year int) (articleMontlyStats []*response.ArticleMonthlyStats, err error)
+ GetAll(clientId *uuid.UUID, req request.ArticlesQueryRequest) (articless []*entity.Articles, paging paginator.Pagination, err error)
+ GetAllPublishSchedule(clientId *uuid.UUID) (articless []*entity.Articles, err error)
+ FindOne(clientId *uuid.UUID, id uint) (articles *entity.Articles, err error)
+ FindByFilename(clientId *uuid.UUID, thumbnailName string) (articleReturn *entity.Articles, err error)
+ FindByOldId(clientId *uuid.UUID, oldId uint) (articles *entity.Articles, err error)
+ Create(clientId *uuid.UUID, articles *entity.Articles) (articleReturn *entity.Articles, err error)
+ Update(clientId *uuid.UUID, id uint, articles *entity.Articles) (err error)
+ UpdateSkipNull(clientId *uuid.UUID, id uint, articles *entity.Articles) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
+ SummaryStats(clientId *uuid.UUID, userID uint) (articleSummaryStats *response.ArticleSummaryStats, err error)
+ ArticlePerUserLevelStats(clientId *uuid.UUID, userLevelId *uint, levelNumber *int, startDate *time.Time, endDate *time.Time) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error)
+ ArticleMonthlyStats(clientId *uuid.UUID, userLevelId *uint, levelNumber *int, year int) (articleMontlyStats []*response.ArticleMonthlyStats, err error)
}
func NewArticlesRepository(db *database.Database, log zerolog.Logger) ArticlesRepository {
@@ -42,10 +43,16 @@ func NewArticlesRepository(db *database.Database, log zerolog.Logger) ArticlesRe
}
// implement interface of IArticlesRepository
-func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articless []*entity.Articles, paging paginator.Pagination, err error) {
+func (_i *articlesRepository) GetAll(clientId *uuid.UUID, req request.ArticlesQueryRequest) (articless []*entity.Articles, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.Articles{})
+
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
if req.CategoryId != nil {
query = query.Joins("JOIN article_category_details acd ON acd.article_id = articles.id").
Where("acd.category_id = ?", req.CategoryId)
@@ -109,44 +116,76 @@ func (_i *articlesRepository) GetAll(req request.ArticlesQueryRequest) (articles
return
}
-func (_i *articlesRepository) GetAllPublishSchedule() (articles []*entity.Articles, err error) {
- err = _i.DB.DB.Where("publish_schedule IS NOT NULL").Find(&articles).Error
+func (_i *articlesRepository) GetAllPublishSchedule(clientId *uuid.UUID) (articles []*entity.Articles, err error) {
+ query := _i.DB.DB.Where("publish_schedule IS NOT NULL")
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ err = query.Find(&articles).Error
if err != nil {
return nil, err
}
return articles, nil
}
-func (_i *articlesRepository) FindOne(id uint) (articles *entity.Articles, err error) {
- if err := _i.DB.DB.First(&articles, id).Error; err != nil {
+func (_i *articlesRepository) FindOne(clientId *uuid.UUID, id uint) (articles *entity.Articles, err error) {
+ query := _i.DB.DB
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articles, id).Error; err != nil {
return nil, err
}
return articles, nil
}
-func (_i *articlesRepository) FindByFilename(thumbnailName string) (articles *entity.Articles, err error) {
- if err := _i.DB.DB.Where("thumbnail_name = ?", thumbnailName).First(&articles).Error; err != nil {
+func (_i *articlesRepository) FindByFilename(clientId *uuid.UUID, thumbnailName string) (articles *entity.Articles, err error) {
+ query := _i.DB.DB.Where("thumbnail_name = ?", thumbnailName)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articles).Error; err != nil {
return nil, err
}
return articles, nil
}
-func (_i *articlesRepository) FindByOldId(oldId uint) (articles *entity.Articles, err error) {
- if err := _i.DB.DB.Where("old_id = ?", oldId).First(&articles).Error; err != nil {
+func (_i *articlesRepository) FindByOldId(clientId *uuid.UUID, oldId uint) (articles *entity.Articles, err error) {
+ query := _i.DB.DB.Where("old_id = ?", oldId)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ if err := query.First(&articles).Error; err != nil {
return nil, err
}
return articles, nil
}
-func (_i *articlesRepository) Create(articles *entity.Articles) (articleReturn *entity.Articles, err error) {
+func (_i *articlesRepository) Create(clientId *uuid.UUID, articles *entity.Articles) (articleReturn *entity.Articles, err error) {
+ // Set client ID
+ if clientId != nil {
+ articles.ClientId = clientId
+ }
+
result := _i.DB.DB.Create(articles)
return articles, result.Error
}
-func (_i *articlesRepository) Update(id uint, articles *entity.Articles) (err error) {
+func (_i *articlesRepository) Update(clientId *uuid.UUID, id uint, articles *entity.Articles) (err error) {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.Articles{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
articlesMap, err := utilSvc.StructToMap(articles)
if err != nil {
return err
@@ -156,23 +195,45 @@ func (_i *articlesRepository) Update(id uint, articles *entity.Articles) (err er
Updates(articlesMap).Error
}
-func (_i *articlesRepository) UpdateSkipNull(id uint, articles *entity.Articles) (err error) {
+func (_i *articlesRepository) UpdateSkipNull(clientId *uuid.UUID, id uint, articles *entity.Articles) (err error) {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.Articles{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
return _i.DB.DB.Model(&entity.Articles{}).
Where(&entity.Articles{ID: id}).
Updates(articles).Error
}
-func (_i *articlesRepository) Delete(id uint) error {
+func (_i *articlesRepository) Delete(clientId *uuid.UUID, id uint) error {
+ // Validate client access
+ if clientId != nil {
+ var count int64
+ if err := _i.DB.DB.Model(&entity.Articles{}).Where("id = ? AND client_id = ?", id, clientId).Count(&count).Error; err != nil {
+ return err
+ }
+ if count == 0 {
+ return fmt.Errorf("access denied to this resource")
+ }
+ }
+
return _i.DB.DB.Delete(&entity.Articles{}, id).Error
}
-func (_i *articlesRepository) SummaryStats(userID uint) (articleSummaryStats *response.ArticleSummaryStats, err error) {
+func (_i *articlesRepository) SummaryStats(clientId *uuid.UUID, userID uint) (articleSummaryStats *response.ArticleSummaryStats, err error) {
now := time.Now()
startOfDay := now.Truncate(24 * time.Hour)
startOfWeek := now.AddDate(0, 0, -int(now.Weekday())+1).Truncate(24 * time.Hour)
// Query
- err = _i.DB.DB.Model(&entity.Articles{}).
+ query := _i.DB.DB.Model(&entity.Articles{}).
Select(
"COUNT(*) AS total_all, "+
"COALESCE(SUM(view_count), 0) AS total_views, "+
@@ -182,13 +243,19 @@ func (_i *articlesRepository) SummaryStats(userID uint) (articleSummaryStats *re
"COUNT(CASE WHEN created_at >= ? THEN 1 END) AS total_this_week",
startOfDay, startOfWeek,
).
- Where("created_by_id = ?", userID).
- Scan(&articleSummaryStats).Error
+ Where("created_by_id = ?", userID)
+
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ err = query.Scan(&articleSummaryStats).Error
return articleSummaryStats, err
}
-func (_i *articlesRepository) ArticlePerUserLevelStats(userLevelId *uint, levelNumber *int, startDate *time.Time, endDate *time.Time) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error) {
+func (_i *articlesRepository) ArticlePerUserLevelStats(clientId *uuid.UUID, userLevelId *uint, levelNumber *int, startDate *time.Time, endDate *time.Time) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error) {
levelNumberTop := 1
@@ -198,6 +265,11 @@ func (_i *articlesRepository) ArticlePerUserLevelStats(userLevelId *uint, levelN
Joins("LEFT JOIN user_levels ON users.user_level_id = user_levels.id").
Where("articles.is_active = true")
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("articles.client_id = ?", clientId)
+ }
+
if userLevelId != nil && *levelNumber != levelNumberTop {
query = query.Where("user_levels.id = ? or user_levels.parent_level_id = ?", *userLevelId, *userLevelId)
} else {
@@ -229,12 +301,14 @@ func (_i *articlesRepository) ArticlePerUserLevelStats(userLevelId *uint, levelN
FROM articles
JOIN users ON articles.created_by_id = users.id
JOIN LevelHierarchy lh ON users.user_level_id = lh.id
- WHERE articles.is_active = true AND lh.level_2_id > 0
- GROUP BY
- lh.level_2_id,
- lh.level_2_name
- ORDER BY
- total_article DESC`)
+ WHERE articles.is_active = true AND lh.level_2_id > 0`)
+
+ // Add client filter to raw query
+ if clientId != nil {
+ query = query.Where("articles.client_id = ?", clientId)
+ }
+
+ query = query.Group("lh.level_2_id, lh.level_2_name").Order("total_article DESC")
}
// Apply date filters if provided
@@ -253,7 +327,7 @@ func (_i *articlesRepository) ArticlePerUserLevelStats(userLevelId *uint, levelN
return articlePerUserLevelStats, err
}
-func (_i *articlesRepository) ArticleMonthlyStats(userLevelId *uint, levelNumber *int, year int) (articleMontlyStats []*response.ArticleMonthlyStats, err error) {
+func (_i *articlesRepository) ArticleMonthlyStats(clientId *uuid.UUID, userLevelId *uint, levelNumber *int, year int) (articleMontlyStats []*response.ArticleMonthlyStats, err error) {
levelNumberTop := 1
if year < 1900 || year > 2100 {
@@ -275,6 +349,11 @@ func (_i *articlesRepository) ArticleMonthlyStats(userLevelId *uint, levelNumber
"SUM(share_count) as total_share").
Where("EXTRACT(YEAR FROM created_at) = ?", year)
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
if userLevelId != nil && *levelNumber != levelNumberTop {
query = _i.DB.DB.Model(&entity.Articles{}).
Select("EXTRACT(MONTH FROM articles.created_at) as month, EXTRACT(DAY FROM articles.created_at) as day, "+
@@ -286,6 +365,11 @@ func (_i *articlesRepository) ArticleMonthlyStats(userLevelId *uint, levelNumber
Where("articles.is_active = true").
Where("EXTRACT(YEAR FROM articles.created_at) = ?", year).
Where("(user_levels.id = ? OR user_levels.parent_level_id = ?)", *userLevelId, *userLevelId)
+
+ // Add client filter
+ if clientId != nil {
+ query = query.Where("articles.client_id = ?", clientId)
+ }
}
err = query.Group("month, day").Scan(&results).Error
diff --git a/app/module/articles/request/articles.request.go b/app/module/articles/request/articles.request.go
index 2ae1302..fd3d48a 100644
--- a/app/module/articles/request/articles.request.go
+++ b/app/module/articles/request/articles.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ArticlesGeneric interface {
diff --git a/app/module/articles/response/articles.response.go b/app/module/articles/response/articles.response.go
index b1e6075..7534dd6 100644
--- a/app/module/articles/response/articles.response.go
+++ b/app/module/articles/response/articles.response.go
@@ -1,9 +1,9 @@
package response
import (
- articleCategoriesResponse "go-humas-be/app/module/article_categories/response"
- articleFilesResponse "go-humas-be/app/module/article_files/response"
"time"
+ articleCategoriesResponse "web-medols-be/app/module/article_categories/response"
+ articleFilesResponse "web-medols-be/app/module/article_files/response"
)
type ArticlesResponse struct {
diff --git a/app/module/articles/service/articles.service.go b/app/module/articles/service/articles.service.go
index c486296..af912b7 100644
--- a/app/module/articles/service/articles.service.go
+++ b/app/module/articles/service/articles.service.go
@@ -5,23 +5,9 @@ import (
"errors"
"fmt"
"github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- articleApprovalsRepository "go-humas-be/app/module/article_approvals/repository"
- articleCategoriesRepository "go-humas-be/app/module/article_categories/repository"
- articleCategoryDetailsRepository "go-humas-be/app/module/article_category_details/repository"
- articleCategoryDetailsReq "go-humas-be/app/module/article_category_details/request"
- articleFilesRepository "go-humas-be/app/module/article_files/repository"
- "go-humas-be/app/module/articles/mapper"
- "go-humas-be/app/module/articles/repository"
- "go-humas-be/app/module/articles/request"
- "go-humas-be/app/module/articles/response"
- usersRepository "go-humas-be/app/module/users/repository"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"io"
"log"
"math/rand"
@@ -30,6 +16,21 @@ import (
"strconv"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ articleApprovalsRepository "web-medols-be/app/module/article_approvals/repository"
+ articleCategoriesRepository "web-medols-be/app/module/article_categories/repository"
+ articleCategoryDetailsRepository "web-medols-be/app/module/article_category_details/repository"
+ articleCategoryDetailsReq "web-medols-be/app/module/article_category_details/request"
+ articleFilesRepository "web-medols-be/app/module/article_files/repository"
+ "web-medols-be/app/module/articles/mapper"
+ "web-medols-be/app/module/articles/repository"
+ "web-medols-be/app/module/articles/request"
+ "web-medols-be/app/module/articles/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// ArticlesService
@@ -47,21 +48,21 @@ type articlesService struct {
// ArticlesService define interface of IArticlesService
type ArticlesService interface {
- All(req request.ArticlesQueryRequest) (articles []*response.ArticlesResponse, paging paginator.Pagination, err error)
- Show(id uint) (articles *response.ArticlesResponse, err error)
- ShowByOldId(oldId uint) (articles *response.ArticlesResponse, err error)
- Save(req request.ArticlesCreateRequest, authToken string) (articles *entity.Articles, err error)
- SaveThumbnail(c *fiber.Ctx) (err error)
- Update(id uint, req request.ArticlesUpdateRequest) (err error)
- Delete(id uint) error
- UpdateActivityCount(id uint, activityTypeId int) (err error)
- UpdateApproval(id uint, statusId int, userLevelId int, userLevelNumber int, userParentLevelId int) (err error)
- UpdateBanner(id uint, isBanner bool) error
- Viewer(c *fiber.Ctx) error
- SummaryStats(authToken string) (summaryStats *response.ArticleSummaryStats, err error)
- ArticlePerUserLevelStats(authToken string, startDate *string, endDate *string) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error)
- ArticleMonthlyStats(authToken string, year *int) (articleMonthlyStats []*response.ArticleMonthlyStats, err error)
- PublishScheduling(id uint, publishSchedule string) error
+ All(clientId *uuid.UUID, req request.ArticlesQueryRequest) (articles []*response.ArticlesResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (articles *response.ArticlesResponse, err error)
+ ShowByOldId(clientId *uuid.UUID, oldId uint) (articles *response.ArticlesResponse, err error)
+ Save(clientId *uuid.UUID, req request.ArticlesCreateRequest, authToken string) (articles *entity.Articles, err error)
+ SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error)
+ Update(clientId *uuid.UUID, id uint, req request.ArticlesUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ UpdateActivityCount(clientId *uuid.UUID, id uint, activityTypeId int) (err error)
+ UpdateApproval(clientId *uuid.UUID, id uint, statusId int, userLevelId int, userLevelNumber int, userParentLevelId int) (err error)
+ UpdateBanner(clientId *uuid.UUID, id uint, isBanner bool) error
+ Viewer(clientId *uuid.UUID, c *fiber.Ctx) error
+ SummaryStats(clientId *uuid.UUID, authToken string) (summaryStats *response.ArticleSummaryStats, err error)
+ ArticlePerUserLevelStats(clientId *uuid.UUID, authToken string, startDate *string, endDate *string) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error)
+ ArticleMonthlyStats(clientId *uuid.UUID, authToken string, year *int) (articleMonthlyStats []*response.ArticleMonthlyStats, err error)
+ PublishScheduling(clientId *uuid.UUID, id uint, publishSchedule string) error
ExecuteScheduling() error
}
@@ -92,7 +93,7 @@ func NewArticlesService(
}
// All implement interface of ArticlesService
-func (_i *articlesService) All(req request.ArticlesQueryRequest) (articless []*response.ArticlesResponse, paging paginator.Pagination, err error) {
+func (_i *articlesService) All(clientId *uuid.UUID, req request.ArticlesQueryRequest) (articless []*response.ArticlesResponse, paging paginator.Pagination, err error) {
if req.Category != nil {
findCategory, err := _i.ArticleCategoriesRepo.FindOneBySlug(*req.Category)
if err != nil {
@@ -101,7 +102,7 @@ func (_i *articlesService) All(req request.ArticlesQueryRequest) (articless []*r
req.CategoryId = &findCategory.ID
}
- results, paging, err := _i.Repo.GetAll(req)
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -113,36 +114,36 @@ func (_i *articlesService) All(req request.ArticlesQueryRequest) (articless []*r
host := _i.Cfg.App.Domain
for _, result := range results {
- articleRes := mapper.ArticlesResponseMapper(_i.Log, host, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo)
+ articleRes := mapper.ArticlesResponseMapper(_i.Log, host, clientId, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo)
articless = append(articless, articleRes)
}
return
}
-func (_i *articlesService) Show(id uint) (articles *response.ArticlesResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) Show(clientId *uuid.UUID, id uint) (articles *response.ArticlesResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
host := _i.Cfg.App.Domain
- return mapper.ArticlesResponseMapper(_i.Log, host, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo), nil
+ return mapper.ArticlesResponseMapper(_i.Log, host, clientId, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo), nil
}
-func (_i *articlesService) ShowByOldId(oldId uint) (articles *response.ArticlesResponse, err error) {
- result, err := _i.Repo.FindByOldId(oldId)
+func (_i *articlesService) ShowByOldId(clientId *uuid.UUID, oldId uint) (articles *response.ArticlesResponse, err error) {
+ result, err := _i.Repo.FindByOldId(clientId, oldId)
if err != nil {
return nil, err
}
host := _i.Cfg.App.Domain
- return mapper.ArticlesResponseMapper(_i.Log, host, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo), nil
+ return mapper.ArticlesResponseMapper(_i.Log, host, clientId, result, _i.ArticleCategoriesRepo, _i.ArticleCategoryDetailsRepo, _i.ArticleFilesRepo, _i.UsersRepo), nil
}
-func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken string) (articles *entity.Articles, err error) {
+func (_i *articlesService) Save(clientId *uuid.UUID, req request.ArticlesCreateRequest, authToken string) (articles *entity.Articles, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -207,7 +208,7 @@ func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken str
newReq.PublishedAt = nil
}
- saveArticleRes, err := _i.Repo.Create(newReq)
+ saveArticleRes, err := _i.Repo.Create(clientId, newReq)
if err != nil {
return nil, err
}
@@ -278,7 +279,7 @@ func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken str
return saveArticleRes, nil
}
-func (_i *articlesService) SaveThumbnail(c *fiber.Ctx) (err error) {
+func (_i *articlesService) SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
@@ -333,10 +334,10 @@ func (_i *articlesService) SaveThumbnail(c *fiber.Ctx) (err error) {
newFilename := newFilenameWithoutExt + "." + extension
objectName := fmt.Sprintf("articles/thumbnail/%d/%d/%s", now.Year(), now.Month(), newFilename)
- findCategory, err := _i.Repo.FindOne(uint(id))
+ findCategory, err := _i.Repo.FindOne(clientId, uint(id))
findCategory.ThumbnailName = &newFilename
findCategory.ThumbnailPath = &objectName
- err = _i.Repo.Update(uint(id), findCategory)
+ err = _i.Repo.Update(clientId, uint(id), findCategory)
if err != nil {
return err
}
@@ -351,7 +352,7 @@ func (_i *articlesService) SaveThumbnail(c *fiber.Ctx) (err error) {
return
}
-func (_i *articlesService) Update(id uint, req request.ArticlesUpdateRequest) (err error) {
+func (_i *articlesService) Update(clientId *uuid.UUID, id uint, req request.ArticlesUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -364,27 +365,27 @@ func (_i *articlesService) Update(id uint, req request.ArticlesUpdateRequest) (e
newReq.CreatedAt = parsedTime
}
- return _i.Repo.UpdateSkipNull(id, newReq)
+ return _i.Repo.UpdateSkipNull(clientId, id, newReq)
}
-func (_i *articlesService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *articlesService) Viewer(c *fiber.Ctx) (err error) {
+func (_i *articlesService) Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
thumbnailName := c.Params("thumbnailName")
emptyImage := "empty-image.jpg"
searchThumbnail := emptyImage
if thumbnailName != emptyImage {
- result, err := _i.Repo.FindByFilename(thumbnailName)
+ result, err := _i.Repo.FindByFilename(clientId, thumbnailName)
if err != nil {
return err
}
@@ -439,8 +440,8 @@ func (_i *articlesService) Viewer(c *fiber.Ctx) (err error) {
return
}
-func (_i *articlesService) UpdateActivityCount(id uint, activityTypeId int) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) UpdateActivityCount(clientId *uuid.UUID, id uint, activityTypeId int) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
@@ -468,20 +469,20 @@ func (_i *articlesService) UpdateActivityCount(id uint, activityTypeId int) erro
result.ViewCount = &viewCount
result.ShareCount = &shareCount
result.CommentCount = &commentCount
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *articlesService) SummaryStats(authToken string) (summaryStats *response.ArticleSummaryStats, err error) {
+func (_i *articlesService) SummaryStats(clientId *uuid.UUID, authToken string) (summaryStats *response.ArticleSummaryStats, err error) {
user := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
- result, err := _i.Repo.SummaryStats(user.ID)
+ result, err := _i.Repo.SummaryStats(clientId, user.ID)
if err != nil {
return nil, err
}
return result, nil
}
-func (_i *articlesService) ArticlePerUserLevelStats(authToken string, startDate *string, endDate *string) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error) {
+func (_i *articlesService) ArticlePerUserLevelStats(clientId *uuid.UUID, authToken string, startDate *string, endDate *string) (articlePerUserLevelStats []*response.ArticlePerUserLevelStats, err error) {
user := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
_i.Log.Info().Str("timestamp", time.Now().
@@ -506,14 +507,14 @@ func (_i *articlesService) ArticlePerUserLevelStats(authToken string, startDate
Format(time.RFC3339)).Str("Service:Resource", "articlesService:ArticlePerUserLevelStats").
Interface("userLevelNumber", userLevelNumber).Msg("")
- result, err := _i.Repo.ArticlePerUserLevelStats(userLevelId, userLevelNumber, nil, nil)
+ result, err := _i.Repo.ArticlePerUserLevelStats(clientId, userLevelId, userLevelNumber, nil, nil)
if err != nil {
return nil, err
}
return result, nil
}
-func (_i *articlesService) ArticleMonthlyStats(authToken string, year *int) (articleMonthlyStats []*response.ArticleMonthlyStats, err error) {
+func (_i *articlesService) ArticleMonthlyStats(clientId *uuid.UUID, authToken string, year *int) (articleMonthlyStats []*response.ArticleMonthlyStats, err error) {
user := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
var userLevelId *uint
@@ -524,15 +525,15 @@ func (_i *articlesService) ArticleMonthlyStats(authToken string, year *int) (art
userLevelNumber = &user.UserLevel.LevelNumber
}
- result, err := _i.Repo.ArticleMonthlyStats(userLevelId, userLevelNumber, *year)
+ result, err := _i.Repo.ArticleMonthlyStats(clientId, userLevelId, userLevelNumber, *year)
if err != nil {
return nil, err
}
return result, nil
}
-func (_i *articlesService) UpdateApproval(id uint, statusId int, userLevelId int, userLevelNumber int, userParentLevelId int) (err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) UpdateApproval(clientId *uuid.UUID, id uint, statusId int, userLevelId int, userLevelNumber int, userParentLevelId int) (err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
@@ -576,7 +577,7 @@ func (_i *articlesService) UpdateApproval(id uint, statusId int, userLevelId int
result.HasApprovedBy = nil
}
- err = _i.Repo.Update(id, result)
+ err = _i.Repo.Update(clientId, id, result)
if err != nil {
return err
}
@@ -584,26 +585,27 @@ func (_i *articlesService) UpdateApproval(id uint, statusId int, userLevelId int
return
}
-func (_i *articlesService) PublishScheduling(id uint, publishSchedule string) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) PublishScheduling(clientId *uuid.UUID, id uint, publishSchedule string) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.PublishSchedule = &publishSchedule
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *articlesService) UpdateBanner(id uint, isBanner bool) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *articlesService) UpdateBanner(clientId *uuid.UUID, id uint, isBanner bool) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.IsBanner = &isBanner
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
func (_i *articlesService) ExecuteScheduling() error {
- articles, err := _i.Repo.GetAllPublishSchedule()
+ // For background jobs, we don't have context, so pass nil for clientId
+ articles, err := _i.Repo.GetAllPublishSchedule(nil)
if err != nil {
return err
}
@@ -631,7 +633,8 @@ func (_i *articlesService) ExecuteScheduling() error {
article.PublishedAt = &now
article.StatusId = &statusIdTwo
- if err := _i.Repo.Update(article.ID, article); err != nil {
+ // For background jobs, we don't have context, so pass nil for clientId
+ if err := _i.Repo.UpdateSkipNull(nil, article.ID, article); err != nil {
_i.Log.Info().Str("timestamp", time.Now().
Format(time.RFC3339)).Str("Service:articlesService", "Methods:ExecuteScheduling").
Interface("Failed to publish Article ID : ", article.ID).Msg("")
diff --git a/app/module/cities/cities.module.go b/app/module/cities/cities.module.go
index 08960e4..105c80d 100644
--- a/app/module/cities/cities.module.go
+++ b/app/module/cities/cities.module.go
@@ -2,10 +2,10 @@ package cities
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/cities/controller"
- "go-humas-be/app/module/cities/repository"
- "go-humas-be/app/module/cities/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/cities/controller"
+ "web-medols-be/app/module/cities/repository"
+ "web-medols-be/app/module/cities/service"
)
// struct of CitiesRouter
diff --git a/app/module/cities/controller/cities.controller.go b/app/module/cities/controller/cities.controller.go
index 6ce531f..f8cf0fe 100644
--- a/app/module/cities/controller/cities.controller.go
+++ b/app/module/cities/controller/cities.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/cities/request"
- "go-humas-be/app/module/cities/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/cities/request"
+ "web-medols-be/app/module/cities/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type citiesController struct {
diff --git a/app/module/cities/controller/controller.go b/app/module/cities/controller/controller.go
index 1ffd5a3..733acdf 100644
--- a/app/module/cities/controller/controller.go
+++ b/app/module/cities/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/cities/service"
+import "web-medols-be/app/module/cities/service"
type Controller struct {
Cities CitiesController
@@ -10,4 +10,4 @@ func NewController(CitiesService service.CitiesService) *Controller {
return &Controller{
Cities: NewCitiesController(CitiesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/cities/mapper/cities.mapper.go b/app/module/cities/mapper/cities.mapper.go
index bccd3e4..405dafe 100644
--- a/app/module/cities/mapper/cities.mapper.go
+++ b/app/module/cities/mapper/cities.mapper.go
@@ -1,17 +1,17 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/cities/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/cities/response"
)
func CitiesResponseMapper(citiesReq *entity.Cities) (citiesRes *res.CitiesResponse) {
if citiesReq != nil {
citiesRes = &res.CitiesResponse{
- ID: citiesReq.ID,
- CityName: citiesReq.CityName,
- ProvId: citiesReq.ProvId,
+ ID: citiesReq.ID,
+ CityName: citiesReq.CityName,
+ ProvId: citiesReq.ProvId,
}
}
return citiesRes
-}
\ No newline at end of file
+}
diff --git a/app/module/cities/repository/cities.repository.go b/app/module/cities/repository/cities.repository.go
index 529783d..21272c3 100644
--- a/app/module/cities/repository/cities.repository.go
+++ b/app/module/cities/repository/cities.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/cities/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/cities/request"
+ "web-medols-be/utils/paginator"
)
type citiesRepository struct {
@@ -66,4 +66,4 @@ func (_i *citiesRepository) Update(id uint, cities *entity.Cities) (err error) {
func (_i *citiesRepository) Delete(id uint) error {
return _i.DB.DB.Delete(&entity.Cities{}, id).Error
-}
\ No newline at end of file
+}
diff --git a/app/module/cities/request/cities.request.go b/app/module/cities/request/cities.request.go
index 48149ab..dcda863 100644
--- a/app/module/cities/request/cities.request.go
+++ b/app/module/cities/request/cities.request.go
@@ -1,8 +1,8 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type CitiesGeneric interface {
@@ -10,34 +10,33 @@ type CitiesGeneric interface {
}
type CitiesQueryRequest struct {
- CityName string `json:"city_name" validate:"required"`
- ProvId int `json:"prov_id" validate:"required"`
- Pagination *paginator.Pagination `json:"pagination"`
+ CityName string `json:"city_name" validate:"required"`
+ ProvId int `json:"prov_id" validate:"required"`
+ Pagination *paginator.Pagination `json:"pagination"`
}
-
type CitiesCreateRequest struct {
- CityName string `json:"city_name" validate:"required"`
- ProvId int `json:"prov_id" validate:"required"`
+ CityName string `json:"city_name" validate:"required"`
+ ProvId int `json:"prov_id" validate:"required"`
}
func (req CitiesCreateRequest) ToEntity() *entity.Cities {
return &entity.Cities{
- CityName: req.CityName,
- ProvId: req.ProvId,
+ CityName: req.CityName,
+ ProvId: req.ProvId,
}
}
type CitiesUpdateRequest struct {
- ID uint `json:"id" validate:"required"`
- CityName string `json:"city_name" validate:"required"`
- ProvId int `json:"prov_id" validate:"required"`
+ ID uint `json:"id" validate:"required"`
+ CityName string `json:"city_name" validate:"required"`
+ ProvId int `json:"prov_id" validate:"required"`
}
func (req CitiesUpdateRequest) ToEntity() *entity.Cities {
return &entity.Cities{
- ID: req.ID,
- CityName: req.CityName,
- ProvId: req.ProvId,
+ ID: req.ID,
+ CityName: req.CityName,
+ ProvId: req.ProvId,
}
-}
\ No newline at end of file
+}
diff --git a/app/module/cities/service/cities.service.go b/app/module/cities/service/cities.service.go
index 46b363f..6ded9e4 100644
--- a/app/module/cities/service/cities.service.go
+++ b/app/module/cities/service/cities.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/cities/mapper"
- "go-humas-be/app/module/cities/repository"
- "go-humas-be/app/module/cities/request"
- "go-humas-be/app/module/cities/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/cities/mapper"
+ "web-medols-be/app/module/cities/repository"
+ "web-medols-be/app/module/cities/request"
+ "web-medols-be/app/module/cities/response"
+ "web-medols-be/utils/paginator"
)
// CitiesService
diff --git a/app/module/clients/clients.module.go b/app/module/clients/clients.module.go
new file mode 100644
index 0000000..1bf2889
--- /dev/null
+++ b/app/module/clients/clients.module.go
@@ -0,0 +1,54 @@
+package clients
+
+import (
+ "github.com/gofiber/fiber/v2"
+ "go.uber.org/fx"
+ "web-medols-be/app/module/c
+ "web-medols-be/app/module/clients/controller"
+ "web-medols-be/app/module/clients/repository"
+ "go.uber.org/fx"
+)
+
+// struct of ClientsRouter
+type ClientsRouter struct {
+ App fiber.Router
+ Controller *controller.Controller
+}
+
+// register bulky of Clients module
+var NewClientsModule = fx.Options(
+ // register repository of Clients module
+ fx.Provide(repository.NewClientsRepository),
+
+ // register service of Clients module
+ fx.Provide(service.NewClientsService),
+
+ // register controller of Clients module
+ fx.Provide(controller.NewController),
+
+ // register router of Clients module
+ fx.Provide(NewClientsRouter),
+)
+
+// init ClientsRouter
+func NewClientsRouter(fiber *fiber.App, controller *controller.Controller) *ClientsRouter {
+ return &ClientsRouter{
+ App: fiber,
+ Controller: controller,
+ }
+}
+
+// register routes of Clients module
+func (_i *ClientsRouter) RegisterClientsRoutes() {
+ // define controllers
+ clientsController := _i.Controller.Clients
+
+ // define routes
+ _i.App.Route("/clients", func(router fiber.Router) {
+ router.Get("/", clientsController.All)
+ router.Get("/:id", clientsController.Show)
+ router.Post("/", clientsController.Save)
+ router.Put("/:id", clientsController.Update)
+ router.Delete("/:id", clientsController.Delete)
+ })
+}
diff --git a/app/module/clients/controller/clients.controller.go b/app/module/clients/controller/clients.controller.go
new file mode 100644
index 0000000..f45e757
--- /dev/null
+++ b/app/module/clients/controller/clients.controller.go
@@ -0,0 +1,196 @@
+package controller
+
+import (
+ "github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
+ "github.com/rs/zerolog"
+ "web-medols-be/app/module/clients/request"
+ "web-medols-be/app/module/clients/service"
+ "web-medols-be/utils/paginator"
+
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
+)
+
+type clientsController struct {
+ clientsService service.ClientsService
+ Log zerolog.Logger
+}
+
+type ClientsController interface {
+ All(c *fiber.Ctx) error
+ Show(c *fiber.Ctx) error
+ Save(c *fiber.Ctx) error
+ Update(c *fiber.Ctx) error
+ Delete(c *fiber.Ctx) error
+}
+
+func NewClientsController(clientsService service.ClientsService, log zerolog.Logger) ClientsController {
+ return &clientsController{
+ clientsService: clientsService,
+ Log: log,
+ }
+}
+
+// All get all Clients
+// @Summary Get all Clients
+// @Description API for getting all Clients
+// @Tags Clients
+// @Security Bearer
+// @Param req query request.ClientsQueryRequest false "query parameters"
+// @Param req query paginator.Pagination false "pagination parameters"
+// @Success 200 {object} response.Response
+// @Failure 400 {object} response.BadRequestError
+// @Failure 401 {object} response.UnauthorizedError
+// @Failure 500 {object} response.InternalServerError
+// @Router /clients [get]
+func (_i *clientsController) All(c *fiber.Ctx) error {
+ paginate, err := paginator.Paginate(c)
+ if err != nil {
+ return err
+ }
+
+ reqContext := request.ClientsQueryRequestContext{
+ Name: c.Query("name"),
+ CreatedById: c.Query("createdById"),
+ }
+ req := reqContext.ToParamRequest()
+ req.Pagination = paginate
+
+ clientsData, paging, err := _i.clientsService.All(req)
+ if err != nil {
+ return err
+ }
+
+ return utilRes.Resp(c, utilRes.Response{
+ Success: true,
+ Messages: utilRes.Messages{"Clients list successfully retrieved"},
+ Data: clientsData,
+ Meta: paging,
+ })
+}
+
+// Show get one Clients
+// @Summary Get one Clients
+// @Description API for getting one Clients
+// @Tags Clients
+// @Security Bearer
+// @Param id path int true "Clients ID"
+// @Success 200 {object} response.Response
+// @Failure 400 {object} response.BadRequestError
+// @Failure 401 {object} response.UnauthorizedError
+// @Failure 500 {object} response.InternalServerError
+// @Router /clients/{id} [get]
+func (_i *clientsController) Show(c *fiber.Ctx) error {
+ idStr := c.Params("id")
+ id, err := uuid.Parse(idStr)
+ if err != nil {
+ return err
+ }
+
+ clientsData, err := _i.clientsService.Show(id)
+ if err != nil {
+ return err
+ }
+
+ return utilRes.Resp(c, utilRes.Response{
+ Success: true,
+ Messages: utilRes.Messages{"Clients successfully retrieved"},
+ Data: clientsData,
+ })
+}
+
+// Save create Clients
+// @Summary Create Clients
+// @Description API for create Clients
+// @Tags Clients
+// @Security Bearer
+// @Param Authorization header string true "Insert your access token" default(Bearer )
+// @Param payload body request.ClientsCreateRequest true "Required payload"
+// @Success 200 {object} response.Response
+// @Failure 400 {object} response.BadRequestError
+// @Failure 401 {object} response.UnauthorizedError
+// @Failure 500 {object} response.InternalServerError
+// @Router /clients [post]
+func (_i *clientsController) Save(c *fiber.Ctx) error {
+ req := new(request.ClientsCreateRequest)
+ if err := utilVal.ParseAndValidate(c, req); err != nil {
+ return err
+ }
+
+ authToken := c.Get("Authorization")
+ dataResult, err := _i.clientsService.Save(*req, authToken)
+ if err != nil {
+ return err
+ }
+
+ return utilRes.Resp(c, utilRes.Response{
+ Success: true,
+ Messages: utilRes.Messages{"Clients successfully created"},
+ Data: dataResult,
+ })
+}
+
+// Update update Clients
+// @Summary update Clients
+// @Description API for update Clients
+// @Tags Clients
+// @Security Bearer
+// @Param payload body request.ClientsUpdateRequest true "Required payload"
+// @Param id path string true "Clients ID"
+// @Success 200 {object} response.Response
+// @Failure 400 {object} response.BadRequestError
+// @Failure 401 {object} response.UnauthorizedError
+// @Failure 500 {object} response.InternalServerError
+// @Router /clients/{id} [put]
+func (_i *clientsController) Update(c *fiber.Ctx) error {
+ idStr := c.Params("id")
+ id, err := uuid.Parse(idStr)
+ if err != nil {
+ return err
+ }
+
+ req := new(request.ClientsUpdateRequest)
+ if err := utilVal.ParseAndValidate(c, req); err != nil {
+ return err
+ }
+
+ err = _i.clientsService.Update(id, *req)
+ if err != nil {
+ return err
+ }
+
+ return utilRes.Resp(c, utilRes.Response{
+ Success: true,
+ Messages: utilRes.Messages{"Clients successfully updated"},
+ })
+}
+
+// Delete delete Clients
+// @Summary delete Clients
+// @Description API for delete Clients
+// @Tags Clients
+// @Security Bearer
+// @Param id path string true "Clients ID"
+// @Success 200 {object} response.Response
+// @Failure 400 {object} response.BadRequestError
+// @Failure 401 {object} response.UnauthorizedError
+// @Failure 500 {object} response.InternalServerError
+// @Router /clients/{id} [delete]
+func (_i *clientsController) Delete(c *fiber.Ctx) error {
+ idStr := c.Params("id")
+ id, err := uuid.Parse(idStr)
+ if err != nil {
+ return err
+ }
+
+ err = _i.clientsService.Delete(id)
+ if err != nil {
+ return err
+ }
+
+ return utilRes.Resp(c, utilRes.Response{
+ Success: true,
+ Messages: utilRes.Messages{"Clients successfully deleted"},
+ })
+}
diff --git a/app/module/clients/controller/controller.go b/app/module/clients/controller/controller.go
new file mode 100644
index 0000000..05936e6
--- /dev/null
+++ b/app/module/clients/controller/controller.go
@@ -0,0 +1,16 @@
+package controller
+
+import (
+ "github.com/rs/zerolog"
+ "web-medols-be/app/module/clients/service"
+)
+
+type Controller struct {
+ Clients ClientsController
+}
+
+func NewController(ClientsService service.ClientsService, log zerolog.Logger) *Controller {
+ return &Controller{
+ Clients: NewClientsController(ClientsService, log),
+ }
+}
diff --git a/app/module/clients/mapper/clients.mapper.go b/app/module/clients/mapper/clients.mapper.go
new file mode 100644
index 0000000..9f9e3d7
--- /dev/null
+++ b/app/module/clients/mapper/clients.mapper.go
@@ -0,0 +1,20 @@
+package mapper
+
+import (
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/clients/response"
+)
+
+func ClientsResponseMapper(clientsReq *entity.Clients) (clientsRes *res.ClientsResponse) {
+ if clientsReq != nil {
+ clientsRes = &res.ClientsResponse{
+ ClientID: clientsReq.ID,
+ Name: clientsReq.Name,
+ CreatedById: *clientsReq.CreatedById,
+ IsActive: *clientsReq.IsActive,
+ CreatedAt: clientsReq.CreatedAt,
+ UpdatedAt: clientsReq.UpdatedAt,
+ }
+ }
+ return clientsRes
+}
diff --git a/app/module/clients/repository/clients.repository.go b/app/module/clients/repository/clients.repository.go
new file mode 100644
index 0000000..8388f76
--- /dev/null
+++ b/app/module/clients/repository/clients.repository.go
@@ -0,0 +1,93 @@
+package repository
+
+import (
+ "fmt"
+ "github.com/google/uuid"
+ "github.com/rs/zerolog"
+ "strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/clients/request"
+ "web-medols-be/utils/paginator"
+)
+
+type clientsRepository struct {
+ DB *database.Database
+ Log zerolog.Logger
+}
+
+// ClientsRepository define interface of IClientsRepository
+type ClientsRepository interface {
+ GetAll(req request.ClientsQueryRequest) (clientss []*entity.Clients, paging paginator.Pagination, err error)
+ FindOne(id uuid.UUID) (clients *entity.Clients, err error)
+ Create(clients *entity.Clients) (clientsReturn *entity.Clients, err error)
+ Update(id uuid.UUID, clients *entity.Clients) (err error)
+ Delete(id uuid.UUID) (err error)
+}
+
+func NewClientsRepository(db *database.Database, logger zerolog.Logger) ClientsRepository {
+ return &clientsRepository{
+ DB: db,
+ Log: logger,
+ }
+}
+
+// implement interface of IClientsRepository
+func (_i *clientsRepository) GetAll(req request.ClientsQueryRequest) (clientss []*entity.Clients, paging paginator.Pagination, err error) {
+ var count int64
+
+ query := _i.DB.DB.Model(&entity.Clients{})
+ query = query.Where("is_active = ?", true)
+
+ if req.Name != nil && *req.Name != "" {
+ name := strings.ToLower(*req.Name)
+ query = query.Where("LOWER(name) LIKE ?", "%"+strings.ToLower(name)+"%")
+ }
+ if req.CreatedById != nil {
+ query = query.Where("created_by_id = ?", req.CreatedById)
+ }
+ query.Count(&count)
+
+ if req.Pagination.SortBy != "" {
+ direction := "ASC"
+ if req.Pagination.Sort == "desc" {
+ direction = "DESC"
+ }
+ query.Order(fmt.Sprintf("%s %s", req.Pagination.SortBy, direction))
+ }
+
+ req.Pagination.Count = count
+ req.Pagination = paginator.Paging(req.Pagination)
+
+ err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&clientss).Error
+ if err != nil {
+ return
+ }
+
+ paging = *req.Pagination
+
+ return
+}
+
+func (_i *clientsRepository) FindOne(id uuid.UUID) (clients *entity.Clients, err error) {
+ if err := _i.DB.DB.First(&clients, id).Error; err != nil {
+ return nil, err
+ }
+
+ return clients, nil
+}
+
+func (_i *clientsRepository) Create(clients *entity.Clients) (clientsReturn *entity.Clients, err error) {
+ result := _i.DB.DB.Create(clients)
+ return clients, result.Error
+}
+
+func (_i *clientsRepository) Update(id uuid.UUID, clients *entity.Clients) (err error) {
+ return _i.DB.DB.Model(&entity.Clients{}).
+ Where(&entity.Clients{ID: id}).
+ Updates(clients).Error
+}
+
+func (_i *clientsRepository) Delete(id uuid.UUID) error {
+ return _i.DB.DB.Delete(&entity.Clients{}, id).Error
+}
diff --git a/app/module/clients/request/clients.request.go b/app/module/clients/request/clients.request.go
new file mode 100644
index 0000000..0e8167c
--- /dev/null
+++ b/app/module/clients/request/clients.request.go
@@ -0,0 +1,66 @@
+package request
+
+import (
+ "strconv"
+ "time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
+)
+
+type ClientsGeneric interface {
+ ToEntity()
+}
+
+type ClientsQueryRequest struct {
+ Name *string `json:"name"`
+ CreatedById *uint `json:"createdBy"`
+ Pagination *paginator.Pagination `json:"pagination"`
+}
+
+type ClientsCreateRequest struct {
+ Name string `json:"name" validate:"required"`
+ CreatedById *uint `json:"createdById"`
+}
+
+func (req ClientsCreateRequest) ToEntity() *entity.Clients {
+ return &entity.Clients{
+ Name: req.Name,
+ CreatedById: req.CreatedById,
+ CreatedAt: time.Now(),
+ }
+}
+
+type ClientsUpdateRequest struct {
+ Name string `json:"name" validate:"required"`
+ CreatedById *uint `json:"createdById"`
+}
+
+func (req ClientsUpdateRequest) ToEntity() *entity.Clients {
+ return &entity.Clients{
+ Name: req.Name,
+ CreatedById: req.CreatedById,
+ UpdatedAt: time.Now(),
+ }
+}
+
+type ClientsQueryRequestContext struct {
+ Name string `json:"name"`
+ CreatedById string `json:"createdById"`
+}
+
+func (req ClientsQueryRequestContext) ToParamRequest() ClientsQueryRequest {
+ var request ClientsQueryRequest
+
+ if name := req.Name; name != "" {
+ request.Name = &name
+ }
+ if createdByStr := req.CreatedById; createdByStr != "" {
+ createdBy, err := strconv.Atoi(createdByStr)
+ if err == nil {
+ createdByIdUint := uint(createdBy)
+ request.CreatedById = &createdByIdUint
+ }
+ }
+
+ return request
+}
diff --git a/app/module/clients/response/clients.response.go b/app/module/clients/response/clients.response.go
new file mode 100644
index 0000000..e832b38
--- /dev/null
+++ b/app/module/clients/response/clients.response.go
@@ -0,0 +1,15 @@
+package response
+
+import (
+ "github.com/google/uuid"
+ "time"
+)
+
+type ClientsResponse struct {
+ ClientID uuid.UUID `json:"clientId"`
+ Name string `json:"name"`
+ CreatedById uint `json:"createdById"`
+ IsActive bool `json:"isActive"`
+ CreatedAt time.Time `json:"createdAt"`
+ UpdatedAt time.Time `json:"updatedAt"`
+}
diff --git a/app/module/clients/service/clients.service.go b/app/module/clients/service/clients.service.go
new file mode 100644
index 0000000..8304840
--- /dev/null
+++ b/app/module/clients/service/clients.service.go
@@ -0,0 +1,95 @@
+package service
+
+import (
+ "github.com/google/uuid"
+ "github.com/rs/zerolog"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/clients/mapper"
+ "web-medols-be/app/module/clients/repository"
+ "web-medols-be/app/module/clients/request"
+ "web-medols-be/app/module/clients/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
+
+ utilSvc "web-medols-be/utils/service"
+)
+
+// ClientsService
+type clientsService struct {
+ Repo repository.ClientsRepository
+ UsersRepo usersRepository.UsersRepository
+ Log zerolog.Logger
+}
+
+// ClientsService define interface of IClientsService
+type ClientsService interface {
+ All(req request.ClientsQueryRequest) (clients []*response.ClientsResponse, paging paginator.Pagination, err error)
+ Show(id uuid.UUID) (clients *response.ClientsResponse, err error)
+ Save(req request.ClientsCreateRequest, authToken string) (clients *entity.Clients, err error)
+ Update(id uuid.UUID, req request.ClientsUpdateRequest) (err error)
+ Delete(id uuid.UUID) error
+}
+
+// NewClientsService init ClientsService
+func NewClientsService(repo repository.ClientsRepository, log zerolog.Logger, usersRepo usersRepository.UsersRepository) ClientsService {
+
+ return &clientsService{
+ Repo: repo,
+ Log: log,
+ UsersRepo: usersRepo,
+ }
+}
+
+// All implement interface of ClientsService
+func (_i *clientsService) All(req request.ClientsQueryRequest) (clientss []*response.ClientsResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(req)
+ if err != nil {
+ return
+ }
+
+ for _, result := range results {
+ clientss = append(clientss, mapper.ClientsResponseMapper(result))
+ }
+
+ return
+}
+
+func (_i *clientsService) Show(id uuid.UUID) (clients *response.ClientsResponse, err error) {
+ result, err := _i.Repo.FindOne(id)
+ if err != nil {
+ return nil, err
+ }
+
+ return mapper.ClientsResponseMapper(result), nil
+}
+
+func (_i *clientsService) Save(req request.ClientsCreateRequest, authToken string) (clients *entity.Clients, err error) {
+ _i.Log.Info().Interface("data", req).Msg("")
+ newReq := req.ToEntity()
+ _i.Log.Info().Interface("token", authToken).Msg("")
+ createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
+ _i.Log.Info().Interface("token", authToken).Msg("")
+ newReq.CreatedById = &createdBy.ID
+
+ newReq.ID = uuid.New()
+
+ _i.Log.Info().Interface("new data", newReq).Msg("")
+
+ return _i.Repo.Create(newReq)
+}
+
+func (_i *clientsService) Update(id uuid.UUID, req request.ClientsUpdateRequest) (err error) {
+ _i.Log.Info().Interface("data", req).Msg("")
+ return _i.Repo.Update(id, req.ToEntity())
+}
+
+func (_i *clientsService) Delete(id uuid.UUID) error {
+ result, err := _i.Repo.FindOne(id)
+ if err != nil {
+ return err
+ }
+
+ isActive := false
+ result.IsActive = &isActive
+ return _i.Repo.Update(id, result)
+}
diff --git a/app/module/custom_static_pages/controller/controller.go b/app/module/custom_static_pages/controller/controller.go
index af74453..549337d 100644
--- a/app/module/custom_static_pages/controller/controller.go
+++ b/app/module/custom_static_pages/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/custom_static_pages/service"
+ "web-medols-be/app/module/custom_static_pages/service"
)
type Controller struct {
diff --git a/app/module/custom_static_pages/controller/custom_static_pages.controller.go b/app/module/custom_static_pages/controller/custom_static_pages.controller.go
index 872e928..b2633c3 100644
--- a/app/module/custom_static_pages/controller/custom_static_pages.controller.go
+++ b/app/module/custom_static_pages/controller/custom_static_pages.controller.go
@@ -3,13 +3,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/custom_static_pages/request"
- "go-humas-be/app/module/custom_static_pages/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/custom_static_pages/request"
+ "web-medols-be/app/module/custom_static_pages/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type customStaticPagesController struct {
diff --git a/app/module/custom_static_pages/custom_static_pages.module.go b/app/module/custom_static_pages/custom_static_pages.module.go
index 06f499b..f08e351 100644
--- a/app/module/custom_static_pages/custom_static_pages.module.go
+++ b/app/module/custom_static_pages/custom_static_pages.module.go
@@ -2,10 +2,10 @@ package custom_static_pages
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/custom_static_pages/controller"
- "go-humas-be/app/module/custom_static_pages/repository"
- "go-humas-be/app/module/custom_static_pages/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/custom_static_pages/controller"
+ "web-medols-be/app/module/custom_static_pages/repository"
+ "web-medols-be/app/module/custom_static_pages/service"
)
// struct of CustomStaticPagesRouter
diff --git a/app/module/custom_static_pages/mapper/custom_static_pages.mapper.go b/app/module/custom_static_pages/mapper/custom_static_pages.mapper.go
index fa20af1..609d255 100644
--- a/app/module/custom_static_pages/mapper/custom_static_pages.mapper.go
+++ b/app/module/custom_static_pages/mapper/custom_static_pages.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/custom_static_pages/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/custom_static_pages/response"
)
func CustomStaticPagesResponseMapper(customStaticPagesReq *entity.CustomStaticPages) (customStaticPagesRes *res.CustomStaticPagesResponse) {
diff --git a/app/module/custom_static_pages/repository/custom_static_pages.repository.go b/app/module/custom_static_pages/repository/custom_static_pages.repository.go
index 494f3a3..8b28742 100644
--- a/app/module/custom_static_pages/repository/custom_static_pages.repository.go
+++ b/app/module/custom_static_pages/repository/custom_static_pages.repository.go
@@ -3,12 +3,12 @@ package repository
import (
"fmt"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/custom_static_pages/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/custom_static_pages/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type customStaticPagesRepository struct {
diff --git a/app/module/custom_static_pages/request/custom_static_pages.request.go b/app/module/custom_static_pages/request/custom_static_pages.request.go
index e41d41f..600768d 100644
--- a/app/module/custom_static_pages/request/custom_static_pages.request.go
+++ b/app/module/custom_static_pages/request/custom_static_pages.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type CustomStaticPagesGeneric interface {
diff --git a/app/module/custom_static_pages/service/custom_static_pages.service.go b/app/module/custom_static_pages/service/custom_static_pages.service.go
index a2d628b..bdf9446 100644
--- a/app/module/custom_static_pages/service/custom_static_pages.service.go
+++ b/app/module/custom_static_pages/service/custom_static_pages.service.go
@@ -2,13 +2,13 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/custom_static_pages/mapper"
- "go-humas-be/app/module/custom_static_pages/repository"
- "go-humas-be/app/module/custom_static_pages/request"
- "go-humas-be/app/module/custom_static_pages/response"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/custom_static_pages/mapper"
+ "web-medols-be/app/module/custom_static_pages/repository"
+ "web-medols-be/app/module/custom_static_pages/request"
+ "web-medols-be/app/module/custom_static_pages/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
)
// CustomStaticPagesService
diff --git a/app/module/districts/controller/controller.go b/app/module/districts/controller/controller.go
index 96be5df..7544c1e 100644
--- a/app/module/districts/controller/controller.go
+++ b/app/module/districts/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/districts/service"
+import "web-medols-be/app/module/districts/service"
type Controller struct {
Districts DistrictsController
@@ -10,4 +10,4 @@ func NewController(DistrictsService service.DistrictsService) *Controller {
return &Controller{
Districts: NewDistrictsController(DistrictsService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/districts/controller/districts.controller.go b/app/module/districts/controller/districts.controller.go
index 6cbfde7..ff6d84b 100644
--- a/app/module/districts/controller/districts.controller.go
+++ b/app/module/districts/controller/districts.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/districts/request"
- "go-humas-be/app/module/districts/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/districts/request"
+ "web-medols-be/app/module/districts/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type districtsController struct {
diff --git a/app/module/districts/districts.module.go b/app/module/districts/districts.module.go
index 775162e..2b50122 100644
--- a/app/module/districts/districts.module.go
+++ b/app/module/districts/districts.module.go
@@ -2,10 +2,10 @@ package districts
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/districts/controller"
- "go-humas-be/app/module/districts/repository"
- "go-humas-be/app/module/districts/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/districts/controller"
+ "web-medols-be/app/module/districts/repository"
+ "web-medols-be/app/module/districts/service"
)
// DistrictsRouter struct of DistrictsRouter
diff --git a/app/module/districts/mapper/districts.mapper.go b/app/module/districts/mapper/districts.mapper.go
index 7a86e08..5e45c29 100644
--- a/app/module/districts/mapper/districts.mapper.go
+++ b/app/module/districts/mapper/districts.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/districts/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/districts/response"
)
func DistrictsResponseMapper(districtsReq *entity.Districts) (districtsRes *res.DistrictsResponse) {
diff --git a/app/module/districts/repository/districts.repository.go b/app/module/districts/repository/districts.repository.go
index 259eff7..50a566f 100644
--- a/app/module/districts/repository/districts.repository.go
+++ b/app/module/districts/repository/districts.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/districts/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/districts/request"
+ "web-medols-be/utils/paginator"
)
type districtsRepository struct {
@@ -66,4 +66,4 @@ func (_i *districtsRepository) Update(id uint, districts *entity.Districts) (err
func (_i *districtsRepository) Delete(id uint) error {
return _i.DB.DB.Delete(&entity.Districts{}, id).Error
-}
\ No newline at end of file
+}
diff --git a/app/module/districts/request/districts.request.go b/app/module/districts/request/districts.request.go
index 4c1f8c8..5ee79fe 100644
--- a/app/module/districts/request/districts.request.go
+++ b/app/module/districts/request/districts.request.go
@@ -1,8 +1,8 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type DistrictsGeneric interface {
diff --git a/app/module/districts/service/districts.service.go b/app/module/districts/service/districts.service.go
index 7c50ab3..0963d08 100644
--- a/app/module/districts/service/districts.service.go
+++ b/app/module/districts/service/districts.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/districts/mapper"
- "go-humas-be/app/module/districts/repository"
- "go-humas-be/app/module/districts/request"
- "go-humas-be/app/module/districts/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/districts/mapper"
+ "web-medols-be/app/module/districts/repository"
+ "web-medols-be/app/module/districts/request"
+ "web-medols-be/app/module/districts/response"
+ "web-medols-be/utils/paginator"
)
// DistrictsService
diff --git a/app/module/feedbacks/controller/controller.go b/app/module/feedbacks/controller/controller.go
index 871d0d1..ddead37 100644
--- a/app/module/feedbacks/controller/controller.go
+++ b/app/module/feedbacks/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/feedbacks/service"
+ "web-medols-be/app/module/feedbacks/service"
)
type Controller struct {
diff --git a/app/module/feedbacks/controller/feedbacks.controller.go b/app/module/feedbacks/controller/feedbacks.controller.go
index 12df4d0..b22e725 100644
--- a/app/module/feedbacks/controller/feedbacks.controller.go
+++ b/app/module/feedbacks/controller/feedbacks.controller.go
@@ -3,12 +3,12 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/feedbacks/request"
- "go-humas-be/app/module/feedbacks/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/module/feedbacks/request"
+ "web-medols-be/app/module/feedbacks/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type feedbacksController struct {
@@ -59,7 +59,10 @@ func (_i *feedbacksController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- feedbacksData, paging, err := _i.feedbacksService.All(req)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ feedbacksData, paging, err := _i.feedbacksService.All(clientId, req)
if err != nil {
return err
}
@@ -89,7 +92,10 @@ func (_i *feedbacksController) Show(c *fiber.Ctx) error {
return err
}
- feedbacksData, err := _i.feedbacksService.Show(uint(id))
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ feedbacksData, err := _i.feedbacksService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -121,7 +127,11 @@ func (_i *feedbacksController) Save(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
- dataResult, err := _i.feedbacksService.Save(*req, authToken)
+
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ dataResult, err := _i.feedbacksService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -157,7 +167,10 @@ func (_i *feedbacksController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.feedbacksService.Update(uint(id), *req)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ err = _i.feedbacksService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -186,7 +199,10 @@ func (_i *feedbacksController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.feedbacksService.Delete(uint(id))
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ err = _i.feedbacksService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -217,7 +233,10 @@ func (_i *feedbacksController) FeedbackMonthlyStats(c *fiber.Ctx) error {
return err
}
- response, err := _i.feedbacksService.FeedbackMonthlyStats(authToken, &yearInt)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ response, err := _i.feedbacksService.FeedbackMonthlyStats(clientId, authToken, &yearInt)
if err != nil {
return err
}
diff --git a/app/module/feedbacks/feedbacks.module.go b/app/module/feedbacks/feedbacks.module.go
index 39f6858..d33ac91 100644
--- a/app/module/feedbacks/feedbacks.module.go
+++ b/app/module/feedbacks/feedbacks.module.go
@@ -2,10 +2,10 @@ package feedbacks
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/feedbacks/controller"
- "go-humas-be/app/module/feedbacks/repository"
- "go-humas-be/app/module/feedbacks/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/feedbacks/controller"
+ "web-medols-be/app/module/feedbacks/repository"
+ "web-medols-be/app/module/feedbacks/service"
)
// struct of FeedbacksRouter
diff --git a/app/module/feedbacks/mapper/feedbacks.mapper.go b/app/module/feedbacks/mapper/feedbacks.mapper.go
index 63982a1..9895057 100644
--- a/app/module/feedbacks/mapper/feedbacks.mapper.go
+++ b/app/module/feedbacks/mapper/feedbacks.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/feedbacks/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/feedbacks/response"
)
func FeedbacksResponseMapper(feedbacksReq *entity.Feedbacks) (feedbacksRes *res.FeedbacksResponse) {
diff --git a/app/module/feedbacks/repository/feedbacks.repository.go b/app/module/feedbacks/repository/feedbacks.repository.go
index cb3a09e..a505f79 100644
--- a/app/module/feedbacks/repository/feedbacks.repository.go
+++ b/app/module/feedbacks/repository/feedbacks.repository.go
@@ -2,15 +2,16 @@ package repository
import (
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/feedbacks/request"
- "go-humas-be/app/module/feedbacks/response"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/feedbacks/request"
+ "web-medols-be/app/module/feedbacks/response"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type feedbacksRepository struct {
@@ -20,12 +21,12 @@ type feedbacksRepository struct {
// FeedbacksRepository define interface of IFeedbacksRepository
type FeedbacksRepository interface {
- GetAll(req request.FeedbacksQueryRequest) (feedbackss []*entity.Feedbacks, paging paginator.Pagination, err error)
- FindOne(id uint) (feedbacks *entity.Feedbacks, err error)
+ GetAll(clientId *uuid.UUID, req request.FeedbacksQueryRequest) (feedbackss []*entity.Feedbacks, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (feedbacks *entity.Feedbacks, err error)
Create(feedbacks *entity.Feedbacks) (feedbacksReturn *entity.Feedbacks, err error)
- Update(id uint, feedbacks *entity.Feedbacks) (err error)
- Delete(id uint) (err error)
- FeedbacksMonthlyStats(year int) (feedbacksMonthlyStats []*response.FeedbacksMonthlyStats, err error)
+ Update(clientId *uuid.UUID, id uint, feedbacks *entity.Feedbacks) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
+ FeedbacksMonthlyStats(clientId *uuid.UUID, year int) (feedbacksMonthlyStats []*response.FeedbacksMonthlyStats, err error)
}
func NewFeedbacksRepository(db *database.Database, logger zerolog.Logger) FeedbacksRepository {
@@ -36,10 +37,16 @@ func NewFeedbacksRepository(db *database.Database, logger zerolog.Logger) Feedba
}
// implement interface of IFeedbacksRepository
-func (_i *feedbacksRepository) GetAll(req request.FeedbacksQueryRequest) (feedbackss []*entity.Feedbacks, paging paginator.Pagination, err error) {
+func (_i *feedbacksRepository) GetAll(clientId *uuid.UUID, req request.FeedbacksQueryRequest) (feedbackss []*entity.Feedbacks, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.Feedbacks{})
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
query = query.Where("is_active = ?", true)
if req.Message != nil && *req.Message != "" {
@@ -81,8 +88,15 @@ func (_i *feedbacksRepository) GetAll(req request.FeedbacksQueryRequest) (feedba
return
}
-func (_i *feedbacksRepository) FindOne(id uint) (feedbacks *entity.Feedbacks, err error) {
- if err := _i.DB.DB.First(&feedbacks, id).Error; err != nil {
+func (_i *feedbacksRepository) FindOne(clientId *uuid.UUID, id uint) (feedbacks *entity.Feedbacks, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&feedbacks).Error; err != nil {
return nil, err
}
@@ -94,21 +108,27 @@ func (_i *feedbacksRepository) Create(feedbacks *entity.Feedbacks) (feedbacksRet
return feedbacks, result.Error
}
-func (_i *feedbacksRepository) Update(id uint, feedbacks *entity.Feedbacks) (err error) {
+func (_i *feedbacksRepository) Update(clientId *uuid.UUID, id uint, feedbacks *entity.Feedbacks) (err error) {
feedbacksMap, err := utilSvc.StructToMap(feedbacks)
if err != nil {
return err
}
- return _i.DB.DB.Model(&entity.Feedbacks{}).
- Where(&entity.Feedbacks{ID: id}).
- Updates(feedbacksMap).Error
+ query := _i.DB.DB.Model(&entity.Feedbacks{}).Where(&entity.Feedbacks{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(feedbacksMap).Error
}
-func (_i *feedbacksRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&entity.Feedbacks{}, id).Error
+func (_i *feedbacksRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&entity.Feedbacks{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&entity.Feedbacks{}).Error
}
-func (_i *feedbacksRepository) FeedbacksMonthlyStats(year int) (feedbacksMonthlyStats []*response.FeedbacksMonthlyStats, err error) {
+func (_i *feedbacksRepository) FeedbacksMonthlyStats(clientId *uuid.UUID, year int) (feedbacksMonthlyStats []*response.FeedbacksMonthlyStats, err error) {
if year < 1900 || year > 2100 {
return nil, fmt.Errorf("invalid year")
@@ -125,6 +145,10 @@ func (_i *feedbacksRepository) FeedbacksMonthlyStats(year int) (feedbacksMonthly
"count(id) as total_feedbacks").
Where("EXTRACT(YEAR FROM created_at) = ?", year)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
err = query.Group("month, day").Scan(&results).Error
if err != nil {
return nil, err
diff --git a/app/module/feedbacks/request/feedbacks.request.go b/app/module/feedbacks/request/feedbacks.request.go
index 653d43c..31e03ad 100644
--- a/app/module/feedbacks/request/feedbacks.request.go
+++ b/app/module/feedbacks/request/feedbacks.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type FeedbacksGeneric interface {
diff --git a/app/module/feedbacks/service/feedbacks.service.go b/app/module/feedbacks/service/feedbacks.service.go
index ffa0557..33f26b8 100644
--- a/app/module/feedbacks/service/feedbacks.service.go
+++ b/app/module/feedbacks/service/feedbacks.service.go
@@ -1,14 +1,15 @@
package service
import (
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/feedbacks/mapper"
- "go-humas-be/app/module/feedbacks/repository"
- "go-humas-be/app/module/feedbacks/request"
- "go-humas-be/app/module/feedbacks/response"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/feedbacks/mapper"
+ "web-medols-be/app/module/feedbacks/repository"
+ "web-medols-be/app/module/feedbacks/request"
+ "web-medols-be/app/module/feedbacks/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
)
// FeedbacksService
@@ -20,12 +21,12 @@ type feedbacksService struct {
// FeedbacksService define interface of IFeedbacksService
type FeedbacksService interface {
- All(req request.FeedbacksQueryRequest) (feedbacks []*response.FeedbacksResponse, paging paginator.Pagination, err error)
- Show(id uint) (feedbacks *response.FeedbacksResponse, err error)
- Save(req request.FeedbacksCreateRequest, authToken string) (feedbacks *entity.Feedbacks, err error)
- Update(id uint, req request.FeedbacksUpdateRequest) (err error)
- Delete(id uint) error
- FeedbackMonthlyStats(authToken string, year *int) (articleMonthlyStats []*response.FeedbacksMonthlyStats, err error)
+ All(clientId *uuid.UUID, req request.FeedbacksQueryRequest) (feedbacks []*response.FeedbacksResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (feedbacks *response.FeedbacksResponse, err error)
+ Save(clientId *uuid.UUID, req request.FeedbacksCreateRequest, authToken string) (feedbacks *entity.Feedbacks, err error)
+ Update(clientId *uuid.UUID, id uint, req request.FeedbacksUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ FeedbackMonthlyStats(clientId *uuid.UUID, authToken string, year *int) (articleMonthlyStats []*response.FeedbacksMonthlyStats, err error)
}
// NewFeedbacksService init FeedbacksService
@@ -39,8 +40,8 @@ func NewFeedbacksService(repo repository.FeedbacksRepository, log zerolog.Logger
}
// All implement interface of FeedbacksService
-func (_i *feedbacksService) All(req request.FeedbacksQueryRequest) (feedbackss []*response.FeedbacksResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *feedbacksService) All(clientId *uuid.UUID, req request.FeedbacksQueryRequest) (feedbackss []*response.FeedbacksResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -52,8 +53,8 @@ func (_i *feedbacksService) All(req request.FeedbacksQueryRequest) (feedbackss [
return
}
-func (_i *feedbacksService) Show(id uint) (feedbacks *response.FeedbacksResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *feedbacksService) Show(clientId *uuid.UUID, id uint) (feedbacks *response.FeedbacksResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -61,26 +62,36 @@ func (_i *feedbacksService) Show(id uint) (feedbacks *response.FeedbacksResponse
return mapper.FeedbacksResponseMapper(result), nil
}
-func (_i *feedbacksService) Save(req request.FeedbacksCreateRequest, authToken string) (feedbacks *entity.Feedbacks, err error) {
+func (_i *feedbacksService) Save(clientId *uuid.UUID, req request.FeedbacksCreateRequest, authToken string) (feedbacks *entity.Feedbacks, err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Create(req.ToEntity())
+
+ // Set ClientId on entity
+ entity := req.ToEntity()
+ entity.ClientId = clientId
+
+ return _i.Repo.Create(entity)
}
-func (_i *feedbacksService) Update(id uint, req request.FeedbacksUpdateRequest) (err error) {
+func (_i *feedbacksService) Update(clientId *uuid.UUID, id uint, req request.FeedbacksUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+
+ // Set ClientId on entity
+ entity := req.ToEntity()
+ entity.ClientId = clientId
+
+ return _i.Repo.Update(clientId, id, entity)
}
-func (_i *feedbacksService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *feedbacksService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
result.IsActive = false
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *feedbacksService) FeedbackMonthlyStats(authToken string, year *int) (articleMonthlyStats []*response.FeedbacksMonthlyStats, err error) {
+func (_i *feedbacksService) FeedbackMonthlyStats(clientId *uuid.UUID, authToken string, year *int) (articleMonthlyStats []*response.FeedbacksMonthlyStats, err error) {
//user := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
//var userLevelId *uint
@@ -91,7 +102,7 @@ func (_i *feedbacksService) FeedbackMonthlyStats(authToken string, year *int) (a
// userLevelNumber = &user.UserLevel.LevelNumber
//}
- result, err := _i.Repo.FeedbacksMonthlyStats(*year)
+ result, err := _i.Repo.FeedbacksMonthlyStats(clientId, *year)
if err != nil {
return nil, err
}
diff --git a/app/module/magazine_files/controller/controller.go b/app/module/magazine_files/controller/controller.go
index 592d393..ab456ea 100644
--- a/app/module/magazine_files/controller/controller.go
+++ b/app/module/magazine_files/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/magazine_files/service"
+import "web-medols-be/app/module/magazine_files/service"
type Controller struct {
MagazineFiles MagazineFilesController
@@ -10,4 +10,4 @@ func NewController(MagazineFilesService service.MagazineFilesService) *Controlle
return &Controller{
MagazineFiles: NewMagazineFilesController(MagazineFilesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/magazine_files/controller/magazine_files.controller.go b/app/module/magazine_files/controller/magazine_files.controller.go
index 9c6571c..4907042 100644
--- a/app/module/magazine_files/controller/magazine_files.controller.go
+++ b/app/module/magazine_files/controller/magazine_files.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/magazine_files/request"
- "go-humas-be/app/module/magazine_files/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/magazine_files/request"
+ "web-medols-be/app/module/magazine_files/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type magazineFilesController struct {
diff --git a/app/module/magazine_files/magazine_files.module.go b/app/module/magazine_files/magazine_files.module.go
index 8397c4e..4196044 100644
--- a/app/module/magazine_files/magazine_files.module.go
+++ b/app/module/magazine_files/magazine_files.module.go
@@ -2,10 +2,10 @@ package magazine_files
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/magazine_files/controller"
- "go-humas-be/app/module/magazine_files/repository"
- "go-humas-be/app/module/magazine_files/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/magazine_files/controller"
+ "web-medols-be/app/module/magazine_files/repository"
+ "web-medols-be/app/module/magazine_files/service"
)
// struct of MagazineFilesRouter
diff --git a/app/module/magazine_files/mapper/magazine_files.mapper.go b/app/module/magazine_files/mapper/magazine_files.mapper.go
index 989b4c0..4acdc14 100644
--- a/app/module/magazine_files/mapper/magazine_files.mapper.go
+++ b/app/module/magazine_files/mapper/magazine_files.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/magazine_files/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/magazine_files/response"
)
func MagazineFilesResponseMapper(magazineFilesReq *entity.MagazineFiles, host string) (magazineFilesRes *res.MagazineFilesResponse) {
diff --git a/app/module/magazine_files/repository/magazine_files.repository.go b/app/module/magazine_files/repository/magazine_files.repository.go
index a328552..afdb397 100644
--- a/app/module/magazine_files/repository/magazine_files.repository.go
+++ b/app/module/magazine_files/repository/magazine_files.repository.go
@@ -2,12 +2,12 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/magazine_files/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/magazine_files/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type magazineFilesRepository struct {
diff --git a/app/module/magazine_files/request/magazine_files.request.go b/app/module/magazine_files/request/magazine_files.request.go
index 728738f..d6f9e80 100644
--- a/app/module/magazine_files/request/magazine_files.request.go
+++ b/app/module/magazine_files/request/magazine_files.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type MagazineFilesGeneric interface {
diff --git a/app/module/magazine_files/service/magazine_files.service.go b/app/module/magazine_files/service/magazine_files.service.go
index 758643b..0d5bff8 100644
--- a/app/module/magazine_files/service/magazine_files.service.go
+++ b/app/module/magazine_files/service/magazine_files.service.go
@@ -6,13 +6,6 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/module/magazine_files/mapper"
- "go-humas-be/app/module/magazine_files/repository"
- "go-humas-be/app/module/magazine_files/request"
- "go-humas-be/app/module/magazine_files/response"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
"io"
"log"
"math/rand"
@@ -21,6 +14,13 @@ import (
"strconv"
"strings"
"time"
+ "web-medols-be/app/module/magazine_files/mapper"
+ "web-medols-be/app/module/magazine_files/repository"
+ "web-medols-be/app/module/magazine_files/request"
+ "web-medols-be/app/module/magazine_files/response"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
)
// MagazineFilesService
diff --git a/app/module/magazines/controller/controller.go b/app/module/magazines/controller/controller.go
index 1346c96..4b0b03d 100644
--- a/app/module/magazines/controller/controller.go
+++ b/app/module/magazines/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/magazines/service"
+import "web-medols-be/app/module/magazines/service"
type Controller struct {
Magazines MagazinesController
@@ -10,4 +10,4 @@ func NewController(MagazinesService service.MagazinesService) *Controller {
return &Controller{
Magazines: NewMagazinesController(MagazinesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/magazines/controller/magazines.controller.go b/app/module/magazines/controller/magazines.controller.go
index 2f28371..0765193 100644
--- a/app/module/magazines/controller/magazines.controller.go
+++ b/app/module/magazines/controller/magazines.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/magazines/request"
- "go-humas-be/app/module/magazines/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/magazines/request"
+ "web-medols-be/app/module/magazines/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type magazinesController struct {
@@ -59,7 +59,10 @@ func (_i *magazinesController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- magazinesData, paging, err := _i.magazinesService.All(req)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ magazinesData, paging, err := _i.magazinesService.All(clientId, req)
if err != nil {
return err
}
@@ -88,7 +91,10 @@ func (_i *magazinesController) Show(c *fiber.Ctx) error {
return err
}
- magazinesData, err := _i.magazinesService.Show(uint(id))
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ magazinesData, err := _i.magazinesService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -119,7 +125,11 @@ func (_i *magazinesController) Save(c *fiber.Ctx) error {
}
authToken := c.Get("Authorization")
- dataResult, err := _i.magazinesService.Save(*req, authToken)
+
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ dataResult, err := _i.magazinesService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -155,7 +165,10 @@ func (_i *magazinesController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.magazinesService.Update(uint(id), *req)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ err = _i.magazinesService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -180,7 +193,10 @@ func (_i *magazinesController) Update(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /magazines/thumbnail/{id} [post]
func (_i *magazinesController) SaveThumbnail(c *fiber.Ctx) error {
- err := _i.magazinesService.SaveThumbnail(c)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ err := _i.magazinesService.SaveThumbnail(clientId, c)
if err != nil {
return err
}
@@ -203,7 +219,10 @@ func (_i *magazinesController) SaveThumbnail(c *fiber.Ctx) error {
// @Failure 500 {object} response.InternalServerError
// @Router /magazines/thumbnail/viewer/{thumbnailName} [get]
func (_i *magazinesController) Viewer(c *fiber.Ctx) error {
- return _i.magazinesService.Viewer(c)
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ return _i.magazinesService.Viewer(clientId, c)
}
// Delete Magazines
@@ -224,7 +243,10 @@ func (_i *magazinesController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.magazinesService.Delete(uint(id))
+ // Extract ClientId from context
+ clientId := c.Locals("clientId")
+
+ err = _i.magazinesService.Delete(clientId, uint(id))
if err != nil {
return err
}
diff --git a/app/module/magazines/magazines.module.go b/app/module/magazines/magazines.module.go
index a172b65..16f0f8f 100644
--- a/app/module/magazines/magazines.module.go
+++ b/app/module/magazines/magazines.module.go
@@ -2,10 +2,10 @@ package magazines
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/magazines/controller"
- "go-humas-be/app/module/magazines/repository"
- "go-humas-be/app/module/magazines/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/magazines/controller"
+ "web-medols-be/app/module/magazines/repository"
+ "web-medols-be/app/module/magazines/service"
)
// struct of MagazinesRouter
diff --git a/app/module/magazines/mapper/magazines.mapper.go b/app/module/magazines/mapper/magazines.mapper.go
index e7a0e1f..4c68619 100644
--- a/app/module/magazines/mapper/magazines.mapper.go
+++ b/app/module/magazines/mapper/magazines.mapper.go
@@ -1,11 +1,11 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- magazineFilesMapper "go-humas-be/app/module/magazine_files/mapper"
- magazineFilesRepository "go-humas-be/app/module/magazine_files/repository"
- magazineFilesResponse "go-humas-be/app/module/magazine_files/response"
- res "go-humas-be/app/module/magazines/response"
+ "web-medols-be/app/database/entity"
+ magazineFilesMapper "web-medols-be/app/module/magazine_files/mapper"
+ magazineFilesRepository "web-medols-be/app/module/magazine_files/repository"
+ magazineFilesResponse "web-medols-be/app/module/magazine_files/response"
+ res "web-medols-be/app/module/magazines/response"
)
func MagazinesResponseMapper(magazinesReq *entity.Magazines, magazineFilesRepo magazineFilesRepository.MagazineFilesRepository, host string) (magazinesRes *res.MagazinesResponse) {
diff --git a/app/module/magazines/repository/magazines.repository.go b/app/module/magazines/repository/magazines.repository.go
index 4c309d3..43a3b28 100644
--- a/app/module/magazines/repository/magazines.repository.go
+++ b/app/module/magazines/repository/magazines.repository.go
@@ -2,12 +2,13 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/magazines/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ "github.com/google/uuid"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/magazines/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type magazinesRepository struct {
@@ -16,12 +17,12 @@ type magazinesRepository struct {
// MagazinesRepository define interface of IMagazinesRepository
type MagazinesRepository interface {
- GetAll(req request.MagazinesQueryRequest) (magaziness []*entity.Magazines, paging paginator.Pagination, err error)
- FindOne(id uint) (magazines *entity.Magazines, err error)
- FindByFilename(thumbnailName string) (magazineReturn *entity.Magazines, err error)
+ GetAll(clientId *uuid.UUID, req request.MagazinesQueryRequest) (magaziness []*entity.Magazines, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (magazines *entity.Magazines, err error)
+ FindByFilename(clientId *uuid.UUID, thumbnailName string) (magazineReturn *entity.Magazines, err error)
Create(magazines *entity.Magazines) (magazineReturn *entity.Magazines, err error)
- Update(id uint, magazines *entity.Magazines) (err error)
- Delete(id uint) (err error)
+ Update(clientId *uuid.UUID, id uint, magazines *entity.Magazines) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
}
func NewMagazinesRepository(db *database.Database) MagazinesRepository {
@@ -31,10 +32,16 @@ func NewMagazinesRepository(db *database.Database) MagazinesRepository {
}
// implement interface of IMagazinesRepository
-func (_i *magazinesRepository) GetAll(req request.MagazinesQueryRequest) (magaziness []*entity.Magazines, paging paginator.Pagination, err error) {
+func (_i *magazinesRepository) GetAll(clientId *uuid.UUID, req request.MagazinesQueryRequest) (magaziness []*entity.Magazines, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&entity.Magazines{})
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
query = query.Where("is_active = ?", true)
if req.Title != nil && *req.Title != "" {
@@ -77,17 +84,30 @@ func (_i *magazinesRepository) GetAll(req request.MagazinesQueryRequest) (magazi
return
}
-func (_i *magazinesRepository) FindOne(id uint) (magazines *entity.Magazines, err error) {
- if err := _i.DB.DB.First(&magazines, id).Error; err != nil {
+func (_i *magazinesRepository) FindOne(clientId *uuid.UUID, id uint) (magazines *entity.Magazines, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&magazines).Error; err != nil {
return nil, err
}
return magazines, nil
}
-func (_i *magazinesRepository) FindByFilename(thumbnailName string) (magazines *entity.Magazines, err error) {
+func (_i *magazinesRepository) FindByFilename(clientId *uuid.UUID, thumbnailName string) (magazines *entity.Magazines, err error) {
+ query := _i.DB.DB.Where("thumbnail_name = ?", thumbnailName)
- if err := _i.DB.DB.Where("thumbnail_name = ?", thumbnailName).First(&magazines).Error; err != nil {
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.First(&magazines).Error; err != nil {
return nil, err
}
@@ -99,16 +119,22 @@ func (_i *magazinesRepository) Create(magazines *entity.Magazines) (magazineRetu
return magazines, result.Error
}
-func (_i *magazinesRepository) Update(id uint, magazines *entity.Magazines) (err error) {
+func (_i *magazinesRepository) Update(clientId *uuid.UUID, id uint, magazines *entity.Magazines) (err error) {
magazinesMap, err := utilSvc.StructToMap(magazines)
if err != nil {
return err
}
- return _i.DB.DB.Model(&entity.Magazines{}).
- Where(&entity.Magazines{ID: id}).
- Updates(magazinesMap).Error
+ query := _i.DB.DB.Model(&entity.Magazines{}).Where(&entity.Magazines{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(magazinesMap).Error
}
-func (_i *magazinesRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&entity.Magazines{}, id).Error
+func (_i *magazinesRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&entity.Magazines{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&entity.Magazines{}).Error
}
diff --git a/app/module/magazines/request/magazines.request.go b/app/module/magazines/request/magazines.request.go
index ee798d0..87870b4 100644
--- a/app/module/magazines/request/magazines.request.go
+++ b/app/module/magazines/request/magazines.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type MagazinesGeneric interface {
diff --git a/app/module/magazines/response/magazines.response.go b/app/module/magazines/response/magazines.response.go
index 5ce62ea..937491f 100644
--- a/app/module/magazines/response/magazines.response.go
+++ b/app/module/magazines/response/magazines.response.go
@@ -1,8 +1,8 @@
package response
import (
- magazineFilesResponse "go-humas-be/app/module/magazine_files/response"
"time"
+ magazineFilesResponse "web-medols-be/app/module/magazine_files/response"
)
type MagazinesResponse struct {
diff --git a/app/module/magazines/service/magazines.service.go b/app/module/magazines/service/magazines.service.go
index 932b162..0fbc668 100644
--- a/app/module/magazines/service/magazines.service.go
+++ b/app/module/magazines/service/magazines.service.go
@@ -4,19 +4,9 @@ import (
"context"
"fmt"
"github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- magazineFilesRepository "go-humas-be/app/module/magazine_files/repository"
- "go-humas-be/app/module/magazines/mapper"
- "go-humas-be/app/module/magazines/repository"
- "go-humas-be/app/module/magazines/request"
- "go-humas-be/app/module/magazines/response"
- usersRepository "go-humas-be/app/module/users/repository"
- config "go-humas-be/config/config"
- minioStorage "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"io"
"log"
"math/rand"
@@ -25,6 +15,17 @@ import (
"strconv"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ magazineFilesRepository "web-medols-be/app/module/magazine_files/repository"
+ "web-medols-be/app/module/magazines/mapper"
+ "web-medols-be/app/module/magazines/repository"
+ "web-medols-be/app/module/magazines/request"
+ "web-medols-be/app/module/magazines/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ config "web-medols-be/config/config"
+ minioStorage "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// MagazinesService
@@ -39,13 +40,13 @@ type magazinesService struct {
// MagazinesService define interface of IMagazinesService
type MagazinesService interface {
- All(req request.MagazinesQueryRequest) (magazines []*response.MagazinesResponse, paging paginator.Pagination, err error)
- Show(id uint) (magazines *response.MagazinesResponse, err error)
- Save(req request.MagazinesCreateRequest, authToken string) (magazines *entity.Magazines, err error)
- Update(id uint, req request.MagazinesUpdateRequest) (err error)
- SaveThumbnail(c *fiber.Ctx) (err error)
- Viewer(c *fiber.Ctx) (err error)
- Delete(id uint) error
+ All(clientId *uuid.UUID, req request.MagazinesQueryRequest) (magazines []*response.MagazinesResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (magazines *response.MagazinesResponse, err error)
+ Save(clientId *uuid.UUID, req request.MagazinesCreateRequest, authToken string) (magazines *entity.Magazines, err error)
+ Update(clientId *uuid.UUID, id uint, req request.MagazinesUpdateRequest) (err error)
+ SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error)
+ Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
}
// NewMagazinesService init MagazinesService
@@ -62,8 +63,8 @@ func NewMagazinesService(repo repository.MagazinesRepository, magazineFilesRepo
}
// All implement interface of MagazinesService
-func (_i *magazinesService) All(req request.MagazinesQueryRequest) (magaziness []*response.MagazinesResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *magazinesService) All(clientId *uuid.UUID, req request.MagazinesQueryRequest) (magaziness []*response.MagazinesResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -76,8 +77,8 @@ func (_i *magazinesService) All(req request.MagazinesQueryRequest) (magaziness [
return
}
-func (_i *magazinesService) Show(id uint) (magazines *response.MagazinesResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *magazinesService) Show(clientId *uuid.UUID, id uint) (magazines *response.MagazinesResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -85,13 +86,16 @@ func (_i *magazinesService) Show(id uint) (magazines *response.MagazinesResponse
return mapper.MagazinesResponseMapper(result, _i.MagazineFilesRepo, host), nil
}
-func (_i *magazinesService) Save(req request.MagazinesCreateRequest, authToken string) (magazines *entity.Magazines, err error) {
+func (_i *magazinesService) Save(clientId *uuid.UUID, req request.MagazinesCreateRequest, authToken string) (magazines *entity.Magazines, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
newReq.CreatedById = &createdBy.ID
+ // Set ClientId on entity
+ newReq.ClientId = clientId
+
saveMagazineResponse, err := _i.Repo.Create(newReq)
if err != nil {
return nil, err
@@ -100,7 +104,7 @@ func (_i *magazinesService) Save(req request.MagazinesCreateRequest, authToken s
return saveMagazineResponse, nil
}
-func (_i *magazinesService) SaveThumbnail(c *fiber.Ctx) (err error) {
+func (_i *magazinesService) SaveThumbnail(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
id, err := strconv.ParseUint(c.Params("id"), 10, 0)
if err != nil {
@@ -155,10 +159,10 @@ func (_i *magazinesService) SaveThumbnail(c *fiber.Ctx) (err error) {
newFilename := newFilenameWithoutExt + "." + extension
objectName := fmt.Sprintf("magazines/thumbnail/%d/%d/%s", now.Year(), now.Month(), newFilename)
- findCategory, err := _i.Repo.FindOne(uint(id))
+ findCategory, err := _i.Repo.FindOne(clientId, uint(id))
findCategory.ThumbnailName = &newFilename
findCategory.ThumbnailPath = &objectName
- err = _i.Repo.Update(uint(id), findCategory)
+ err = _i.Repo.Update(clientId, uint(id), findCategory)
if err != nil {
return err
}
@@ -173,22 +177,27 @@ func (_i *magazinesService) SaveThumbnail(c *fiber.Ctx) (err error) {
return
}
-func (_i *magazinesService) Update(id uint, req request.MagazinesUpdateRequest) (err error) {
+func (_i *magazinesService) Update(clientId *uuid.UUID, id uint, req request.MagazinesUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- return _i.Repo.Update(id, req.ToEntity())
+
+ // Set ClientId on entity
+ entity := req.ToEntity()
+ entity.ClientId = clientId
+
+ return _i.Repo.Update(clientId, id, entity)
}
-func (_i *magazinesService) Delete(id uint) error {
- return _i.Repo.Delete(id)
+func (_i *magazinesService) Delete(clientId *uuid.UUID, id uint) error {
+ return _i.Repo.Delete(clientId, id)
}
-func (_i *magazinesService) Viewer(c *fiber.Ctx) (err error) {
+func (_i *magazinesService) Viewer(clientId *uuid.UUID, c *fiber.Ctx) (err error) {
thumbnailName := c.Params("thumbnailName")
emptyImage := "empty-image.jpg"
searchThumbnail := emptyImage
if thumbnailName != emptyImage {
- result, err := _i.Repo.FindByFilename(thumbnailName)
+ result, err := _i.Repo.FindByFilename(clientId, thumbnailName)
if err != nil {
return err
}
diff --git a/app/module/master_menus/controller/controller.go b/app/module/master_menus/controller/controller.go
index bc8c925..ccf95e2 100644
--- a/app/module/master_menus/controller/controller.go
+++ b/app/module/master_menus/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/master_menus/service"
+import "web-medols-be/app/module/master_menus/service"
type Controller struct {
MasterMenus MasterMenusController
@@ -10,4 +10,4 @@ func NewController(MasterMenusService service.MasterMenusService) *Controller {
return &Controller{
MasterMenus: NewMasterMenusController(MasterMenusService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/master_menus/controller/master_menus.controller.go b/app/module/master_menus/controller/master_menus.controller.go
index 7cf394a..b6e2a58 100644
--- a/app/module/master_menus/controller/master_menus.controller.go
+++ b/app/module/master_menus/controller/master_menus.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_menus/request"
- "go-humas-be/app/module/master_menus/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/master_menus/request"
+ "web-medols-be/app/module/master_menus/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type masterMenusController struct {
diff --git a/app/module/master_menus/mapper/master_menus.mapper.go b/app/module/master_menus/mapper/master_menus.mapper.go
index 32dfd87..a890f31 100644
--- a/app/module/master_menus/mapper/master_menus.mapper.go
+++ b/app/module/master_menus/mapper/master_menus.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/master_menus/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/master_menus/response"
)
func MasterMenusResponseMapper(masterMenusReq *entity.MasterMenus) (masterMenusRes *res.MasterMenusResponse) {
diff --git a/app/module/master_menus/master_menus.module.go b/app/module/master_menus/master_menus.module.go
index ea3be0e..11a5e77 100644
--- a/app/module/master_menus/master_menus.module.go
+++ b/app/module/master_menus/master_menus.module.go
@@ -2,10 +2,10 @@ package master_menus
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_menus/controller"
- "go-humas-be/app/module/master_menus/repository"
- "go-humas-be/app/module/master_menus/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/master_menus/controller"
+ "web-medols-be/app/module/master_menus/repository"
+ "web-medols-be/app/module/master_menus/service"
)
// struct of MasterMenusRouter
@@ -50,4 +50,4 @@ func (_i *MasterMenusRouter) RegisterMasterMenusRoutes() {
router.Put("/:id", masterMenusController.Update)
router.Delete("/:id", masterMenusController.Delete)
})
-}
\ No newline at end of file
+}
diff --git a/app/module/master_menus/repository/master_menus.repository.go b/app/module/master_menus/repository/master_menus.repository.go
index 77af33d..f0bb90f 100644
--- a/app/module/master_menus/repository/master_menus.repository.go
+++ b/app/module/master_menus/repository/master_menus.repository.go
@@ -2,11 +2,11 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/master_menus/request"
- "go-humas-be/utils/paginator"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/master_menus/request"
+ "web-medols-be/utils/paginator"
)
type masterMenusRepository struct {
diff --git a/app/module/master_menus/request/master_menus.request.go b/app/module/master_menus/request/master_menus.request.go
index e623462..e0ba9cc 100644
--- a/app/module/master_menus/request/master_menus.request.go
+++ b/app/module/master_menus/request/master_menus.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type MasterMenusGeneric interface {
diff --git a/app/module/master_menus/service/master_menus.service.go b/app/module/master_menus/service/master_menus.service.go
index 0368645..58db25c 100644
--- a/app/module/master_menus/service/master_menus.service.go
+++ b/app/module/master_menus/service/master_menus.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/master_menus/mapper"
- "go-humas-be/app/module/master_menus/repository"
- "go-humas-be/app/module/master_menus/request"
- "go-humas-be/app/module/master_menus/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/master_menus/mapper"
+ "web-medols-be/app/module/master_menus/repository"
+ "web-medols-be/app/module/master_menus/request"
+ "web-medols-be/app/module/master_menus/response"
+ "web-medols-be/utils/paginator"
)
// MasterMenusService
diff --git a/app/module/master_modules/controller/controller.go b/app/module/master_modules/controller/controller.go
index ec3d538..88b91d6 100644
--- a/app/module/master_modules/controller/controller.go
+++ b/app/module/master_modules/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/master_modules/service"
+import "web-medols-be/app/module/master_modules/service"
type Controller struct {
MasterModules MasterModulesController
@@ -10,4 +10,4 @@ func NewController(MasterModulesService service.MasterModulesService) *Controlle
return &Controller{
MasterModules: NewMasterModulesController(MasterModulesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/master_modules/controller/master_modules.controller.go b/app/module/master_modules/controller/master_modules.controller.go
index fe539bd..04f481c 100644
--- a/app/module/master_modules/controller/master_modules.controller.go
+++ b/app/module/master_modules/controller/master_modules.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_modules/request"
- "go-humas-be/app/module/master_modules/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/master_modules/request"
+ "web-medols-be/app/module/master_modules/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type masterModulesController struct {
diff --git a/app/module/master_modules/mapper/master_modules.mapper.go b/app/module/master_modules/mapper/master_modules.mapper.go
index 62432a0..c51cf91 100644
--- a/app/module/master_modules/mapper/master_modules.mapper.go
+++ b/app/module/master_modules/mapper/master_modules.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/master_modules/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/master_modules/response"
)
func MasterModulesResponseMapper(masterModulesReq *entity.MasterModules) (masterModulesRes *res.MasterModulesResponse) {
diff --git a/app/module/master_modules/master_modules.module.go b/app/module/master_modules/master_modules.module.go
index de9e961..55497f2 100644
--- a/app/module/master_modules/master_modules.module.go
+++ b/app/module/master_modules/master_modules.module.go
@@ -2,10 +2,10 @@ package master_modules
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_modules/controller"
- "go-humas-be/app/module/master_modules/repository"
- "go-humas-be/app/module/master_modules/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/master_modules/controller"
+ "web-medols-be/app/module/master_modules/repository"
+ "web-medols-be/app/module/master_modules/service"
)
// struct of MasterModulesRouter
@@ -50,4 +50,4 @@ func (_i *MasterModulesRouter) RegisterMasterModulesRoutes() {
router.Put("/:id", masterModulesController.Update)
router.Delete("/:id", masterModulesController.Delete)
})
-}
\ No newline at end of file
+}
diff --git a/app/module/master_modules/repository/master_modules.repository.go b/app/module/master_modules/repository/master_modules.repository.go
index b527e92..e27e776 100644
--- a/app/module/master_modules/repository/master_modules.repository.go
+++ b/app/module/master_modules/repository/master_modules.repository.go
@@ -2,11 +2,11 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/master_modules/request"
- "go-humas-be/utils/paginator"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/master_modules/request"
+ "web-medols-be/utils/paginator"
)
type masterModulesRepository struct {
diff --git a/app/module/master_modules/request/master_modules.request.go b/app/module/master_modules/request/master_modules.request.go
index 9f4774b..a667e86 100644
--- a/app/module/master_modules/request/master_modules.request.go
+++ b/app/module/master_modules/request/master_modules.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type MasterModulesGeneric interface {
diff --git a/app/module/master_modules/service/master_modules.service.go b/app/module/master_modules/service/master_modules.service.go
index 90cf7f1..9b995e5 100644
--- a/app/module/master_modules/service/master_modules.service.go
+++ b/app/module/master_modules/service/master_modules.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/master_modules/mapper"
- "go-humas-be/app/module/master_modules/repository"
- "go-humas-be/app/module/master_modules/request"
- "go-humas-be/app/module/master_modules/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/master_modules/mapper"
+ "web-medols-be/app/module/master_modules/repository"
+ "web-medols-be/app/module/master_modules/request"
+ "web-medols-be/app/module/master_modules/response"
+ "web-medols-be/utils/paginator"
)
// MasterModulesService
diff --git a/app/module/master_statuses/controller/controller.go b/app/module/master_statuses/controller/controller.go
index 87e1e4f..d77d741 100644
--- a/app/module/master_statuses/controller/controller.go
+++ b/app/module/master_statuses/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/master_statuses/service"
+import "web-medols-be/app/module/master_statuses/service"
type Controller struct {
MasterStatuses MasterStatusesController
@@ -10,4 +10,4 @@ func NewController(MasterStatusesService service.MasterStatusesService) *Control
return &Controller{
MasterStatuses: NewMasterStatusesController(MasterStatusesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/master_statuses/controller/master_statuses.controller.go b/app/module/master_statuses/controller/master_statuses.controller.go
index 9c68cda..04c54ab 100644
--- a/app/module/master_statuses/controller/master_statuses.controller.go
+++ b/app/module/master_statuses/controller/master_statuses.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_statuses/request"
- "go-humas-be/app/module/master_statuses/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/master_statuses/request"
+ "web-medols-be/app/module/master_statuses/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type masterStatusesController struct {
diff --git a/app/module/master_statuses/mapper/master_statuses.mapper.go b/app/module/master_statuses/mapper/master_statuses.mapper.go
index 1ed31c5..da03264 100644
--- a/app/module/master_statuses/mapper/master_statuses.mapper.go
+++ b/app/module/master_statuses/mapper/master_statuses.mapper.go
@@ -1,17 +1,17 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/master_statuses/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/master_statuses/response"
)
func MasterStatusesResponseMapper(masterStatusesReq *entity.MasterStatuses) (masterStatusesRes *res.MasterStatusesResponse) {
if masterStatusesReq != nil {
masterStatusesRes = &res.MasterStatusesResponse{
- ID: masterStatusesReq.ID,
- Name: masterStatusesReq.Name,
- IsActive: masterStatusesReq.IsActive,
+ ID: masterStatusesReq.ID,
+ Name: masterStatusesReq.Name,
+ IsActive: masterStatusesReq.IsActive,
}
}
return masterStatusesRes
-}
\ No newline at end of file
+}
diff --git a/app/module/master_statuses/master_statuses.module.go b/app/module/master_statuses/master_statuses.module.go
index 1a3e4d7..17707ba 100644
--- a/app/module/master_statuses/master_statuses.module.go
+++ b/app/module/master_statuses/master_statuses.module.go
@@ -2,10 +2,10 @@ package master_statuses
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/master_statuses/controller"
- "go-humas-be/app/module/master_statuses/repository"
- "go-humas-be/app/module/master_statuses/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/master_statuses/controller"
+ "web-medols-be/app/module/master_statuses/repository"
+ "web-medols-be/app/module/master_statuses/service"
)
// struct of MasterStatusesRouter
@@ -50,4 +50,4 @@ func (_i *MasterStatusesRouter) RegisterMasterStatusesRoutes() {
router.Put("/:id", masterStatusesController.Update)
router.Delete("/:id", masterStatusesController.Delete)
})
-}
\ No newline at end of file
+}
diff --git a/app/module/master_statuses/repository/master_statuses.repository.go b/app/module/master_statuses/repository/master_statuses.repository.go
index 5ef8595..f836c3d 100644
--- a/app/module/master_statuses/repository/master_statuses.repository.go
+++ b/app/module/master_statuses/repository/master_statuses.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/master_statuses/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/master_statuses/request"
+ "web-medols-be/utils/paginator"
)
type masterStatusesRepository struct {
@@ -66,4 +66,4 @@ func (_i *masterStatusesRepository) Update(id uint, masterStatuses *entity.Maste
func (_i *masterStatusesRepository) Delete(id uint) error {
return _i.DB.DB.Delete(&entity.MasterStatuses{}, id).Error
-}
\ No newline at end of file
+}
diff --git a/app/module/master_statuses/request/master_statuses.request.go b/app/module/master_statuses/request/master_statuses.request.go
index 5b19b0d..1f4fd8a 100644
--- a/app/module/master_statuses/request/master_statuses.request.go
+++ b/app/module/master_statuses/request/master_statuses.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type MasterStatusesGeneric interface {
@@ -11,34 +11,33 @@ type MasterStatusesGeneric interface {
}
type MasterStatusesQueryRequest struct {
- Name string `json:"name" validate:"required"`
- IsActive bool `json:"is_active" validate:"required"`
- Pagination *paginator.Pagination `json:"pagination"`
+ Name string `json:"name" validate:"required"`
+ IsActive bool `json:"is_active" validate:"required"`
+ Pagination *paginator.Pagination `json:"pagination"`
}
-
type MasterStatusesCreateRequest struct {
- Name string `json:"name" validate:"required"`
- IsActive bool `json:"is_active" validate:"required"`
+ Name string `json:"name" validate:"required"`
+ IsActive bool `json:"is_active" validate:"required"`
}
func (req MasterStatusesCreateRequest) ToEntity() *entity.MasterStatuses {
return &entity.MasterStatuses{
- Name: req.Name,
- IsActive: req.IsActive,
+ Name: req.Name,
+ IsActive: req.IsActive,
}
}
type MasterStatusesUpdateRequest struct {
- ID uint `json:"id" validate:"required"`
- Name string `json:"name" validate:"required"`
- IsActive bool `json:"is_active" validate:"required"`
+ ID uint `json:"id" validate:"required"`
+ Name string `json:"name" validate:"required"`
+ IsActive bool `json:"is_active" validate:"required"`
}
func (req MasterStatusesUpdateRequest) ToEntity() *entity.MasterStatuses {
return &entity.MasterStatuses{
- ID: req.ID,
- Name: req.Name,
- IsActive: req.IsActive,
+ ID: req.ID,
+ Name: req.Name,
+ IsActive: req.IsActive,
}
-}
\ No newline at end of file
+}
diff --git a/app/module/master_statuses/service/master_statuses.service.go b/app/module/master_statuses/service/master_statuses.service.go
index 86f3b85..b54108d 100644
--- a/app/module/master_statuses/service/master_statuses.service.go
+++ b/app/module/master_statuses/service/master_statuses.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/master_statuses/mapper"
- "go-humas-be/app/module/master_statuses/repository"
- "go-humas-be/app/module/master_statuses/request"
- "go-humas-be/app/module/master_statuses/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/master_statuses/mapper"
+ "web-medols-be/app/module/master_statuses/repository"
+ "web-medols-be/app/module/master_statuses/request"
+ "web-medols-be/app/module/master_statuses/response"
+ "web-medols-be/utils/paginator"
)
// MasterStatusesService
diff --git a/app/module/provinces/controller/controller.go b/app/module/provinces/controller/controller.go
index 8882051..67342d2 100644
--- a/app/module/provinces/controller/controller.go
+++ b/app/module/provinces/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/provinces/service"
+import "web-medols-be/app/module/provinces/service"
type Controller struct {
Provinces ProvincesController
@@ -10,4 +10,4 @@ func NewController(ProvincesService service.ProvincesService) *Controller {
return &Controller{
Provinces: NewProvincesController(ProvincesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/provinces/controller/provinces.controller.go b/app/module/provinces/controller/provinces.controller.go
index a117fb4..c0cf771 100644
--- a/app/module/provinces/controller/provinces.controller.go
+++ b/app/module/provinces/controller/provinces.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/provinces/request"
- "go-humas-be/app/module/provinces/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/provinces/request"
+ "web-medols-be/app/module/provinces/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type provincesController struct {
diff --git a/app/module/provinces/mapper/provinces.mapper.go b/app/module/provinces/mapper/provinces.mapper.go
index c2eab1a..1a5d51e 100644
--- a/app/module/provinces/mapper/provinces.mapper.go
+++ b/app/module/provinces/mapper/provinces.mapper.go
@@ -1,19 +1,19 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/provinces/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/provinces/response"
)
func ProvincesResponseMapper(provincesReq *entity.Provinces) (provincesRes *res.ProvincesResponse) {
if provincesReq != nil {
provincesRes = &res.ProvincesResponse{
- ID: provincesReq.ID,
- ProvName: provincesReq.ProvName,
- LocationId: provincesReq.LocationId,
- Status: provincesReq.Status,
- Timezone: provincesReq.Timezone,
+ ID: provincesReq.ID,
+ ProvName: provincesReq.ProvName,
+ LocationId: provincesReq.LocationId,
+ Status: provincesReq.Status,
+ Timezone: provincesReq.Timezone,
}
}
return provincesRes
-}
\ No newline at end of file
+}
diff --git a/app/module/provinces/provinces.module.go b/app/module/provinces/provinces.module.go
index 8c2bd8b..3f1fa40 100644
--- a/app/module/provinces/provinces.module.go
+++ b/app/module/provinces/provinces.module.go
@@ -2,10 +2,10 @@ package provinces
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/provinces/controller"
- "go-humas-be/app/module/provinces/repository"
- "go-humas-be/app/module/provinces/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/provinces/controller"
+ "web-medols-be/app/module/provinces/repository"
+ "web-medols-be/app/module/provinces/service"
)
// struct of ProvincesRouter
diff --git a/app/module/provinces/repository/provinces.repository.go b/app/module/provinces/repository/provinces.repository.go
index 69a02a9..e7b8194 100644
--- a/app/module/provinces/repository/provinces.repository.go
+++ b/app/module/provinces/repository/provinces.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/provinces/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/provinces/request"
+ "web-medols-be/utils/paginator"
)
type provincesRepository struct {
@@ -66,4 +66,4 @@ func (_i *provincesRepository) Update(id uint, provinces *entity.Provinces) (err
func (_i *provincesRepository) Delete(id uint) error {
return _i.DB.DB.Delete(&entity.Provinces{}, id).Error
-}
\ No newline at end of file
+}
diff --git a/app/module/provinces/request/provinces.request.go b/app/module/provinces/request/provinces.request.go
index 25f3648..a57080e 100644
--- a/app/module/provinces/request/provinces.request.go
+++ b/app/module/provinces/request/provinces.request.go
@@ -1,8 +1,8 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type ProvincesGeneric interface {
@@ -10,44 +10,43 @@ type ProvincesGeneric interface {
}
type ProvincesQueryRequest struct {
- ProvName string `json:"prov_name" validate:"required"`
- LocationId int `json:"location_id" validate:"required"`
- Status int `json:"status" validate:"required"`
- Timezone string `json:"timezone" validate:"required"`
- Pagination *paginator.Pagination `json:"pagination"`
+ ProvName string `json:"prov_name" validate:"required"`
+ LocationId int `json:"location_id" validate:"required"`
+ Status int `json:"status" validate:"required"`
+ Timezone string `json:"timezone" validate:"required"`
+ Pagination *paginator.Pagination `json:"pagination"`
}
-
type ProvincesCreateRequest struct {
- ProvName string `json:"prov_name" validate:"required"`
- LocationId int `json:"location_id" validate:"required"`
- Status int `json:"status" validate:"required"`
- Timezone string `json:"timezone" validate:"required"`
+ ProvName string `json:"prov_name" validate:"required"`
+ LocationId int `json:"location_id" validate:"required"`
+ Status int `json:"status" validate:"required"`
+ Timezone string `json:"timezone" validate:"required"`
}
func (req ProvincesCreateRequest) ToEntity() *entity.Provinces {
return &entity.Provinces{
- ProvName: req.ProvName,
- LocationId: req.LocationId,
- Status: req.Status,
- Timezone: req.Timezone,
+ ProvName: req.ProvName,
+ LocationId: req.LocationId,
+ Status: req.Status,
+ Timezone: req.Timezone,
}
}
type ProvincesUpdateRequest struct {
- ID uint `json:"id" validate:"required"`
- ProvName string `json:"prov_name" validate:"required"`
- LocationId int `json:"location_id" validate:"required"`
- Status int `json:"status" validate:"required"`
- Timezone string `json:"timezone" validate:"required"`
+ ID uint `json:"id" validate:"required"`
+ ProvName string `json:"prov_name" validate:"required"`
+ LocationId int `json:"location_id" validate:"required"`
+ Status int `json:"status" validate:"required"`
+ Timezone string `json:"timezone" validate:"required"`
}
func (req ProvincesUpdateRequest) ToEntity() *entity.Provinces {
return &entity.Provinces{
- ID: req.ID,
- ProvName: req.ProvName,
- LocationId: req.LocationId,
- Status: req.Status,
- Timezone: req.Timezone,
+ ID: req.ID,
+ ProvName: req.ProvName,
+ LocationId: req.LocationId,
+ Status: req.Status,
+ Timezone: req.Timezone,
}
-}
\ No newline at end of file
+}
diff --git a/app/module/provinces/service/provinces.service.go b/app/module/provinces/service/provinces.service.go
index 8231ed4..274098f 100644
--- a/app/module/provinces/service/provinces.service.go
+++ b/app/module/provinces/service/provinces.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/provinces/mapper"
- "go-humas-be/app/module/provinces/repository"
- "go-humas-be/app/module/provinces/request"
- "go-humas-be/app/module/provinces/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/provinces/mapper"
+ "web-medols-be/app/module/provinces/repository"
+ "web-medols-be/app/module/provinces/request"
+ "web-medols-be/app/module/provinces/response"
+ "web-medols-be/utils/paginator"
)
// ProvincesService
diff --git a/app/module/subscription/controller/controller.go b/app/module/subscription/controller/controller.go
index 6fcdf0d..36dde87 100644
--- a/app/module/subscription/controller/controller.go
+++ b/app/module/subscription/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/subscription/service"
+ "web-medols-be/app/module/subscription/service"
)
type Controller struct {
diff --git a/app/module/subscription/controller/subscription.controller.go b/app/module/subscription/controller/subscription.controller.go
index ef9b6dd..a7e71a8 100644
--- a/app/module/subscription/controller/subscription.controller.go
+++ b/app/module/subscription/controller/subscription.controller.go
@@ -3,12 +3,12 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/subscription/request"
- "go-humas-be/app/module/subscription/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/module/subscription/request"
+ "web-medols-be/app/module/subscription/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type subscriptionController struct {
diff --git a/app/module/subscription/mapper/subscription.mapper.go b/app/module/subscription/mapper/subscription.mapper.go
index 828017b..f8f9c11 100644
--- a/app/module/subscription/mapper/subscription.mapper.go
+++ b/app/module/subscription/mapper/subscription.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/subscription/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/subscription/response"
)
func SubscriptionResponseMapper(subscriptionReq *entity.Subscription) (subscriptionRes *res.SubscriptionResponse) {
diff --git a/app/module/subscription/repository/subscription.repository.go b/app/module/subscription/repository/subscription.repository.go
index 3c3b9fb..af84d9b 100644
--- a/app/module/subscription/repository/subscription.repository.go
+++ b/app/module/subscription/repository/subscription.repository.go
@@ -3,11 +3,11 @@ package repository
import (
"fmt"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/subscription/request"
- "go-humas-be/utils/paginator"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/subscription/request"
+ "web-medols-be/utils/paginator"
)
type subscriptionRepository struct {
diff --git a/app/module/subscription/request/subscription.request.go b/app/module/subscription/request/subscription.request.go
index 8cac0d9..d8e7869 100644
--- a/app/module/subscription/request/subscription.request.go
+++ b/app/module/subscription/request/subscription.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type SubscriptionGeneric interface {
diff --git a/app/module/subscription/service/subscription.service.go b/app/module/subscription/service/subscription.service.go
index 44ae628..f8e0ddf 100644
--- a/app/module/subscription/service/subscription.service.go
+++ b/app/module/subscription/service/subscription.service.go
@@ -2,13 +2,13 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/subscription/mapper"
- "go-humas-be/app/module/subscription/repository"
- "go-humas-be/app/module/subscription/request"
- "go-humas-be/app/module/subscription/response"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/subscription/mapper"
+ "web-medols-be/app/module/subscription/repository"
+ "web-medols-be/app/module/subscription/request"
+ "web-medols-be/app/module/subscription/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
)
// SubscriptionService
diff --git a/app/module/subscription/subscription.module.go b/app/module/subscription/subscription.module.go
index 2c701d6..09aa2a8 100644
--- a/app/module/subscription/subscription.module.go
+++ b/app/module/subscription/subscription.module.go
@@ -2,10 +2,10 @@ package subscription
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/subscription/controller"
- "go-humas-be/app/module/subscription/repository"
- "go-humas-be/app/module/subscription/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/subscription/controller"
+ "web-medols-be/app/module/subscription/repository"
+ "web-medols-be/app/module/subscription/service"
)
// struct of SubscriptionRouter
diff --git a/app/module/user_levels/controller/controller.go b/app/module/user_levels/controller/controller.go
index d435da8..ea2e278 100644
--- a/app/module/user_levels/controller/controller.go
+++ b/app/module/user_levels/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/user_levels/service"
+import "web-medols-be/app/module/user_levels/service"
type Controller struct {
UserLevels UserLevelsController
@@ -10,4 +10,4 @@ func NewController(UserLevelsService service.UserLevelsService) *Controller {
return &Controller{
UserLevels: NewUserLevelsController(UserLevelsService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/user_levels/controller/user_levels.controller.go b/app/module/user_levels/controller/user_levels.controller.go
index 59ccafe..7c125ad 100644
--- a/app/module/user_levels/controller/user_levels.controller.go
+++ b/app/module/user_levels/controller/user_levels.controller.go
@@ -2,14 +2,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_levels/request"
- "go-humas-be/app/module/user_levels/service"
- "go-humas-be/utils/paginator"
"strconv"
"strings"
+ "web-medols-be/app/module/user_levels/request"
+ "web-medols-be/app/module/user_levels/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type userLevelsController struct {
diff --git a/app/module/user_levels/mapper/user_levels.mapper.go b/app/module/user_levels/mapper/user_levels.mapper.go
index 6ed7839..27a00b3 100644
--- a/app/module/user_levels/mapper/user_levels.mapper.go
+++ b/app/module/user_levels/mapper/user_levels.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/user_levels/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/user_levels/response"
)
func UserLevelsResponseMapper(userLevelsReq *entity.UserLevels) (userLevelsRes *res.UserLevelsResponse) {
diff --git a/app/module/user_levels/repository/user_levels.repository.go b/app/module/user_levels/repository/user_levels.repository.go
index ff86cf4..0965848 100644
--- a/app/module/user_levels/repository/user_levels.repository.go
+++ b/app/module/user_levels/repository/user_levels.repository.go
@@ -2,12 +2,12 @@ package repository
import (
"fmt"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/user_levels/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/user_levels/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type userLevelsRepository struct {
diff --git a/app/module/user_levels/request/user_levels.request.go b/app/module/user_levels/request/user_levels.request.go
index 4c715c0..8d06599 100644
--- a/app/module/user_levels/request/user_levels.request.go
+++ b/app/module/user_levels/request/user_levels.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type UserLevelsGeneric interface {
diff --git a/app/module/user_levels/service/user_levels.service.go b/app/module/user_levels/service/user_levels.service.go
index b370f9e..bfd9f85 100644
--- a/app/module/user_levels/service/user_levels.service.go
+++ b/app/module/user_levels/service/user_levels.service.go
@@ -2,12 +2,12 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/user_levels/mapper"
- "go-humas-be/app/module/user_levels/repository"
- "go-humas-be/app/module/user_levels/request"
- "go-humas-be/app/module/user_levels/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/user_levels/mapper"
+ "web-medols-be/app/module/user_levels/repository"
+ "web-medols-be/app/module/user_levels/request"
+ "web-medols-be/app/module/user_levels/response"
+ "web-medols-be/utils/paginator"
)
// UserLevelsService
diff --git a/app/module/user_levels/user_levels.module.go b/app/module/user_levels/user_levels.module.go
index aad51a3..c408f81 100644
--- a/app/module/user_levels/user_levels.module.go
+++ b/app/module/user_levels/user_levels.module.go
@@ -2,10 +2,10 @@ package user_levels
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_levels/controller"
- "go-humas-be/app/module/user_levels/repository"
- "go-humas-be/app/module/user_levels/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/user_levels/controller"
+ "web-medols-be/app/module/user_levels/repository"
+ "web-medols-be/app/module/user_levels/service"
)
// struct of UserLevelsRouter
diff --git a/app/module/user_role_accesses/controller/controller.go b/app/module/user_role_accesses/controller/controller.go
index 24e5f6b..2761762 100644
--- a/app/module/user_role_accesses/controller/controller.go
+++ b/app/module/user_role_accesses/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/user_role_accesses/service"
+import "web-medols-be/app/module/user_role_accesses/service"
type Controller struct {
UserRoleAccesses UserRoleAccessesController
@@ -10,4 +10,4 @@ func NewController(UserRoleAccessesService service.UserRoleAccessesService) *Con
return &Controller{
UserRoleAccesses: NewUserRoleAccessesController(UserRoleAccessesService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/user_role_accesses/controller/user_role_accesses.controller.go b/app/module/user_role_accesses/controller/user_role_accesses.controller.go
index 4ac26e4..d6be2a6 100644
--- a/app/module/user_role_accesses/controller/user_role_accesses.controller.go
+++ b/app/module/user_role_accesses/controller/user_role_accesses.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_role_accesses/request"
- "go-humas-be/app/module/user_role_accesses/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/user_role_accesses/request"
+ "web-medols-be/app/module/user_role_accesses/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type userRoleAccessesController struct {
diff --git a/app/module/user_role_accesses/mapper/user_role_accesses.mapper.go b/app/module/user_role_accesses/mapper/user_role_accesses.mapper.go
index df81c3e..de83710 100644
--- a/app/module/user_role_accesses/mapper/user_role_accesses.mapper.go
+++ b/app/module/user_role_accesses/mapper/user_role_accesses.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/user_role_accesses/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/user_role_accesses/response"
)
func UserRoleAccessesResponseMapper(userRoleAccessesReq *entity.UserRoleAccesses) (userRoleAccessesRes *res.UserRoleAccessesResponse) {
diff --git a/app/module/user_role_accesses/repository/user_role_accesses.repository.go b/app/module/user_role_accesses/repository/user_role_accesses.repository.go
index 4c8a038..7f3b6b8 100644
--- a/app/module/user_role_accesses/repository/user_role_accesses.repository.go
+++ b/app/module/user_role_accesses/repository/user_role_accesses.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/user_role_accesses/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/user_role_accesses/request"
+ "web-medols-be/utils/paginator"
)
type userRoleAccessesRepository struct {
diff --git a/app/module/user_role_accesses/request/user_role_accesses.request.go b/app/module/user_role_accesses/request/user_role_accesses.request.go
index 4489a2d..46d8f52 100644
--- a/app/module/user_role_accesses/request/user_role_accesses.request.go
+++ b/app/module/user_role_accesses/request/user_role_accesses.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type UserRoleAccessesGeneric interface {
diff --git a/app/module/user_role_accesses/service/user_role_accesses.service.go b/app/module/user_role_accesses/service/user_role_accesses.service.go
index c103c3f..379f7ff 100644
--- a/app/module/user_role_accesses/service/user_role_accesses.service.go
+++ b/app/module/user_role_accesses/service/user_role_accesses.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/user_role_accesses/mapper"
- "go-humas-be/app/module/user_role_accesses/repository"
- "go-humas-be/app/module/user_role_accesses/request"
- "go-humas-be/app/module/user_role_accesses/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/user_role_accesses/mapper"
+ "web-medols-be/app/module/user_role_accesses/repository"
+ "web-medols-be/app/module/user_role_accesses/request"
+ "web-medols-be/app/module/user_role_accesses/response"
+ "web-medols-be/utils/paginator"
)
// UserRoleAccessesService
diff --git a/app/module/user_role_accesses/user_role_accesses.module.go b/app/module/user_role_accesses/user_role_accesses.module.go
index 62eea8f..e473866 100644
--- a/app/module/user_role_accesses/user_role_accesses.module.go
+++ b/app/module/user_role_accesses/user_role_accesses.module.go
@@ -2,10 +2,10 @@ package user_role_accesses
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_role_accesses/controller"
- "go-humas-be/app/module/user_role_accesses/repository"
- "go-humas-be/app/module/user_role_accesses/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/user_role_accesses/controller"
+ "web-medols-be/app/module/user_role_accesses/repository"
+ "web-medols-be/app/module/user_role_accesses/service"
)
// struct of UserRoleAccessesRouter
@@ -50,4 +50,4 @@ func (_i *UserRoleAccessesRouter) RegisterUserRoleAccessesRoutes() {
router.Put("/:id", userRoleAccessesController.Update)
router.Delete("/:id", userRoleAccessesController.Delete)
})
-}
\ No newline at end of file
+}
diff --git a/app/module/user_role_level_details/controller/controller.go b/app/module/user_role_level_details/controller/controller.go
index b9ad9c2..4bcc65e 100644
--- a/app/module/user_role_level_details/controller/controller.go
+++ b/app/module/user_role_level_details/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/user_role_level_details/service"
+import "web-medols-be/app/module/user_role_level_details/service"
type Controller struct {
UserRoleLevelDetails UserRoleLevelDetailsController
diff --git a/app/module/user_role_level_details/controller/user_role_level_details.controller.go b/app/module/user_role_level_details/controller/user_role_level_details.controller.go
index a1073a8..5454e8a 100644
--- a/app/module/user_role_level_details/controller/user_role_level_details.controller.go
+++ b/app/module/user_role_level_details/controller/user_role_level_details.controller.go
@@ -2,13 +2,13 @@ package controller
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_role_level_details/request"
- "go-humas-be/app/module/user_role_level_details/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/module/user_role_level_details/request"
+ "web-medols-be/app/module/user_role_level_details/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type userRoleLevelDetailsController struct {
diff --git a/app/module/user_role_level_details/mapper/user_role_level_details.mapper.go b/app/module/user_role_level_details/mapper/user_role_level_details.mapper.go
index c5b3bef..9ade682 100644
--- a/app/module/user_role_level_details/mapper/user_role_level_details.mapper.go
+++ b/app/module/user_role_level_details/mapper/user_role_level_details.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/user_role_level_details/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/user_role_level_details/response"
)
func UserRoleLevelDetailsResponseMapper(userRoleLevelDetailsReq *entity.UserRoleLevelDetails) (userRoleLevelDetailsRes *res.UserRoleLevelDetailsResponse) {
diff --git a/app/module/user_role_level_details/repository/user_role_level_details.repository.go b/app/module/user_role_level_details/repository/user_role_level_details.repository.go
index 0d7c684..d9826dd 100644
--- a/app/module/user_role_level_details/repository/user_role_level_details.repository.go
+++ b/app/module/user_role_level_details/repository/user_role_level_details.repository.go
@@ -1,10 +1,10 @@
package repository
import (
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/user_role_level_details/request"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/user_role_level_details/request"
+ "web-medols-be/utils/paginator"
)
type userRoleLevelDetailsRepository struct {
diff --git a/app/module/user_role_level_details/request/user_role_level_details.request.go b/app/module/user_role_level_details/request/user_role_level_details.request.go
index 6345742..05c80f3 100644
--- a/app/module/user_role_level_details/request/user_role_level_details.request.go
+++ b/app/module/user_role_level_details/request/user_role_level_details.request.go
@@ -1,9 +1,9 @@
package request
import (
- "go-humas-be/app/database/entity"
- "go-humas-be/utils/paginator"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/utils/paginator"
)
type UserRoleLevelDetailsGeneric interface {
diff --git a/app/module/user_role_level_details/service/user_role_level_details.service.go b/app/module/user_role_level_details/service/user_role_level_details.service.go
index 786cb8c..9929967 100644
--- a/app/module/user_role_level_details/service/user_role_level_details.service.go
+++ b/app/module/user_role_level_details/service/user_role_level_details.service.go
@@ -2,11 +2,11 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/user_role_level_details/mapper"
- "go-humas-be/app/module/user_role_level_details/repository"
- "go-humas-be/app/module/user_role_level_details/request"
- "go-humas-be/app/module/user_role_level_details/response"
- "go-humas-be/utils/paginator"
+ "web-medols-be/app/module/user_role_level_details/mapper"
+ "web-medols-be/app/module/user_role_level_details/repository"
+ "web-medols-be/app/module/user_role_level_details/request"
+ "web-medols-be/app/module/user_role_level_details/response"
+ "web-medols-be/utils/paginator"
)
// UserRoleLevelDetailsService
diff --git a/app/module/user_role_level_details/user_role_level_details.module.go b/app/module/user_role_level_details/user_role_level_details.module.go
index 9e0c2db..b37d765 100644
--- a/app/module/user_role_level_details/user_role_level_details.module.go
+++ b/app/module/user_role_level_details/user_role_level_details.module.go
@@ -2,10 +2,10 @@ package user_role_level_details
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_role_level_details/controller"
- "go-humas-be/app/module/user_role_level_details/repository"
- "go-humas-be/app/module/user_role_level_details/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/user_role_level_details/controller"
+ "web-medols-be/app/module/user_role_level_details/repository"
+ "web-medols-be/app/module/user_role_level_details/service"
)
// struct of UserRoleLevelDetailsRouter
diff --git a/app/module/user_roles/controller/controller.go b/app/module/user_roles/controller/controller.go
index 6ac8af5..41a3fc8 100644
--- a/app/module/user_roles/controller/controller.go
+++ b/app/module/user_roles/controller/controller.go
@@ -2,7 +2,7 @@ package controller
import (
"github.com/rs/zerolog"
- "go-humas-be/app/module/user_roles/service"
+ "web-medols-be/app/module/user_roles/service"
)
type Controller struct {
diff --git a/app/module/user_roles/controller/user_roles.controller.go b/app/module/user_roles/controller/user_roles.controller.go
index 66e781a..d3a0724 100644
--- a/app/module/user_roles/controller/user_roles.controller.go
+++ b/app/module/user_roles/controller/user_roles.controller.go
@@ -3,12 +3,12 @@ package controller
import (
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog"
- "go-humas-be/app/module/user_roles/request"
- "go-humas-be/app/module/user_roles/service"
- "go-humas-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
"strconv"
+ "web-medols-be/app/module/user_roles/request"
+ "web-medols-be/app/module/user_roles/service"
+ "web-medols-be/utils/paginator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type userRolesController struct {
diff --git a/app/module/user_roles/mapper/user_roles.mapper.go b/app/module/user_roles/mapper/user_roles.mapper.go
index 9e02e35..990e68e 100644
--- a/app/module/user_roles/mapper/user_roles.mapper.go
+++ b/app/module/user_roles/mapper/user_roles.mapper.go
@@ -1,8 +1,8 @@
package mapper
import (
- "go-humas-be/app/database/entity"
- res "go-humas-be/app/module/user_roles/response"
+ "web-medols-be/app/database/entity"
+ res "web-medols-be/app/module/user_roles/response"
)
func UserRolesResponseMapper(userRolesReq *entity.UserRoles) (userRolesRes *res.UserRolesResponse) {
diff --git a/app/module/user_roles/repository/user_roles.repository.go b/app/module/user_roles/repository/user_roles.repository.go
index 148de42..e8424ba 100644
--- a/app/module/user_roles/repository/user_roles.repository.go
+++ b/app/module/user_roles/repository/user_roles.repository.go
@@ -3,12 +3,12 @@ package repository
import (
"fmt"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/module/user_roles/request"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/module/user_roles/request"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
type userRolesRepository struct {
diff --git a/app/module/user_roles/request/user_roles.request.go b/app/module/user_roles/request/user_roles.request.go
index b1b8025..8e498f5 100644
--- a/app/module/user_roles/request/user_roles.request.go
+++ b/app/module/user_roles/request/user_roles.request.go
@@ -1,11 +1,11 @@
package request
import (
- "go-humas-be/app/database/entity"
- userRoleAccessReq "go-humas-be/app/module/user_role_accesses/request"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity"
+ userRoleAccessReq "web-medols-be/app/module/user_role_accesses/request"
+ "web-medols-be/utils/paginator"
)
type UserRolesGeneric interface {
diff --git a/app/module/user_roles/service/user_roles.service.go b/app/module/user_roles/service/user_roles.service.go
index dff12f2..12ac9b8 100644
--- a/app/module/user_roles/service/user_roles.service.go
+++ b/app/module/user_roles/service/user_roles.service.go
@@ -2,17 +2,17 @@ package service
import (
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- userLevelsRepository "go-humas-be/app/module/user_levels/repository"
- userRoleAccessRepository "go-humas-be/app/module/user_role_accesses/repository"
- userRoleLevelDetailsRepository "go-humas-be/app/module/user_role_level_details/repository"
- "go-humas-be/app/module/user_roles/mapper"
- "go-humas-be/app/module/user_roles/repository"
- "go-humas-be/app/module/user_roles/request"
- "go-humas-be/app/module/user_roles/response"
- usersRepository "go-humas-be/app/module/users/repository"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
+ "web-medols-be/app/database/entity"
+ userLevelsRepository "web-medols-be/app/module/user_levels/repository"
+ userRoleAccessRepository "web-medols-be/app/module/user_role_accesses/repository"
+ userRoleLevelDetailsRepository "web-medols-be/app/module/user_role_level_details/repository"
+ "web-medols-be/app/module/user_roles/mapper"
+ "web-medols-be/app/module/user_roles/repository"
+ "web-medols-be/app/module/user_roles/request"
+ "web-medols-be/app/module/user_roles/response"
+ usersRepository "web-medols-be/app/module/users/repository"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// UserRolesService
diff --git a/app/module/user_roles/user_roles.module.go b/app/module/user_roles/user_roles.module.go
index 674c6e3..1f9d86d 100644
--- a/app/module/user_roles/user_roles.module.go
+++ b/app/module/user_roles/user_roles.module.go
@@ -2,10 +2,10 @@ package user_roles
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/user_roles/controller"
- "go-humas-be/app/module/user_roles/repository"
- "go-humas-be/app/module/user_roles/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/user_roles/controller"
+ "web-medols-be/app/module/user_roles/repository"
+ "web-medols-be/app/module/user_roles/service"
)
// struct of UserRolesRouter
diff --git a/app/module/users/controller/controller.go b/app/module/users/controller/controller.go
index 5def7a5..8768992 100644
--- a/app/module/users/controller/controller.go
+++ b/app/module/users/controller/controller.go
@@ -1,6 +1,6 @@
package controller
-import "go-humas-be/app/module/users/service"
+import "web-medols-be/app/module/users/service"
type Controller struct {
Users UsersController
@@ -10,4 +10,4 @@ func NewController(UsersService service.UsersService) *Controller {
return &Controller{
Users: NewUsersController(UsersService),
}
-}
\ No newline at end of file
+}
diff --git a/app/module/users/controller/users.controller.go b/app/module/users/controller/users.controller.go
index cb63983..3856df6 100644
--- a/app/module/users/controller/users.controller.go
+++ b/app/module/users/controller/users.controller.go
@@ -3,13 +3,14 @@ package controller
import (
"github.com/gofiber/fiber/v2"
_ "github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/users/request"
- "go-humas-be/app/module/users/service"
- "go-humas-be/utils/paginator"
"strconv"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/users/request"
+ "web-medols-be/app/module/users/service"
+ "web-medols-be/utils/paginator"
- utilRes "go-humas-be/utils/response"
- utilVal "go-humas-be/utils/validator"
+ utilRes "web-medols-be/utils/response"
+ utilVal "web-medols-be/utils/validator"
)
type usersController struct {
@@ -76,7 +77,10 @@ func (_i *usersController) All(c *fiber.Ctx) error {
req := reqContext.ToParamRequest()
req.Pagination = paginate
- usersData, paging, err := _i.usersService.All(req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ usersData, paging, err := _i.usersService.All(clientId, req)
if err != nil {
return err
}
@@ -106,7 +110,10 @@ func (_i *usersController) Show(c *fiber.Ctx) error {
return err
}
- usersData, err := _i.usersService.Show(uint(id))
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ usersData, err := _i.usersService.Show(clientId, uint(id))
if err != nil {
return err
}
@@ -132,7 +139,10 @@ func (_i *usersController) Show(c *fiber.Ctx) error {
func (_i *usersController) ShowByUsername(c *fiber.Ctx) error {
username := c.Params("username")
- usersData, err := _i.usersService.ShowByUsername(username)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ usersData, err := _i.usersService.ShowByUsername(clientId, username)
if err != nil {
return err
}
@@ -157,7 +167,11 @@ func (_i *usersController) ShowByUsername(c *fiber.Ctx) error {
// @Router /users/info [get]
func (_i *usersController) ShowInfo(c *fiber.Ctx) error {
authToken := c.Get("Authorization")
- dataResult, err := _i.usersService.ShowUserInfo(authToken)
+
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.usersService.ShowUserInfo(clientId, authToken)
if err != nil {
return err
}
@@ -190,7 +204,10 @@ func (_i *usersController) Save(c *fiber.Ctx) error {
authToken := c.Get("Authorization")
- dataResult, err := _i.usersService.Save(*req, authToken)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ dataResult, err := _i.usersService.Save(clientId, *req, authToken)
if err != nil {
return err
}
@@ -226,7 +243,10 @@ func (_i *usersController) Update(c *fiber.Ctx) error {
return err
}
- err = _i.usersService.Update(uint(id), *req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.usersService.Update(clientId, uint(id), *req)
if err != nil {
return err
}
@@ -323,7 +343,10 @@ func (_i *usersController) Delete(c *fiber.Ctx) error {
return err
}
- err = _i.usersService.Delete(uint(id))
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err = _i.usersService.Delete(clientId, uint(id))
if err != nil {
return err
}
@@ -355,7 +378,10 @@ func (_i *usersController) SavePassword(c *fiber.Ctx) error {
authToken := c.Get("Authorization")
- err := _i.usersService.SavePassword(*req, authToken)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err := _i.usersService.SavePassword(clientId, *req, authToken)
if err != nil {
return err
}
@@ -413,7 +439,10 @@ func (_i *usersController) ForgotPassword(c *fiber.Ctx) error {
return err
}
- err := _i.usersService.ForgotPassword(*req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ err := _i.usersService.ForgotPassword(clientId, *req)
if err != nil {
return err
}
@@ -500,7 +529,10 @@ func (_i *usersController) EmailValidation(c *fiber.Ctx) error {
return err
}
- messageResponse, err := _i.usersService.EmailValidationPreLogin(*req)
+ // Get ClientId from context
+ clientId := middleware.GetClientID(c)
+
+ messageResponse, err := _i.usersService.EmailValidationPreLogin(clientId, *req)
if err != nil {
return err
}
diff --git a/app/module/users/mapper/users.mapper.go b/app/module/users/mapper/users.mapper.go
index f6878ee..d226c71 100644
--- a/app/module/users/mapper/users.mapper.go
+++ b/app/module/users/mapper/users.mapper.go
@@ -1,9 +1,9 @@
package mapper
import (
- "go-humas-be/app/database/entity/users"
- userLevelsRepository "go-humas-be/app/module/user_levels/repository"
- res "go-humas-be/app/module/users/response"
+ "web-medols-be/app/database/entity/users"
+ userLevelsRepository "web-medols-be/app/module/user_levels/repository"
+ res "web-medols-be/app/module/users/response"
)
func UsersResponseMapper(usersReq *users.Users, userLevelsRepo userLevelsRepository.UserLevelsRepository) (usersRes *res.UsersResponse) {
diff --git a/app/module/users/repository/users.repository.go b/app/module/users/repository/users.repository.go
index d453854..d03a615 100644
--- a/app/module/users/repository/users.repository.go
+++ b/app/module/users/repository/users.repository.go
@@ -3,13 +3,14 @@ package repository
import (
"encoding/json"
"fmt"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/database/entity/users"
- "go-humas-be/app/module/users/request"
- "go-humas-be/utils/paginator"
"strings"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/database/entity/users"
+ "web-medols-be/app/module/users/request"
+ "web-medols-be/utils/paginator"
)
type usersRepository struct {
@@ -19,13 +20,13 @@ type usersRepository struct {
// UsersRepository define interface of IUsersRepository
type UsersRepository interface {
- GetAll(req request.UsersQueryRequest) (userss []*users.Users, paging paginator.Pagination, err error)
- FindOne(id uint) (users *users.Users, err error)
+ GetAll(clientId *uuid.UUID, req request.UsersQueryRequest) (userss []*users.Users, paging paginator.Pagination, err error)
+ FindOne(clientId *uuid.UUID, id uint) (users *users.Users, err error)
FindByKeycloakId(keycloakId string) (users *users.Users, err error)
- FindByUsername(username string) (users *users.Users, err error)
+ FindByUsername(clientId *uuid.UUID, username string) (users *users.Users, err error)
Create(users *users.Users) (userReturn *users.Users, err error)
- Update(id uint, users *users.Users) (err error)
- Delete(id uint) (err error)
+ Update(clientId *uuid.UUID, id uint, users *users.Users) (err error)
+ Delete(clientId *uuid.UUID, id uint) (err error)
CreateForgotPassword(forgotPasswords *entity.ForgotPasswords) (err error)
UpdateForgotPassword(id uint, forgotPasswords *entity.ForgotPasswords) (err error)
FindForgotPassword(keycloakId string, code string) (forgotPasswords *entity.ForgotPasswords, err error)
@@ -42,10 +43,16 @@ func NewUsersRepository(db *database.Database, log zerolog.Logger) UsersReposito
}
// implement interface of IUsersRepository
-func (_i *usersRepository) GetAll(req request.UsersQueryRequest) (userss []*users.Users, paging paginator.Pagination, err error) {
+func (_i *usersRepository) GetAll(clientId *uuid.UUID, req request.UsersQueryRequest) (userss []*users.Users, paging paginator.Pagination, err error) {
var count int64
query := _i.DB.DB.Model(&users.Users{})
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
query = query.Where("is_active = ?", true)
if req.Username != nil && *req.Username != "" {
@@ -109,8 +116,15 @@ func (_i *usersRepository) GetAll(req request.UsersQueryRequest) (userss []*user
return
}
-func (_i *usersRepository) FindOne(id uint) (users *users.Users, err error) {
- if err := _i.DB.DB.Preload("UserLevel").First(&users, id).Error; err != nil {
+func (_i *usersRepository) FindOne(clientId *uuid.UUID, id uint) (users *users.Users, err error) {
+ query := _i.DB.DB.Where("id = ?", id)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.Preload("UserLevel").First(&users).Error; err != nil {
return nil, err
}
@@ -118,15 +132,23 @@ func (_i *usersRepository) FindOne(id uint) (users *users.Users, err error) {
}
func (_i *usersRepository) FindByKeycloakId(keycloakId string) (users *users.Users, err error) {
- if err := _i.DB.DB.Where("keycloak_id = ?", keycloakId).Preload("UserLevel").First(&users).Error; err != nil {
+ query := _i.DB.DB.Where("keycloak_id = ?", keycloakId)
+ if err := query.Preload("UserLevel").First(&users).Error; err != nil {
return nil, err
}
return users, nil
}
-func (_i *usersRepository) FindByUsername(username string) (users *users.Users, err error) {
- if err := _i.DB.DB.Where("username = ?", username).Preload("UserLevel").First(&users).Error; err != nil {
+func (_i *usersRepository) FindByUsername(clientId *uuid.UUID, username string) (users *users.Users, err error) {
+ query := _i.DB.DB.Where("username = ?", username)
+
+ // Add ClientId filter
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+
+ if err := query.Preload("UserLevel").First(&users).Error; err != nil {
return nil, err
}
@@ -138,20 +160,26 @@ func (_i *usersRepository) Create(users *users.Users) (userReturn *users.Users,
return users, result.Error
}
-func (_i *usersRepository) Update(id uint, userReturn *users.Users) (err error) {
+func (_i *usersRepository) Update(clientId *uuid.UUID, id uint, userReturn *users.Users) (err error) {
userReturnMap, err := StructToMap(userReturn)
delete(userReturnMap, "user_levels")
_i.Log.Info().Interface("Update", userReturnMap).Msg("")
if err != nil {
return err
}
- return _i.DB.DB.Model(&users.Users{}).
- Where(&users.Users{ID: id}).
- Updates(userReturnMap).Error
+ query := _i.DB.DB.Model(&users.Users{}).Where(&users.Users{ID: id})
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Updates(userReturnMap).Error
}
-func (_i *usersRepository) Delete(id uint) error {
- return _i.DB.DB.Delete(&users.Users{}, id).Error
+func (_i *usersRepository) Delete(clientId *uuid.UUID, id uint) error {
+ query := _i.DB.DB.Model(&users.Users{}).Where("id = ?", id)
+ if clientId != nil {
+ query = query.Where("client_id = ?", clientId)
+ }
+ return query.Delete(&users.Users{}).Error
}
func (_i *usersRepository) CreateForgotPassword(forgotPasswords *entity.ForgotPasswords) (err error) {
diff --git a/app/module/users/request/users.request.go b/app/module/users/request/users.request.go
index 02ef8f4..66228f1 100644
--- a/app/module/users/request/users.request.go
+++ b/app/module/users/request/users.request.go
@@ -1,10 +1,10 @@
package request
import (
- "go-humas-be/app/database/entity/users"
- "go-humas-be/utils/paginator"
"strconv"
"time"
+ "web-medols-be/app/database/entity/users"
+ "web-medols-be/utils/paginator"
)
type UsersGeneric interface {
diff --git a/app/module/users/service/users.service.go b/app/module/users/service/users.service.go
index d2d296c..d99a3df 100644
--- a/app/module/users/service/users.service.go
+++ b/app/module/users/service/users.service.go
@@ -6,19 +6,20 @@ import (
"encoding/json"
"fmt"
"github.com/Nerzal/gocloak/v13"
+ "github.com/google/uuid"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity"
- "go-humas-be/app/database/entity/users"
- userLevelsRepository "go-humas-be/app/module/user_levels/repository"
- "go-humas-be/app/module/users/mapper"
- "go-humas-be/app/module/users/repository"
- "go-humas-be/app/module/users/request"
- "go-humas-be/app/module/users/response"
- "go-humas-be/config/config"
- "go-humas-be/utils/paginator"
- utilSvc "go-humas-be/utils/service"
"strings"
"time"
+ "web-medols-be/app/database/entity"
+ "web-medols-be/app/database/entity/users"
+ userLevelsRepository "web-medols-be/app/module/user_levels/repository"
+ "web-medols-be/app/module/users/mapper"
+ "web-medols-be/app/module/users/repository"
+ "web-medols-be/app/module/users/request"
+ "web-medols-be/app/module/users/response"
+ "web-medols-be/config/config"
+ "web-medols-be/utils/paginator"
+ utilSvc "web-medols-be/utils/service"
)
// UsersService
@@ -32,19 +33,19 @@ type usersService struct {
// UsersService define interface of IUsersService
type UsersService interface {
- All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error)
- Show(id uint) (users *response.UsersResponse, err error)
- ShowByUsername(username string) (users *response.UsersResponse, err error)
- ShowUserInfo(authToken string) (users *response.UsersResponse, err error)
- Save(req request.UsersCreateRequest, authToken string) (userReturn *users.Users, err error)
+ All(clientId *uuid.UUID, req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error)
+ Show(clientId *uuid.UUID, id uint) (users *response.UsersResponse, err error)
+ ShowByUsername(clientId *uuid.UUID, username string) (users *response.UsersResponse, err error)
+ ShowUserInfo(clientId *uuid.UUID, authToken string) (users *response.UsersResponse, err error)
+ Save(clientId *uuid.UUID, req request.UsersCreateRequest, authToken string) (userReturn *users.Users, err error)
Login(req request.UserLogin) (res *gocloak.JWT, err error)
ParetoLogin(req request.UserLogin) (res *response.ParetoLoginResponse, err error)
- Update(id uint, req request.UsersUpdateRequest) (err error)
- Delete(id uint) error
- SavePassword(req request.UserSavePassword, authToken string) (err error)
+ Update(clientId *uuid.UUID, id uint, req request.UsersUpdateRequest) (err error)
+ Delete(clientId *uuid.UUID, id uint) error
+ SavePassword(clientId *uuid.UUID, req request.UserSavePassword, authToken string) (err error)
ResetPassword(req request.UserResetPassword) (err error)
- ForgotPassword(req request.UserForgotPassword) (err error)
- EmailValidationPreLogin(req request.UserEmailValidationRequest) (msgResponse *string, err error)
+ ForgotPassword(clientId *uuid.UUID, req request.UserForgotPassword) (err error)
+ EmailValidationPreLogin(clientId *uuid.UUID, req request.UserEmailValidationRequest) (msgResponse *string, err error)
SetupEmail(req request.UserEmailValidationRequest) (msgResponse *string, err error)
OtpRequest(req request.UserOtpRequest) (err error)
OtpValidation(req request.UserOtpValidation) (err error)
@@ -65,8 +66,8 @@ func NewUsersService(repo repository.UsersRepository, userLevelsRepo userLevelsR
}
// All implement interface of UsersService
-func (_i *usersService) All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) {
- results, paging, err := _i.Repo.GetAll(req)
+func (_i *usersService) All(clientId *uuid.UUID, req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) {
+ results, paging, err := _i.Repo.GetAll(clientId, req)
if err != nil {
return
}
@@ -78,8 +79,8 @@ func (_i *usersService) All(req request.UsersQueryRequest) (users []*response.Us
return
}
-func (_i *usersService) Show(id uint) (users *response.UsersResponse, err error) {
- result, err := _i.Repo.FindOne(id)
+func (_i *usersService) Show(clientId *uuid.UUID, id uint) (users *response.UsersResponse, err error) {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return nil, err
}
@@ -87,8 +88,8 @@ func (_i *usersService) Show(id uint) (users *response.UsersResponse, err error)
return mapper.UsersResponseMapper(result, _i.UserLevelsRepo), nil
}
-func (_i *usersService) ShowByUsername(username string) (users *response.UsersResponse, err error) {
- result, err := _i.Repo.FindByUsername(username)
+func (_i *usersService) ShowByUsername(clientId *uuid.UUID, username string) (users *response.UsersResponse, err error) {
+ result, err := _i.Repo.FindByUsername(clientId, username)
if err != nil {
return nil, err
}
@@ -96,13 +97,13 @@ func (_i *usersService) ShowByUsername(username string) (users *response.UsersRe
return mapper.UsersResponseMapper(result, _i.UserLevelsRepo), nil
}
-func (_i *usersService) ShowUserInfo(authToken string) (users *response.UsersResponse, err error) {
+func (_i *usersService) ShowUserInfo(clientId *uuid.UUID, authToken string) (users *response.UsersResponse, err error) {
userInfo := utilSvc.GetUserInfo(_i.Log, _i.Repo, authToken)
return mapper.UsersResponseMapper(userInfo, _i.UserLevelsRepo), nil
}
-func (_i *usersService) Save(req request.UsersCreateRequest, authToken string) (userReturn *users.Users, err error) {
+func (_i *usersService) Save(clientId *uuid.UUID, req request.UsersCreateRequest, authToken string) (userReturn *users.Users, err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
@@ -121,6 +122,9 @@ func (_i *usersService) Save(req request.UsersCreateRequest, authToken string) (
newReq.KeycloakId = &keycloakId
newReq.TempPassword = &req.Password
+ // Set ClientId on entity
+ newReq.ClientId = clientId
+
return _i.Repo.Create(newReq)
}
@@ -214,11 +218,11 @@ func (_i *usersService) ParetoLogin(req request.UserLogin) (res *response.Pareto
return resLogin, nil
}
-func (_i *usersService) Update(id uint, req request.UsersUpdateRequest) (err error) {
+func (_i *usersService) Update(clientId *uuid.UUID, id uint, req request.UsersUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
newReq := req.ToEntity()
- findUser, err := _i.Repo.FindOne(id)
+ findUser, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
@@ -228,21 +232,24 @@ func (_i *usersService) Update(id uint, req request.UsersUpdateRequest) (err err
return err
}
- return _i.Repo.Update(id, newReq)
+ // Set ClientId on entity
+ newReq.ClientId = clientId
+
+ return _i.Repo.Update(clientId, id, newReq)
}
-func (_i *usersService) Delete(id uint) error {
- result, err := _i.Repo.FindOne(id)
+func (_i *usersService) Delete(clientId *uuid.UUID, id uint) error {
+ result, err := _i.Repo.FindOne(clientId, id)
if err != nil {
return err
}
isActive := false
result.IsActive = &isActive
- return _i.Repo.Update(id, result)
+ return _i.Repo.Update(clientId, id, result)
}
-func (_i *usersService) SavePassword(req request.UserSavePassword, authToken string) (err error) {
+func (_i *usersService) SavePassword(clientId *uuid.UUID, req request.UserSavePassword, authToken string) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
_i.Log.Info().Interface("AUTH TOKEN", authToken).Msg("")
@@ -303,10 +310,10 @@ func (_i *usersService) ResetPassword(req request.UserResetPassword) (err error)
}
}
-func (_i *usersService) ForgotPassword(req request.UserForgotPassword) (err error) {
+func (_i *usersService) ForgotPassword(clientId *uuid.UUID, req request.UserForgotPassword) (err error) {
_i.Log.Info().Interface("data", req).Msg("")
- user, err := _i.Repo.FindByUsername(req.Username)
+ user, err := _i.Repo.FindByUsername(clientId, req.Username)
if err != nil {
return err
}
@@ -400,7 +407,7 @@ func (_i *usersService) OtpValidation(req request.UserOtpValidation) (err error)
}
}
-func (_i *usersService) EmailValidationPreLogin(req request.UserEmailValidationRequest) (msgResponse *string, err error) {
+func (_i *usersService) EmailValidationPreLogin(clientId *uuid.UUID, req request.UserEmailValidationRequest) (msgResponse *string, err error) {
_i.Log.Info().Interface("data", req).Msg("")
var loginResponse *gocloak.JWT
@@ -410,7 +417,7 @@ func (_i *usersService) EmailValidationPreLogin(req request.UserEmailValidationR
return nil, fmt.Errorf("username / password incorrect")
}
- findUser, err := _i.Repo.FindByUsername(*req.Username)
+ findUser, err := _i.Repo.FindByUsername(clientId, *req.Username)
if findUser == nil || err != nil {
return nil, fmt.Errorf("username / password incorrect")
}
diff --git a/app/module/users/users.module.go b/app/module/users/users.module.go
index 26673fb..216a320 100644
--- a/app/module/users/users.module.go
+++ b/app/module/users/users.module.go
@@ -2,10 +2,10 @@ package users
import (
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/users/controller"
- "go-humas-be/app/module/users/repository"
- "go-humas-be/app/module/users/service"
"go.uber.org/fx"
+ "web-medols-be/app/module/users/controller"
+ "web-medols-be/app/module/users/repository"
+ "web-medols-be/app/module/users/service"
)
// struct of UsersRouter
diff --git a/app/router/api.go b/app/router/api.go
index bfd1295..4c9ecc6 100644
--- a/app/router/api.go
+++ b/app/router/api.go
@@ -3,31 +3,32 @@ package router
import (
swagger "github.com/arsmn/fiber-swagger/v2"
"github.com/gofiber/fiber/v2"
- "go-humas-be/app/module/activity_logs"
- "go-humas-be/app/module/advertisement"
- "go-humas-be/app/module/article_approvals"
- "go-humas-be/app/module/article_categories"
- "go-humas-be/app/module/article_category_details"
- "go-humas-be/app/module/article_comments"
- "go-humas-be/app/module/article_files"
- "go-humas-be/app/module/article_nulis_ai"
- "go-humas-be/app/module/articles"
- "go-humas-be/app/module/cities"
- "go-humas-be/app/module/custom_static_pages"
- "go-humas-be/app/module/districts"
- "go-humas-be/app/module/feedbacks"
- "go-humas-be/app/module/magazine_files"
- "go-humas-be/app/module/magazines"
- "go-humas-be/app/module/master_menus"
- "go-humas-be/app/module/master_modules"
- "go-humas-be/app/module/provinces"
- "go-humas-be/app/module/subscription"
- "go-humas-be/app/module/user_levels"
- "go-humas-be/app/module/user_role_accesses"
- "go-humas-be/app/module/user_roles"
- "go-humas-be/app/module/users"
- "go-humas-be/config/config"
- _ "go-humas-be/docs/swagger"
+ "web-medols-be/app/module/activity_logs"
+ "web-medols-be/app/module/advertisement"
+ "web-medols-be/app/module/article_approvals"
+ "web-medols-be/app/module/article_categories"
+ "web-medols-be/app/module/article_category_details"
+ "web-medols-be/app/module/article_comments"
+ "web-medols-be/app/module/article_files"
+ "web-medols-be/app/module/article_nulis_ai"
+ "web-medols-be/app/module/articles"
+ "web-medols-be/app/module/cities"
+ "web-medols-be/app/module/clients"
+ "web-medols-be/app/module/custom_static_pages"
+ "web-medols-be/app/module/districts"
+ "web-medols-be/app/module/feedbacks"
+ "web-medols-be/app/module/magazine_files"
+ "web-medols-be/app/module/magazines"
+ "web-medols-be/app/module/master_menus"
+ "web-medols-be/app/module/master_modules"
+ "web-medols-be/app/module/provinces"
+ "web-medols-be/app/module/subscription"
+ "web-medols-be/app/module/user_levels"
+ "web-medols-be/app/module/user_role_accesses"
+ "web-medols-be/app/module/user_roles"
+ "web-medols-be/app/module/users"
+ "web-medols-be/config/config"
+ _ "web-medols-be/docs/swagger"
)
type Router struct {
@@ -44,6 +45,7 @@ type Router struct {
ArticlesRouter *articles.ArticlesRouter
ArticleNulisAIRouter *article_nulis_ai.ArticleNulisAIRouter
CitiesRouter *cities.CitiesRouter
+ ClientsRouter *clients.ClientsRouter
CustomStaticPagesRouter *custom_static_pages.CustomStaticPagesRouter
DistrictsRouter *districts.DistrictsRouter
FeedbacksRouter *feedbacks.FeedbacksRouter
@@ -73,6 +75,7 @@ func NewRouter(
articlesRouter *articles.ArticlesRouter,
articleNulisRouter *article_nulis_ai.ArticleNulisAIRouter,
citiesRouter *cities.CitiesRouter,
+ clientsRouter *clients.ClientsRouter,
customStaticPagesRouter *custom_static_pages.CustomStaticPagesRouter,
districtsRouter *districts.DistrictsRouter,
feedbacksRouter *feedbacks.FeedbacksRouter,
@@ -100,6 +103,7 @@ func NewRouter(
ArticlesRouter: articlesRouter,
ArticleNulisAIRouter: articleNulisRouter,
CitiesRouter: citiesRouter,
+ ClientsRouter: clientsRouter,
CustomStaticPagesRouter: customStaticPagesRouter,
DistrictsRouter: districtsRouter,
FeedbacksRouter: feedbacksRouter,
@@ -137,6 +141,7 @@ func (r *Router) Register() {
r.ArticleCommentsRouter.RegisterArticleCommentsRoutes()
r.ArticleNulisAIRouter.RegisterArticleNulisAIRoutes()
r.CitiesRouter.RegisterCitiesRoutes()
+ r.ClientsRouter.RegisterClientsRoutes()
r.CustomStaticPagesRouter.RegisterCustomStaticPagesRoutes()
r.DistrictsRouter.RegisterDistrictsRoutes()
r.FeedbacksRouter.RegisterFeedbacksRoutes()
diff --git a/config/logger/index.logger.go b/config/logger/index.logger.go
index beac391..6b7e72d 100644
--- a/config/logger/index.logger.go
+++ b/config/logger/index.logger.go
@@ -3,8 +3,8 @@ package logger
import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
- "go-humas-be/config/config"
"os"
+ "web-medols-be/config/config"
)
// NewLogger : initialize logger
diff --git a/config/toml/config.toml b/config/toml/config.toml
index 2ed3205..d0ce50b 100644
--- a/config/toml/config.toml
+++ b/config/toml/config.toml
@@ -12,10 +12,10 @@ production = false
body-limit = 1048576000 # "100 * 1024 * 1024"
[db.postgres]
-dsn = "postgresql://humas_user:HumasDB@2024@38.47.180.165:5432/humas_db" # ://:@:/
+dsn = "postgresql://medols_user:MedolsDB@2025@38.47.180.165:5432/medols_db" # ://:@:/
log-mode = "NONE"
-migrate = false
-seed = false
+migrate = true
+seed = true
[logger]
log-dir = "debug.log"
diff --git a/config/webserver/webserver.config.go b/config/webserver/webserver.config.go
index 30eaa76..0906b27 100644
--- a/config/webserver/webserver.config.go
+++ b/config/webserver/webserver.config.go
@@ -8,18 +8,18 @@ import (
"github.com/gofiber/fiber/v2"
futils "github.com/gofiber/fiber/v2/utils"
"github.com/rs/zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/database/seeds"
- md "go-humas-be/app/middleware"
- articlesService "go-humas-be/app/module/articles/service"
- "go-humas-be/app/router"
- "go-humas-be/config/config"
- "go-humas-be/utils/response"
"go.uber.org/fx"
"os"
"runtime"
"strings"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/app/database/seeds"
+ md "web-medols-be/app/middleware"
+ articlesService "web-medols-be/app/module/articles/service"
+ "web-medols-be/app/router"
+ "web-medols-be/config/config"
+ "web-medols-be/utils/response"
)
// NewFiber : initialize the webserver
diff --git a/docker-compose.yml b/docker-compose.yml
index 3fc9790..9a868ec 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,12 +1,12 @@
version: "3.8"
services:
- web-humas-be:
- image: registry.gitlab.com/hanifsalafi/web-humas-be:dev
+ web-medols-be:
+ image: registry.gitlab.com/hanifsalafi/web-medols-be:dev
build:
context: .
dockerfile: Dockerfile
volumes:
- - ./data/web-humas-be/logs:/app
+ - ./data/web-medols-be/logs:/app
ports:
- "8800:8800"
\ No newline at end of file
diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go
index 99d9ee3..c90d8a6 100644
--- a/docs/swagger/docs.go
+++ b/docs/swagger/docs.go
@@ -3337,6 +3337,13 @@ const docTemplate = `{
],
"summary": "Get all Articles",
"parameters": [
+ {
+ "type": "string",
+ "description": "Insert the X-Client-Key",
+ "name": "X-Client-Key",
+ "in": "header",
+ "required": true
+ },
{
"type": "string",
"name": "category",
@@ -4432,6 +4439,307 @@ const docTemplate = `{
}
}
},
+ "/clients": {
+ "get": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for getting all Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Get all Clients",
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "createdBy",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "count",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "nextPage",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "page",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "previousPage",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "sort",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "sortBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "totalPage",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for create Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Create Clients",
+ "parameters": [
+ {
+ "type": "string",
+ "default": "Bearer \u003cAdd access token here\u003e",
+ "description": "Insert your access token",
+ "name": "Authorization",
+ "in": "header",
+ "required": true
+ },
+ {
+ "description": "Required payload",
+ "name": "payload",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ClientsCreateRequest"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ }
+ },
+ "/clients/{id}": {
+ "get": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for getting one Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Get one Clients",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for update Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "update Clients",
+ "parameters": [
+ {
+ "description": "Required payload",
+ "name": "payload",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ClientsUpdateRequest"
+ }
+ },
+ {
+ "type": "string",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for delete Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "delete Clients",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ }
+ },
"/custom-static-pages": {
"get": {
"security": [
@@ -10600,6 +10908,34 @@ const docTemplate = `{
}
}
},
+ "request.ClientsCreateRequest": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "createdById": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ClientsUpdateRequest": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "createdById": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.CustomStaticPagesCreateRequest": {
"type": "object",
"required": [
diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json
index a8a9ad8..f6e0f5d 100644
--- a/docs/swagger/swagger.json
+++ b/docs/swagger/swagger.json
@@ -3326,6 +3326,13 @@
],
"summary": "Get all Articles",
"parameters": [
+ {
+ "type": "string",
+ "description": "Insert the X-Client-Key",
+ "name": "X-Client-Key",
+ "in": "header",
+ "required": true
+ },
{
"type": "string",
"name": "category",
@@ -4421,6 +4428,307 @@
}
}
},
+ "/clients": {
+ "get": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for getting all Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Get all Clients",
+ "parameters": [
+ {
+ "type": "integer",
+ "name": "createdBy",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "name",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "count",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "limit",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "nextPage",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "page",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "previousPage",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "sort",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "name": "sortBy",
+ "in": "query"
+ },
+ {
+ "type": "integer",
+ "name": "totalPage",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for create Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Create Clients",
+ "parameters": [
+ {
+ "type": "string",
+ "default": "Bearer \u003cAdd access token here\u003e",
+ "description": "Insert your access token",
+ "name": "Authorization",
+ "in": "header",
+ "required": true
+ },
+ {
+ "description": "Required payload",
+ "name": "payload",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ClientsCreateRequest"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ }
+ },
+ "/clients/{id}": {
+ "get": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for getting one Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "Get one Clients",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for update Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "update Clients",
+ "parameters": [
+ {
+ "description": "Required payload",
+ "name": "payload",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ClientsUpdateRequest"
+ }
+ },
+ {
+ "type": "string",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "Bearer": []
+ }
+ ],
+ "description": "API for delete Clients",
+ "tags": [
+ "Clients"
+ ],
+ "summary": "delete Clients",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "Clients ID",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/response.Response"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/response.BadRequestError"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "schema": {
+ "$ref": "#/definitions/response.UnauthorizedError"
+ }
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/response.InternalServerError"
+ }
+ }
+ }
+ }
+ },
"/custom-static-pages": {
"get": {
"security": [
@@ -10589,6 +10897,34 @@
}
}
},
+ "request.ClientsCreateRequest": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "createdById": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ClientsUpdateRequest": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "createdById": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.CustomStaticPagesCreateRequest": {
"type": "object",
"required": [
diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml
index e1bc8ad..87ae218 100644
--- a/docs/swagger/swagger.yaml
+++ b/docs/swagger/swagger.yaml
@@ -400,6 +400,24 @@ definitions:
- id
- prov_id
type: object
+ request.ClientsCreateRequest:
+ properties:
+ createdById:
+ type: integer
+ name:
+ type: string
+ required:
+ - name
+ type: object
+ request.ClientsUpdateRequest:
+ properties:
+ createdById:
+ type: integer
+ name:
+ type: string
+ required:
+ - name
+ type: object
request.CustomStaticPagesCreateRequest:
properties:
description:
@@ -3058,6 +3076,11 @@ paths:
get:
description: API for getting all Articles
parameters:
+ - description: Insert the X-Client-Key
+ in: header
+ name: X-Client-Key
+ required: true
+ type: string
- in: query
name: category
type: string
@@ -3762,6 +3785,196 @@ paths:
summary: Update Cities
tags:
- Untags
+ /clients:
+ get:
+ description: API for getting all Clients
+ parameters:
+ - in: query
+ name: createdBy
+ type: integer
+ - in: query
+ name: name
+ type: string
+ - in: query
+ name: count
+ type: integer
+ - in: query
+ name: limit
+ type: integer
+ - in: query
+ name: nextPage
+ type: integer
+ - in: query
+ name: page
+ type: integer
+ - in: query
+ name: previousPage
+ type: integer
+ - in: query
+ name: sort
+ type: string
+ - in: query
+ name: sortBy
+ type: string
+ - in: query
+ name: totalPage
+ type: integer
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/response.Response'
+ "400":
+ description: Bad Request
+ schema:
+ $ref: '#/definitions/response.BadRequestError'
+ "401":
+ description: Unauthorized
+ schema:
+ $ref: '#/definitions/response.UnauthorizedError'
+ "500":
+ description: Internal Server Error
+ schema:
+ $ref: '#/definitions/response.InternalServerError'
+ security:
+ - Bearer: []
+ summary: Get all Clients
+ tags:
+ - Clients
+ post:
+ description: API for create Clients
+ parameters:
+ - default: Bearer
+ description: Insert your access token
+ in: header
+ name: Authorization
+ required: true
+ type: string
+ - description: Required payload
+ in: body
+ name: payload
+ required: true
+ schema:
+ $ref: '#/definitions/request.ClientsCreateRequest'
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/response.Response'
+ "400":
+ description: Bad Request
+ schema:
+ $ref: '#/definitions/response.BadRequestError'
+ "401":
+ description: Unauthorized
+ schema:
+ $ref: '#/definitions/response.UnauthorizedError'
+ "500":
+ description: Internal Server Error
+ schema:
+ $ref: '#/definitions/response.InternalServerError'
+ security:
+ - Bearer: []
+ summary: Create Clients
+ tags:
+ - Clients
+ /clients/{id}:
+ delete:
+ description: API for delete Clients
+ parameters:
+ - description: Clients ID
+ in: path
+ name: id
+ required: true
+ type: string
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/response.Response'
+ "400":
+ description: Bad Request
+ schema:
+ $ref: '#/definitions/response.BadRequestError'
+ "401":
+ description: Unauthorized
+ schema:
+ $ref: '#/definitions/response.UnauthorizedError'
+ "500":
+ description: Internal Server Error
+ schema:
+ $ref: '#/definitions/response.InternalServerError'
+ security:
+ - Bearer: []
+ summary: delete Clients
+ tags:
+ - Clients
+ get:
+ description: API for getting one Clients
+ parameters:
+ - description: Clients ID
+ in: path
+ name: id
+ required: true
+ type: integer
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/response.Response'
+ "400":
+ description: Bad Request
+ schema:
+ $ref: '#/definitions/response.BadRequestError'
+ "401":
+ description: Unauthorized
+ schema:
+ $ref: '#/definitions/response.UnauthorizedError'
+ "500":
+ description: Internal Server Error
+ schema:
+ $ref: '#/definitions/response.InternalServerError'
+ security:
+ - Bearer: []
+ summary: Get one Clients
+ tags:
+ - Clients
+ put:
+ description: API for update Clients
+ parameters:
+ - description: Required payload
+ in: body
+ name: payload
+ required: true
+ schema:
+ $ref: '#/definitions/request.ClientsUpdateRequest'
+ - description: Clients ID
+ in: path
+ name: id
+ required: true
+ type: string
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/response.Response'
+ "400":
+ description: Bad Request
+ schema:
+ $ref: '#/definitions/response.BadRequestError'
+ "401":
+ description: Unauthorized
+ schema:
+ $ref: '#/definitions/response.UnauthorizedError'
+ "500":
+ description: Internal Server Error
+ schema:
+ $ref: '#/definitions/response.InternalServerError'
+ security:
+ - Bearer: []
+ summary: update Clients
+ tags:
+ - Clients
/custom-static-pages:
get:
description: API for getting all CustomStaticPages
diff --git a/go.mod b/go.mod
index 6558233..cc1fa6d 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module go-humas-be
+module web-medols-be
go 1.21.6
diff --git a/main.go b/main.go
index f666cd2..faa3ab3 100644
--- a/main.go
+++ b/main.go
@@ -2,38 +2,39 @@ package main
import (
fxzerolog "github.com/efectn/fx-zerolog"
- "go-humas-be/app/database"
- "go-humas-be/app/middleware"
- "go-humas-be/app/module/activity_logs"
- "go-humas-be/app/module/advertisement"
- "go-humas-be/app/module/article_approvals"
- "go-humas-be/app/module/article_categories"
- "go-humas-be/app/module/article_category_details"
- "go-humas-be/app/module/article_comments"
- "go-humas-be/app/module/article_files"
- "go-humas-be/app/module/article_nulis_ai"
- "go-humas-be/app/module/articles"
- "go-humas-be/app/module/cities"
- "go-humas-be/app/module/custom_static_pages"
- "go-humas-be/app/module/districts"
- "go-humas-be/app/module/feedbacks"
- "go-humas-be/app/module/magazine_files"
- "go-humas-be/app/module/magazines"
- "go-humas-be/app/module/master_menus"
- "go-humas-be/app/module/master_modules"
- "go-humas-be/app/module/provinces"
- "go-humas-be/app/module/subscription"
- "go-humas-be/app/module/user_levels"
- "go-humas-be/app/module/user_role_accesses"
- "go-humas-be/app/module/user_role_level_details"
- "go-humas-be/app/module/user_roles"
- "go-humas-be/app/module/users"
- "go-humas-be/app/router"
- "go-humas-be/config/config"
- "go-humas-be/config/logger"
- "go-humas-be/config/webserver"
"go.uber.org/fx"
"time"
+ "web-medols-be/app/database"
+ "web-medols-be/app/middleware"
+ "web-medols-be/app/module/activity_logs"
+ "web-medols-be/app/module/advertisement"
+ "web-medols-be/app/module/article_approvals"
+ "web-medols-be/app/module/article_categories"
+ "web-medols-be/app/module/article_category_details"
+ "web-medols-be/app/module/article_comments"
+ "web-medols-be/app/module/article_files"
+ "web-medols-be/app/module/article_nulis_ai"
+ "web-medols-be/app/module/articles"
+ "web-medols-be/app/module/cities"
+ "web-medols-be/app/module/clients"
+ "web-medols-be/app/module/custom_static_pages"
+ "web-medols-be/app/module/districts"
+ "web-medols-be/app/module/feedbacks"
+ "web-medols-be/app/module/magazine_files"
+ "web-medols-be/app/module/magazines"
+ "web-medols-be/app/module/master_menus"
+ "web-medols-be/app/module/master_modules"
+ "web-medols-be/app/module/provinces"
+ "web-medols-be/app/module/subscription"
+ "web-medols-be/app/module/user_levels"
+ "web-medols-be/app/module/user_role_accesses"
+ "web-medols-be/app/module/user_role_level_details"
+ "web-medols-be/app/module/user_roles"
+ "web-medols-be/app/module/users"
+ "web-medols-be/app/router"
+ "web-medols-be/config/config"
+ "web-medols-be/config/logger"
+ "web-medols-be/config/webserver"
)
func main() {
@@ -70,6 +71,7 @@ func main() {
article_comments.NewArticleCommentsModule,
article_nulis_ai.NewArticleNulisAIModule,
cities.NewCitiesModule,
+ clients.NewClientsModule,
custom_static_pages.NewCustomStaticPagesModule,
districts.NewDistrictsModule,
feedbacks.NewFeedbacksModule,
diff --git a/utils/middleware/client_utils.go b/utils/middleware/client_utils.go
new file mode 100644
index 0000000..866352b
--- /dev/null
+++ b/utils/middleware/client_utils.go
@@ -0,0 +1,56 @@
+package middleware
+
+import (
+ "github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
+ "gorm.io/gorm"
+ "web-medols-be/app/middleware"
+)
+
+// AddClientFilter adds client_id filter to GORM query
+func AddClientFilter(db *gorm.DB, c *fiber.Ctx) *gorm.DB {
+ if c == nil {
+ return db
+ }
+ clientID := middleware.GetClientID(c)
+ if clientID != nil {
+ return db.Where("client_id = ?", clientID)
+ }
+ return db
+}
+
+// SetClientID sets client_id in the given struct if it has a ClientId field
+func SetClientID(c *fiber.Ctx, model interface{}) {
+ if c == nil {
+ return
+ }
+ clientID := middleware.GetClientID(c)
+ if clientID != nil {
+ // Use reflection to set ClientId field if it exists
+ if setter, ok := model.(interface{ SetClientID(*uuid.UUID) }); ok {
+ setter.SetClientID(clientID)
+ }
+ }
+}
+
+// ValidateClientAccess validates if the current client has access to the resource
+func ValidateClientAccess(db *gorm.DB, c *fiber.Ctx, tableName string, resourceID interface{}) error {
+ if c == nil {
+ return nil // Skip validation for background jobs
+ }
+ clientID := middleware.GetClientID(c)
+ if clientID == nil {
+ return fiber.NewError(fiber.StatusUnauthorized, "Client not authenticated")
+ }
+
+ var count int64
+ if err := db.Table(tableName).Where("id = ? AND client_id = ?", resourceID, clientID).Count(&count).Error; err != nil {
+ return err
+ }
+
+ if count == 0 {
+ return fiber.NewError(fiber.StatusForbidden, "Access denied to this resource")
+ }
+
+ return nil
+}
diff --git a/utils/response/index.response.go b/utils/response/index.response.go
index 82e9e91..d94a063 100644
--- a/utils/response/index.response.go
+++ b/utils/response/index.response.go
@@ -5,8 +5,8 @@ import (
validator "github.com/go-playground/validator/v10"
"github.com/gofiber/fiber/v2"
"github.com/rs/zerolog/log"
- val "go-humas-be/utils/validator"
"strings"
+ val "web-medols-be/utils/validator"
)
// Alias for any slice
diff --git a/utils/service/user_utils.service.go b/utils/service/user_utils.service.go
index 13e39d1..09d74d5 100644
--- a/utils/service/user_utils.service.go
+++ b/utils/service/user_utils.service.go
@@ -3,10 +3,10 @@ package service
import (
"github.com/golang-jwt/jwt/v5"
"github.com/rs/zerolog"
- "go-humas-be/app/database/entity/users"
- "go-humas-be/app/module/users/repository"
"strings"
"time"
+ "web-medols-be/app/database/entity/users"
+ "web-medols-be/app/module/users/repository"
)
func GetUserInfo(log zerolog.Logger, repo repository.UsersRepository, bearerToken string) *users.Users {