package v1

import (
	"context"

	http_server "gitlab.golang-school.ru/potok-2/lessons/lesson-24/gen/http/profile_v1/server"
	"gitlab.golang-school.ru/potok-2/lessons/lesson-24/internal/dto"
	"gitlab.golang-school.ru/potok-2/lessons/lesson-24/pkg/render"
)

func (h *Handlers) UpdateProfile(ctx context.Context, request http_server.UpdateProfileRequestObject,
) (http_server.UpdateProfileResponseObject, error) {
	input := dto.UpdateProfileInput{
		ID:             request.Body.ID.String(),
		Name:           request.Body.Name,
		Age:            request.Body.Age,
		Email:          request.Body.Email,
		Phone:          request.Body.Phone,
		IdempotencyKey: request.Body.IdempotencyKey,
	}

	err := h.usecase.UpdateProfile(ctx, input)
	if err != nil {
		err = render.Error(ctx, err, "request failed")

		return http_server.UpdateProfile400JSONResponse{Error: err.Error()}, err
	}

	return http_server.UpdateProfile204Response{}, err
}
