flamingo.me/flamingo-commerce/v3@v3.11.0/customer/interfaces/graphql/queryresolver.go (about)

     1  package graphql
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  
     7  	"flamingo.me/flamingo/v3/framework/web"
     8  
     9  	"flamingo.me/flamingo-commerce/v3/customer/application"
    10  	"flamingo.me/flamingo-commerce/v3/customer/interfaces/graphql/dtocustomer"
    11  )
    12  
    13  type (
    14  	// CustomerResolver graphql resolver
    15  	CustomerResolver struct {
    16  		service *application.Service
    17  	}
    18  )
    19  
    20  // Inject dependencies
    21  func (r *CustomerResolver) Inject(
    22  	service *application.Service,
    23  ) *CustomerResolver {
    24  	r.service = service
    25  
    26  	return r
    27  }
    28  
    29  // CommerceCustomerStatus resolves the commerce customer query
    30  // Deprecated: use commerce customer query resolver instead
    31  func (r *CustomerResolver) CommerceCustomerStatus(ctx context.Context) (*dtocustomer.CustomerStatusResult, error) {
    32  	userID, err := r.service.GetUserID(ctx, web.RequestFromContext(ctx))
    33  	if errors.Is(err, application.ErrNoIdentity) {
    34  		return &dtocustomer.CustomerStatusResult{IsLoggedIn: false}, nil
    35  	}
    36  
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	return &dtocustomer.CustomerStatusResult{
    42  		IsLoggedIn: true,
    43  		UserID:     userID,
    44  	}, nil
    45  }
    46  
    47  // CommerceCustomer resolver the commerce customer
    48  func (r *CustomerResolver) CommerceCustomer(ctx context.Context) (*dtocustomer.CustomerResult, error) {
    49  	user, err := r.service.GetForIdentity(ctx, web.RequestFromContext(ctx))
    50  	if errors.Is(err, application.ErrNoIdentity) {
    51  		return nil, nil
    52  	}
    53  
    54  	if err != nil {
    55  		return nil, err
    56  	}
    57  
    58  	result := &dtocustomer.CustomerResult{
    59  		ID:           user.GetID(),
    60  		PersonalData: user.GetPersonalData(),
    61  		Addresses:    user.GetAddresses(),
    62  	}
    63  
    64  	if address := user.GetDefaultShippingAddress(); address != nil {
    65  		result.DefaultShippingAddress = *address
    66  	}
    67  
    68  	if address := user.GetDefaultBillingAddress(); address != nil {
    69  		result.DefaultBillingAddress = *address
    70  	}
    71  
    72  	return result, nil
    73  }