127 lines
3.4 KiB
Go
127 lines
3.4 KiB
Go
package systemconfig
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
)
|
|
|
|
func (s *Service) PublishOptions(ctx context.Context) (*PublishOptionsDTO, error) {
|
|
if s.repo == nil {
|
|
return nil, ErrDependencyUnavailable
|
|
}
|
|
options, err := s.publishOptions(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &options, nil
|
|
}
|
|
|
|
func (s *Service) SalePriceConfig(ctx context.Context) (*PublishSalePriceConfig, error) {
|
|
if s.repo == nil {
|
|
return nil, ErrDependencyUnavailable
|
|
}
|
|
config, err := s.salePriceConfig(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &config, nil
|
|
}
|
|
|
|
func (s *Service) OrderAgreements(ctx context.Context) (*OrderAgreementsDTO, error) {
|
|
if s.repo == nil {
|
|
return nil, ErrDependencyUnavailable
|
|
}
|
|
agreements, err := s.orderAgreements(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &agreements, nil
|
|
}
|
|
|
|
func (s *Service) ListingPublishAgreements(ctx context.Context) (*ListingPublishAgreementsDTO, error) {
|
|
if s.repo == nil {
|
|
return nil, ErrDependencyUnavailable
|
|
}
|
|
agreements, err := s.listingPublishAgreements(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &agreements, nil
|
|
}
|
|
|
|
func (s *Service) PostRentalNotice(ctx context.Context) (*PostRentalNoticeDTO, error) {
|
|
if s.repo == nil {
|
|
return nil, ErrDependencyUnavailable
|
|
}
|
|
notice, err := s.postRentalNotice(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return ¬ice, nil
|
|
}
|
|
|
|
func (s *Service) publishOptions(ctx context.Context) (PublishOptionsDTO, error) {
|
|
value, err := s.repo.FindValue(ctx, publishOptionsConfigKey)
|
|
if err != nil {
|
|
return PublishOptionsDTO{}, err
|
|
}
|
|
options := DefaultPublishOptions()
|
|
if err := json.Unmarshal([]byte(value), &options); err != nil {
|
|
options = DefaultPublishOptions()
|
|
}
|
|
normalizePublishOptions(&options)
|
|
return options, nil
|
|
}
|
|
|
|
func (s *Service) salePriceConfig(ctx context.Context) (PublishSalePriceConfig, error) {
|
|
value, err := s.repo.FindValue(ctx, salePriceConfigKey)
|
|
if err != nil {
|
|
return PublishSalePriceConfig{}, err
|
|
}
|
|
config := DefaultSalePriceConfig()
|
|
if err := json.Unmarshal([]byte(value), &config); err != nil {
|
|
config = DefaultSalePriceConfig()
|
|
}
|
|
normalizeSalePriceConfig(&config)
|
|
return config, nil
|
|
}
|
|
|
|
func (s *Service) orderAgreements(ctx context.Context) (OrderAgreementsDTO, error) {
|
|
value, err := s.repo.FindValue(ctx, orderAgreementsConfigKey)
|
|
if err != nil {
|
|
return OrderAgreementsDTO{}, err
|
|
}
|
|
agreements := DefaultOrderAgreements()
|
|
if err := json.Unmarshal([]byte(value), &agreements); err != nil {
|
|
agreements = DefaultOrderAgreements()
|
|
}
|
|
normalizeOrderAgreements(&agreements)
|
|
return agreements, nil
|
|
}
|
|
|
|
func (s *Service) listingPublishAgreements(ctx context.Context) (ListingPublishAgreementsDTO, error) {
|
|
value, err := s.repo.FindValue(ctx, listingPublishAgreementsConfigKey)
|
|
if err != nil {
|
|
return ListingPublishAgreementsDTO{}, err
|
|
}
|
|
agreements := DefaultListingPublishAgreements()
|
|
if err := json.Unmarshal([]byte(value), &agreements); err != nil {
|
|
agreements = DefaultListingPublishAgreements()
|
|
}
|
|
normalizeListingPublishAgreements(&agreements)
|
|
return agreements, nil
|
|
}
|
|
|
|
func (s *Service) postRentalNotice(ctx context.Context) (PostRentalNoticeDTO, error) {
|
|
value, err := s.repo.FindValue(ctx, postRentalNoticeConfigKey)
|
|
if err != nil {
|
|
return PostRentalNoticeDTO{}, err
|
|
}
|
|
notice := DefaultPostRentalNotice()
|
|
if err := json.Unmarshal([]byte(value), ¬ice); err != nil {
|
|
notice = DefaultPostRentalNotice()
|
|
}
|
|
normalizePostRentalNotice(¬ice)
|
|
return notice, nil
|
|
}
|