add quick leads
All checks were successful
Build and Publish / build-release (push) Successful in 2m13s
All checks were successful
Build and Publish / build-release (push) Successful in 2m13s
This commit is contained in:
@@ -2,19 +2,25 @@ defmodule CustomerServiceWeb.CustomerController do
|
||||
use CustomerServiceWeb, :controller
|
||||
use OpenApiSpex.ControllerSpecs
|
||||
|
||||
alias CustomerService.Commands.{CreateCustomer, CreateCorporateCustomer}
|
||||
alias CustomerService.Commands.{
|
||||
CreateCustomer,
|
||||
CreateCorporateCustomer,
|
||||
UpdateCustomer,
|
||||
UpdateCorporateCustomer
|
||||
}
|
||||
|
||||
alias CustomerService.Customer.Queries, as: CustomerQueries
|
||||
alias CustomerServiceWeb.Schemas.Customer, as: CustomerSchemas
|
||||
alias CustomerServiceWeb.QueryHelpers
|
||||
|
||||
operation(:index,
|
||||
summary: "List customers",
|
||||
parameters: [
|
||||
"page[number]": [in: :query, type: :integer, required: false],
|
||||
"page[size]": [in: :query, type: :integer, required: false],
|
||||
"filters[0][field]": [in: :query, type: :string, required: false],
|
||||
"filters[0][op]": [in: :query, type: :string, required: false],
|
||||
"filters[0][value]": [in: :query, type: :string, required: false]
|
||||
],
|
||||
parameters:
|
||||
QueryHelpers.flop([:customer_type, :email, :phone, :document_id, :ruc, :search], [
|
||||
:last_name,
|
||||
:legal_name,
|
||||
:inserted_at
|
||||
]),
|
||||
responses: [
|
||||
ok: {"Customer list", "application/json", CustomerSchemas.CustomerListResponse}
|
||||
]
|
||||
@@ -119,6 +125,63 @@ defmodule CustomerServiceWeb.CustomerController do
|
||||
dispatch_and_return(conn, command, customer_id)
|
||||
end
|
||||
|
||||
operation(:update,
|
||||
summary: "Update individual customer",
|
||||
parameters: [
|
||||
id: [in: :path, type: :string, required: true, description: "Customer ID"]
|
||||
],
|
||||
request_body:
|
||||
{"Customer data", "application/json", CustomerSchemas.UpdateCustomer, required: true},
|
||||
responses: [
|
||||
ok: {"Customer updated", "application/json", CustomerSchemas.CustomerResponse}
|
||||
]
|
||||
)
|
||||
|
||||
def update(conn, %{"id" => id} = params) do
|
||||
command = %UpdateCustomer{
|
||||
id: id,
|
||||
first_name: params["first_name"],
|
||||
last_name: params["last_name"],
|
||||
birth_date: parse_date(params["birth_date"]),
|
||||
gender: params["gender"],
|
||||
email: params["email"],
|
||||
phone: params["phone"],
|
||||
document_id: params["document_id"],
|
||||
address: params["address"]
|
||||
}
|
||||
|
||||
dispatch_and_return(conn, command, id)
|
||||
end
|
||||
|
||||
operation(:update_corporate,
|
||||
summary: "Update corporate customer",
|
||||
parameters: [
|
||||
id: [in: :path, type: :string, required: true, description: "Customer ID"]
|
||||
],
|
||||
request_body:
|
||||
{"Corporate customer data", "application/json", CustomerSchemas.UpdateCorporateCustomer,
|
||||
required: true},
|
||||
responses: [
|
||||
ok: {"Corporate customer updated", "application/json", CustomerSchemas.CustomerResponse}
|
||||
]
|
||||
)
|
||||
|
||||
def update_corporate(conn, %{"id" => id} = params) do
|
||||
command = %UpdateCorporateCustomer{
|
||||
id: id,
|
||||
legal_name: params["legal_name"],
|
||||
commercial_name: params["commercial_name"],
|
||||
ruc: params["ruc"],
|
||||
legal_rep_name: params["legal_rep_name"],
|
||||
legal_rep_document_id: params["legal_rep_document_id"],
|
||||
email: params["email"],
|
||||
phone: params["phone"],
|
||||
address: params["address"]
|
||||
}
|
||||
|
||||
dispatch_and_return(conn, command, id)
|
||||
end
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Private
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user