feat: company profile feature
This commit is contained in:
parent
b747fb06d0
commit
9a2481be09
|
|
@ -0,0 +1,65 @@
|
||||||
|
package dto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ResponseCompanyProfileDTO struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
UserID string `json:"userId"`
|
||||||
|
CompanyName string `json:"company_name"`
|
||||||
|
CompanyAddress string `json:"company_address"`
|
||||||
|
CompanyPhone string `json:"company_phone"`
|
||||||
|
CompanyEmail string `json:"company_email"`
|
||||||
|
CompanyLogo string `json:"company_logo,omitempty"`
|
||||||
|
CompanyWebsite string `json:"company_website,omitempty"`
|
||||||
|
TaxID string `json:"taxId,omitempty"`
|
||||||
|
FoundedDate string `json:"founded_date,omitempty"`
|
||||||
|
CompanyType string `json:"company_type,omitempty"`
|
||||||
|
CompanyDescription string `json:"company_description"`
|
||||||
|
CreatedAt string `json:"createdAt"`
|
||||||
|
UpdatedAt string `json:"updatedAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RequestCompanyProfileDTO struct {
|
||||||
|
CompanyName string `json:"company_name"`
|
||||||
|
CompanyAddress string `json:"company_address"`
|
||||||
|
CompanyPhone string `json:"company_phone"`
|
||||||
|
CompanyEmail string `json:"company_email"`
|
||||||
|
CompanyLogo string `json:"company_logo,omitempty"`
|
||||||
|
CompanyWebsite string `json:"company_website,omitempty"`
|
||||||
|
TaxID string `json:"taxId,omitempty"`
|
||||||
|
FoundedDate string `json:"founded_date,omitempty"`
|
||||||
|
CompanyType string `json:"company_type,omitempty"`
|
||||||
|
CompanyDescription string `json:"company_description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RequestCompanyProfileDTO) ValidateCompanyProfileInput() (map[string][]string, bool) {
|
||||||
|
errors := make(map[string][]string)
|
||||||
|
|
||||||
|
if strings.TrimSpace(r.CompanyName) == "" {
|
||||||
|
errors["company_Name"] = append(errors["company_name"], "Company name is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(r.CompanyAddress) == "" {
|
||||||
|
errors["company_Address"] = append(errors["company_address"], "Company address is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(r.CompanyPhone) == "" {
|
||||||
|
errors["company_Phone"] = append(errors["company_phone"], "Company phone is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(r.CompanyEmail) == "" {
|
||||||
|
errors["company_Email"] = append(errors["company_email"], "Company email is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(r.CompanyDescription) == "" {
|
||||||
|
errors["company_Description"] = append(errors["company_description"], "Company description is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(errors) > 0 {
|
||||||
|
return errors, false
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
package handler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"rijig/dto"
|
||||||
|
"rijig/internal/services"
|
||||||
|
"rijig/utils"
|
||||||
|
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompanyProfileHandler struct {
|
||||||
|
companyProfileService services.CompanyProfileService
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCompanyProfileHandler(service services.CompanyProfileService) *CompanyProfileHandler {
|
||||||
|
return &CompanyProfileHandler{
|
||||||
|
companyProfileService: service,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *CompanyProfileHandler) CreateCompanyProfile(c *fiber.Ctx) error {
|
||||||
|
userID, ok := c.Locals("userID").(string)
|
||||||
|
if !ok || userID == "" {
|
||||||
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
var requestDTO dto.RequestCompanyProfileDTO
|
||||||
|
if err := c.BodyParser(&requestDTO); err != nil {
|
||||||
|
return utils.ValidationErrorResponse(c, map[string][]string{"body": {"Invalid input data"}})
|
||||||
|
}
|
||||||
|
|
||||||
|
companyProfileResponse, err := h.companyProfileService.CreateCompanyProfile(userID, &requestDTO)
|
||||||
|
if err != nil {
|
||||||
|
return utils.ErrorResponse(c, fmt.Sprintf("Failed to create company profile: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return utils.SuccessResponse(c, companyProfileResponse, "Company profile created successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *CompanyProfileHandler) GetCompanyProfileByID(c *fiber.Ctx) error {
|
||||||
|
id := c.Params("company_id")
|
||||||
|
|
||||||
|
companyProfileResponse, err := h.companyProfileService.GetCompanyProfileByID(id)
|
||||||
|
if err != nil {
|
||||||
|
return utils.ErrorResponse(c, fmt.Sprintf("Failed to fetch company profile: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return utils.SuccessResponse(c, companyProfileResponse, "Company profile fetched successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *CompanyProfileHandler) GetCompanyProfilesByUserID(c *fiber.Ctx) error {
|
||||||
|
userID, ok := c.Locals("userID").(string)
|
||||||
|
if !ok || userID == "" {
|
||||||
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
companyProfilesResponse, err := h.companyProfileService.GetCompanyProfilesByUserID(userID)
|
||||||
|
if err != nil {
|
||||||
|
return utils.ErrorResponse(c, fmt.Sprintf("Failed to fetch company profiles: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return utils.NonPaginatedResponse(c, companyProfilesResponse, len(companyProfilesResponse), "Company profiles fetched successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *CompanyProfileHandler) UpdateCompanyProfile(c *fiber.Ctx) error {
|
||||||
|
userID, ok := c.Locals("userID").(string)
|
||||||
|
if !ok || userID == "" {
|
||||||
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
id := c.Params("company_id")
|
||||||
|
|
||||||
|
var requestDTO dto.RequestCompanyProfileDTO
|
||||||
|
if err := c.BodyParser(&requestDTO); err != nil {
|
||||||
|
return utils.ValidationErrorResponse(c, map[string][]string{"body": {"Invalid input data"}})
|
||||||
|
}
|
||||||
|
|
||||||
|
companyProfileResponse, err := h.companyProfileService.UpdateCompanyProfile(id, &requestDTO)
|
||||||
|
if err != nil {
|
||||||
|
return utils.ErrorResponse(c, fmt.Sprintf("Failed to update company profile: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return utils.SuccessResponse(c, companyProfileResponse, "Company profile updated successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *CompanyProfileHandler) DeleteCompanyProfile(c *fiber.Ctx) error {
|
||||||
|
userID, ok := c.Locals("userID").(string)
|
||||||
|
if !ok || userID == "" {
|
||||||
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
||||||
|
}
|
||||||
|
id := c.Params("company_id")
|
||||||
|
|
||||||
|
err := h.companyProfileService.DeleteCompanyProfile(id)
|
||||||
|
if err != nil {
|
||||||
|
return utils.ErrorResponse(c, fmt.Sprintf("Failed to delete company profile: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return utils.SuccessResponse(c, nil, "Company profile deleted successfully")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
package repositories
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"rijig/model"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompanyProfileRepository interface {
|
||||||
|
CreateCompanyProfile(companyProfile *model.CompanyProfile) (*model.CompanyProfile, error)
|
||||||
|
GetCompanyProfileByID(id string) (*model.CompanyProfile, error)
|
||||||
|
GetCompanyProfilesByUserID(userID string) ([]model.CompanyProfile, error)
|
||||||
|
UpdateCompanyProfile(id string, companyProfile *model.CompanyProfile) (*model.CompanyProfile, error)
|
||||||
|
DeleteCompanyProfile(id string) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type companyProfileRepository struct {
|
||||||
|
DB *gorm.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCompanyProfileRepository(db *gorm.DB) CompanyProfileRepository {
|
||||||
|
return &companyProfileRepository{
|
||||||
|
DB: db,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *companyProfileRepository) CreateCompanyProfile(companyProfile *model.CompanyProfile) (*model.CompanyProfile, error) {
|
||||||
|
err := r.DB.Create(companyProfile).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to create company profile: %v", err)
|
||||||
|
}
|
||||||
|
return companyProfile, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *companyProfileRepository) GetCompanyProfileByID(id string) (*model.CompanyProfile, error) {
|
||||||
|
var companyProfile model.CompanyProfile
|
||||||
|
err := r.DB.Preload("User").First(&companyProfile, "id = ?", id).Error
|
||||||
|
if err != nil {
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, fmt.Errorf("company profile with ID %s not found", id)
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("error fetching company profile: %v", err)
|
||||||
|
}
|
||||||
|
return &companyProfile, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *companyProfileRepository) GetCompanyProfilesByUserID(userID string) ([]model.CompanyProfile, error) {
|
||||||
|
var companyProfiles []model.CompanyProfile
|
||||||
|
err := r.DB.Preload("User").Where("user_id = ?", userID).Find(&companyProfiles).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error fetching company profiles for userID %s: %v", userID, err)
|
||||||
|
}
|
||||||
|
return companyProfiles, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *companyProfileRepository) UpdateCompanyProfile(id string, companyProfile *model.CompanyProfile) (*model.CompanyProfile, error) {
|
||||||
|
var existingProfile model.CompanyProfile
|
||||||
|
err := r.DB.First(&existingProfile, "id = ?", id).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("company profile not found: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.DB.Model(&existingProfile).Updates(companyProfile).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to update company profile: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &existingProfile, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *companyProfileRepository) DeleteCompanyProfile(id string) error {
|
||||||
|
err := r.DB.Delete(&model.CompanyProfile{}, "id = ?", id).Error
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to delete company profile: %v", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,163 @@
|
||||||
|
package services
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"rijig/dto"
|
||||||
|
"rijig/internal/repositories"
|
||||||
|
"rijig/model"
|
||||||
|
"rijig/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompanyProfileService interface {
|
||||||
|
CreateCompanyProfile(userID string, request *dto.RequestCompanyProfileDTO) (*dto.ResponseCompanyProfileDTO, error)
|
||||||
|
GetCompanyProfileByID(id string) (*dto.ResponseCompanyProfileDTO, error)
|
||||||
|
GetCompanyProfilesByUserID(userID string) ([]dto.ResponseCompanyProfileDTO, error)
|
||||||
|
UpdateCompanyProfile(id string, request *dto.RequestCompanyProfileDTO) (*dto.ResponseCompanyProfileDTO, error)
|
||||||
|
DeleteCompanyProfile(id string) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type companyProfileService struct {
|
||||||
|
companyProfileRepo repositories.CompanyProfileRepository
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCompanyProfileService(companyProfileRepo repositories.CompanyProfileRepository) CompanyProfileService {
|
||||||
|
return &companyProfileService{
|
||||||
|
companyProfileRepo: companyProfileRepo,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func FormatResponseCompanyProfile(companyProfile *model.CompanyProfile) (*dto.ResponseCompanyProfileDTO, error) {
|
||||||
|
|
||||||
|
createdAt, _ := utils.FormatDateToIndonesianFormat(companyProfile.CreatedAt)
|
||||||
|
updatedAt, _ := utils.FormatDateToIndonesianFormat(companyProfile.UpdatedAt)
|
||||||
|
|
||||||
|
responseDTO := &dto.ResponseCompanyProfileDTO{
|
||||||
|
ID: companyProfile.ID,
|
||||||
|
UserID: companyProfile.UserID,
|
||||||
|
CompanyName: companyProfile.CompanyName,
|
||||||
|
CompanyAddress: companyProfile.CompanyAddress,
|
||||||
|
CompanyPhone: companyProfile.CompanyPhone,
|
||||||
|
CompanyEmail: companyProfile.CompanyEmail,
|
||||||
|
CompanyLogo: companyProfile.CompanyLogo,
|
||||||
|
CompanyWebsite: companyProfile.CompanyWebsite,
|
||||||
|
TaxID: companyProfile.TaxID,
|
||||||
|
FoundedDate: companyProfile.FoundedDate,
|
||||||
|
CompanyType: companyProfile.CompanyType,
|
||||||
|
CompanyDescription: companyProfile.CompanyDescription,
|
||||||
|
CreatedAt: createdAt,
|
||||||
|
UpdatedAt: updatedAt,
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseDTO, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *companyProfileService) CreateCompanyProfile(userID string, request *dto.RequestCompanyProfileDTO) (*dto.ResponseCompanyProfileDTO, error) {
|
||||||
|
|
||||||
|
errors, valid := request.ValidateCompanyProfileInput()
|
||||||
|
if !valid {
|
||||||
|
return nil, fmt.Errorf("validation failed: %v", errors)
|
||||||
|
}
|
||||||
|
|
||||||
|
companyProfile := &model.CompanyProfile{
|
||||||
|
UserID: userID,
|
||||||
|
CompanyName: request.CompanyName,
|
||||||
|
CompanyAddress: request.CompanyAddress,
|
||||||
|
CompanyPhone: request.CompanyPhone,
|
||||||
|
CompanyEmail: request.CompanyEmail,
|
||||||
|
CompanyLogo: request.CompanyLogo,
|
||||||
|
CompanyWebsite: request.CompanyWebsite,
|
||||||
|
TaxID: request.TaxID,
|
||||||
|
FoundedDate: request.FoundedDate,
|
||||||
|
CompanyType: request.CompanyType,
|
||||||
|
CompanyDescription: request.CompanyDescription,
|
||||||
|
}
|
||||||
|
|
||||||
|
createdCompanyProfile, err := s.companyProfileRepo.CreateCompanyProfile(companyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to create company profile: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
responseDTO, err := FormatResponseCompanyProfile(createdCompanyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to format company profile response: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseDTO, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *companyProfileService) GetCompanyProfileByID(id string) (*dto.ResponseCompanyProfileDTO, error) {
|
||||||
|
|
||||||
|
companyProfile, err := s.companyProfileRepo.GetCompanyProfileByID(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error retrieving company profile by ID: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
responseDTO, err := FormatResponseCompanyProfile(companyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error formatting company profile response: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseDTO, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *companyProfileService) GetCompanyProfilesByUserID(userID string) ([]dto.ResponseCompanyProfileDTO, error) {
|
||||||
|
|
||||||
|
companyProfiles, err := s.companyProfileRepo.GetCompanyProfilesByUserID(userID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error retrieving company profiles by userID: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var responseDTOs []dto.ResponseCompanyProfileDTO
|
||||||
|
for _, companyProfile := range companyProfiles {
|
||||||
|
responseDTO, err := FormatResponseCompanyProfile(&companyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error formatting company profile response: %v", err)
|
||||||
|
}
|
||||||
|
responseDTOs = append(responseDTOs, *responseDTO)
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseDTOs, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *companyProfileService) UpdateCompanyProfile(id string, request *dto.RequestCompanyProfileDTO) (*dto.ResponseCompanyProfileDTO, error) {
|
||||||
|
|
||||||
|
errors, valid := request.ValidateCompanyProfileInput()
|
||||||
|
if !valid {
|
||||||
|
return nil, fmt.Errorf("validation failed: %v", errors)
|
||||||
|
}
|
||||||
|
|
||||||
|
companyProfile := &model.CompanyProfile{
|
||||||
|
CompanyName: request.CompanyName,
|
||||||
|
CompanyAddress: request.CompanyAddress,
|
||||||
|
CompanyPhone: request.CompanyPhone,
|
||||||
|
CompanyEmail: request.CompanyEmail,
|
||||||
|
CompanyLogo: request.CompanyLogo,
|
||||||
|
CompanyWebsite: request.CompanyWebsite,
|
||||||
|
TaxID: request.TaxID,
|
||||||
|
FoundedDate: request.FoundedDate,
|
||||||
|
CompanyType: request.CompanyType,
|
||||||
|
CompanyDescription: request.CompanyDescription,
|
||||||
|
}
|
||||||
|
|
||||||
|
updatedCompanyProfile, err := s.companyProfileRepo.UpdateCompanyProfile(id, companyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to update company profile: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
responseDTO, err := FormatResponseCompanyProfile(updatedCompanyProfile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to format company profile response: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseDTO, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *companyProfileService) DeleteCompanyProfile(id string) error {
|
||||||
|
|
||||||
|
err := s.companyProfileRepo.DeleteCompanyProfile(id)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to delete company profile: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -22,11 +22,13 @@ type IdentityCardService interface {
|
||||||
|
|
||||||
type identityCardService struct {
|
type identityCardService struct {
|
||||||
identityCardRepo repositories.IdentityCardRepository
|
identityCardRepo repositories.IdentityCardRepository
|
||||||
|
userRepo repositories.UserProfileRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewIdentityCardService(identityCardRepo repositories.IdentityCardRepository) IdentityCardService {
|
func NewIdentityCardService(identityCardRepo repositories.IdentityCardRepository, userRepo repositories.UserProfileRepository) IdentityCardService {
|
||||||
return &identityCardService{
|
return &identityCardService{
|
||||||
identityCardRepo: identityCardRepo,
|
identityCardRepo: identityCardRepo,
|
||||||
|
userRepo: userRepo,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,6 +158,17 @@ func (s *identityCardService) CreateIdentityCard(userID string, request *dto.Req
|
||||||
return nil, fmt.Errorf("failed to create identity card: %v", err)
|
return nil, fmt.Errorf("failed to create identity card: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user, err := s.userRepo.FindByID(userID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failde to fint user: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
user.RegistrationStatus = "onreview"
|
||||||
|
|
||||||
|
err = s.userRepo.Update(user)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to update user: %v", err)
|
||||||
|
}
|
||||||
idcardResponseDTO, _ := FormatResponseIdentityCars(identityCard)
|
idcardResponseDTO, _ := FormatResponseIdentityCars(identityCard)
|
||||||
|
|
||||||
return idcardResponseDTO, nil
|
return idcardResponseDTO, nil
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,12 @@ type CompanyProfile struct {
|
||||||
CompanyAddress string `gorm:"not null" json:"company_address"`
|
CompanyAddress string `gorm:"not null" json:"company_address"`
|
||||||
CompanyPhone string `gorm:"not null" json:"company_phone"`
|
CompanyPhone string `gorm:"not null" json:"company_phone"`
|
||||||
CompanyEmail string `gorm:"not null" json:"company_email"`
|
CompanyEmail string `gorm:"not null" json:"company_email"`
|
||||||
CompanyLogo string `gorm:"not null" json:"company_logo"`
|
CompanyLogo string `json:"company_logo,omitempty"`
|
||||||
CompanyWebsite string `json:"company_website"`
|
CompanyWebsite string `json:"company_website,omitempty"`
|
||||||
TaxID string `json:"tax_id"`
|
TaxID string `json:"tax_id,omitempty"`
|
||||||
FoundedDate time.Time `json:"founded_date"`
|
FoundedDate string `json:"founded_date,omitempty"`
|
||||||
CompanyType string `gorm:"not null" json:"company_type"`
|
CompanyType string `json:"company_type,omitempty"`
|
||||||
CompanyDescription string `gorm:"type:text" json:"company_description"`
|
CompanyDescription string `gorm:"type:text" json:"company_description"`
|
||||||
CompanyStatus string `gorm:"not null" json:"company_status"`
|
|
||||||
CreatedAt time.Time `gorm:"default:current_timestamp" json:"created_at"`
|
CreatedAt time.Time `gorm:"default:current_timestamp" json:"created_at"`
|
||||||
UpdatedAt time.Time `gorm:"default:current_timestamp" json:"updated_at"`
|
UpdatedAt time.Time `gorm:"default:current_timestamp" json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AdminAuthRouter(api fiber.Router) {
|
func AuthAdminRouter(api fiber.Router) {
|
||||||
secretKey := os.Getenv("SECRET_KEY")
|
secretKey := os.Getenv("SECRET_KEY")
|
||||||
if secretKey == "" {
|
if secretKey == "" {
|
||||||
log.Fatal("SECRET_KEY is not set in the environment variables")
|
log.Fatal("SECRET_KEY is not set in the environment variables")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package presentation
|
||||||
|
|
||||||
|
import (
|
||||||
|
"rijig/config"
|
||||||
|
"rijig/internal/handler"
|
||||||
|
"rijig/internal/repositories"
|
||||||
|
"rijig/internal/services"
|
||||||
|
"rijig/middleware"
|
||||||
|
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func CompanyProfileRouter(api fiber.Router) {
|
||||||
|
|
||||||
|
companyProfileRepo := repositories.NewCompanyProfileRepository(config.DB)
|
||||||
|
companyProfileService := services.NewCompanyProfileService(companyProfileRepo)
|
||||||
|
companyProfileHandler := handler.NewCompanyProfileHandler(companyProfileService)
|
||||||
|
|
||||||
|
companyProfileAPI := api.Group("/company-profile")
|
||||||
|
companyProfileAPI.Use(middleware.AuthMiddleware)
|
||||||
|
|
||||||
|
companyProfileAPI.Post("/create", companyProfileHandler.CreateCompanyProfile)
|
||||||
|
companyProfileAPI.Get("/get/:company_id", companyProfileHandler.GetCompanyProfileByID)
|
||||||
|
companyProfileAPI.Get("/get", companyProfileHandler.GetCompanyProfilesByUserID)
|
||||||
|
companyProfileAPI.Put("/update/:company_id", companyProfileHandler.UpdateCompanyProfile)
|
||||||
|
companyProfileAPI.Delete("/delete/:company_id", companyProfileHandler.DeleteCompanyProfile)
|
||||||
|
}
|
||||||
|
|
@ -13,7 +13,8 @@ import (
|
||||||
|
|
||||||
func IdentityCardRouter(api fiber.Router) {
|
func IdentityCardRouter(api fiber.Router) {
|
||||||
identityCardRepo := repositories.NewIdentityCardRepository(config.DB)
|
identityCardRepo := repositories.NewIdentityCardRepository(config.DB)
|
||||||
identityCardService := services.NewIdentityCardService(identityCardRepo)
|
userRepo := repositories.NewUserProfileRepository(config.DB)
|
||||||
|
identityCardService := services.NewIdentityCardService(identityCardRepo, userRepo)
|
||||||
identityCardHandler := handler.NewIdentityCardHandler(identityCardService)
|
identityCardHandler := handler.NewIdentityCardHandler(identityCardService)
|
||||||
|
|
||||||
identityCardApi := api.Group("/identitycard")
|
identityCardApi := api.Group("/identitycard")
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,13 @@ func SetupRoutes(app *fiber.App) {
|
||||||
|
|
||||||
// || auth router || //
|
// || auth router || //
|
||||||
// presentation.AuthRouter(api)
|
// presentation.AuthRouter(api)
|
||||||
presentationn.AdminAuthRouter(api)
|
presentationn.AuthAdminRouter(api)
|
||||||
presentationn.AuthPengelolaRouter(api)
|
presentationn.AuthPengelolaRouter(api)
|
||||||
presentationn.AuthPengepulRouter(api)
|
presentationn.AuthPengepulRouter(api)
|
||||||
presentationn.AuthMasyarakatRouter(api)
|
presentationn.AuthMasyarakatRouter(api)
|
||||||
// || auth router || //
|
// || auth router || //
|
||||||
presentation.IdentityCardRouter(api)
|
presentation.IdentityCardRouter(api)
|
||||||
|
presentation.CompanyProfileRouter(api)
|
||||||
|
|
||||||
presentation.UserProfileRouter(api)
|
presentation.UserProfileRouter(api)
|
||||||
presentation.UserPinRouter(api)
|
presentation.UserPinRouter(api)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue