// Code generated by msgraph-generate.go DO NOT EDIT.

package msgraph

import "context"

// ProgramRequestBuilder is request builder for Program
type ProgramRequestBuilder struct{ BaseRequestBuilder }

// Request returns ProgramRequest
func (b *ProgramRequestBuilder) Request() *ProgramRequest {
	return &ProgramRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
	}
}

// ProgramRequest is request for Program
type ProgramRequest struct{ BaseRequest }

// Get performs GET request for Program
func (r *ProgramRequest) Get(ctx context.Context) (resObj *Program, err error) {
	var query string
	if r.query != nil {
		query = "?" + r.query.Encode()
	}
	err = r.JSONRequest(ctx, "GET", query, nil, &resObj)
	return
}

// Update performs PATCH request for Program
func (r *ProgramRequest) Update(ctx context.Context, reqObj *Program) error {
	return r.JSONRequest(ctx, "PATCH", "", reqObj, nil)
}

// Delete performs DELETE request for Program
func (r *ProgramRequest) Delete(ctx context.Context) error {
	return r.JSONRequest(ctx, "DELETE", "", nil, nil)
}

// ProgramControlRequestBuilder is request builder for ProgramControl
type ProgramControlRequestBuilder struct{ BaseRequestBuilder }

// Request returns ProgramControlRequest
func (b *ProgramControlRequestBuilder) Request() *ProgramControlRequest {
	return &ProgramControlRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
	}
}

// ProgramControlRequest is request for ProgramControl
type ProgramControlRequest struct{ BaseRequest }

// Get performs GET request for ProgramControl
func (r *ProgramControlRequest) Get(ctx context.Context) (resObj *ProgramControl, err error) {
	var query string
	if r.query != nil {
		query = "?" + r.query.Encode()
	}
	err = r.JSONRequest(ctx, "GET", query, nil, &resObj)
	return
}

// Update performs PATCH request for ProgramControl
func (r *ProgramControlRequest) Update(ctx context.Context, reqObj *ProgramControl) error {
	return r.JSONRequest(ctx, "PATCH", "", reqObj, nil)
}

// Delete performs DELETE request for ProgramControl
func (r *ProgramControlRequest) Delete(ctx context.Context) error {
	return r.JSONRequest(ctx, "DELETE", "", nil, nil)
}

// ProgramControlTypeRequestBuilder is request builder for ProgramControlType
type ProgramControlTypeRequestBuilder struct{ BaseRequestBuilder }

// Request returns ProgramControlTypeRequest
func (b *ProgramControlTypeRequestBuilder) Request() *ProgramControlTypeRequest {
	return &ProgramControlTypeRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
	}
}

// ProgramControlTypeRequest is request for ProgramControlType
type ProgramControlTypeRequest struct{ BaseRequest }

// Get performs GET request for ProgramControlType
func (r *ProgramControlTypeRequest) Get(ctx context.Context) (resObj *ProgramControlType, err error) {
	var query string
	if r.query != nil {
		query = "?" + r.query.Encode()
	}
	err = r.JSONRequest(ctx, "GET", query, nil, &resObj)
	return
}

// Update performs PATCH request for ProgramControlType
func (r *ProgramControlTypeRequest) Update(ctx context.Context, reqObj *ProgramControlType) error {
	return r.JSONRequest(ctx, "PATCH", "", reqObj, nil)
}

// Delete performs DELETE request for ProgramControlType
func (r *ProgramControlTypeRequest) Delete(ctx context.Context) error {
	return r.JSONRequest(ctx, "DELETE", "", nil, nil)
}