douglara / woofed-crm

109 stars 29 forks source link

Feat: Custom field improvement #328

Open hsolrac opened 2 months ago

hsolrac commented 2 months ago

290

Adiciona melhoria para escolher o tipo do campo no cadastro de atributos customizados..

Atualmente suportando:

YukioArie commented 2 months ago

Encontrei um problema. Quando utilizo um campo select, ele n guarda no jsonb custom attributes do contato, o valor key do custom attribute, ele guarda o tipo do campo do custom_attribute, como nessa situação:

irb(main):028> Contact.last
  Contact Load (1.0ms)  SELECT "contacts".* FROM "contacts" ORDER BY "contacts"."id" DESC LIMIT $1  [["LIMIT", 1]]
=>
#<Contact:0x0000563c818cf050
 id: 572,
 account_id: 1,
 full_name: "qwerty",
 phone: "",
 email: "qwerty@email.com",
 custom_attributes:
  {"data_key"=>"[FILTERED]", "moeda_key"=>"[FILTERED]", "texto_key"=>"[FILTERED]", "select_custom"=>"100"},
 additional_attributes: {"chatwoot_id"=>6846},
 app_type: nil,
 app_id: nil,
 created_at: Wed, 22 May 2024 14:41:57.337304000 -03 -03:00,
 updated_at: Wed, 22 May 2024 14:53:22.070167000 -03 -03:00,
 label_list: nil,
 chatwoot_conversations_label_list: nil>

Vc ve que na linha: {"data_key"=>"[FILTERED]", "moeda_key"=>"[FILTERED]", "texto_key"=>"[FILTERED]", "select_custom"=>"100"}, todos estão guardando corretamente com o key no final, menos o campo select, q ta como select_custom. Todos os campos customizaveis eu armazenei o attribute_key com o nome do display, + o _key no final. Isso acaba sendo um problema, pq se tivermos 2 campos selects diferentes no contato, ele irão armazenar no jsonb no contato com o mesmo valor na key.