2#include <NDEVR/Model.h>
4#include <NDEVR/Translator.h>
11 class ContactName :
public Model
20 ContactName(
const Model& model)
24 if (!is<NDPN::type>(TypeName()))
27 set<NDPN::type>(TypeName());
34 void setContact(
const StringView& name)
36 set<NDPO::untranslated_string_data>(name);
42 StringView getContact()
const
44 return get<NDPO::untranslated_string_data>();
50 static constexpr const char* ValidRegex() {
return "(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+"; }
55 static constexpr const char* TypeName() {
return "contact_name"; }
61 class TelephoneNumber :
public Model
70 TelephoneNumber(
const Model& model)
75 if (!is<NDPN::type>(TypeName()))
78 set<NDPN::type>(TypeName());
79 set<NDPOC::name>(_t(
"Mobile"));
80 set<NDPO::icon>(
"mobile");
87 StringView phoneNumber()
const
89 return get<NDPO::untranslated_string_data>();
96 void updatePhoneNumber(
const StringView& phone_number,
const void* lock_ptr =
nullptr)
98 update<NDPO::untranslated_string_data>(phone_number, lock_ptr);
104 StringView phoneNumberName()
const
106 return get<NDPO::name>();
113 void updatePhoneNumberName(
const StringView& phone_number_name,
const void* lock_ptr =
nullptr)
115 update<NDPO::name>(phone_number_name, lock_ptr);
121 static constexpr StringView ValidRegex() {
return "sad"; }
126 static constexpr StringView TypeName() {
return "telephone_number"; }
135 class PhysicalAddressModel :
public Model
144 PhysicalAddressModel(
const Model& model)
147 if (get<NDPN::type>() != TypeName())
149 set<NDPN::type>(TypeName());
150 setAddress(
"\t\t\t");
151 set<NDPOC::name>(_t(
"Address"));
152 set<NDPO::icon>(
"pin");
159 StringView address()
const
161 return get<NDPO::untranslated_string_data>();
170 void setAddress(
const StringView& address)
172 lib_assert(address.count(
'\t') == 3,
"Bad Address");
173 if (address.count(
'\t') == 3)
174 update<NDPO::untranslated_string_data>(address);
180 StringView streetAddress()
const
182 StringView address = get<NDPO::untranslated_string_data>();
183 return address.split(
'\t')[0];
189 void setStreetAddress(
const StringView& street)
191 String current_data(get<NDPO::untranslated_string_data>());
192 Buffer<StringView> parts = current_data.split(
'\t');
193 lib_assert(parts.size() == 4,
"Bad Address");
194 current_data.clear();
195 for (uint04 i = 0; i < parts.size(); i++)
198 current_data += street;
200 current_data += parts[i];
202 current_data +=
"\t";
204 setAddress(current_data);
210 StringView city()
const
212 StringView s = get<NDPO::untranslated_string_data>();
213 if (s.contains(
'\t'))
214 return s.split(
'\t')[1];
222 void setCity(
const StringView& city)
224 String current_data(get<NDPO::untranslated_string_data>());
225 Buffer<StringView> parts = current_data.split(
'\t');
226 lib_assert(parts.size() == 4,
"Bad Address");
227 current_data.clear();
228 for (uint04 i = 0; i < parts.size(); i++)
231 current_data += city;
233 current_data += parts[i];
235 current_data +=
"\t";
237 setAddress(current_data);
246 StringView s = get<NDPO::untranslated_string_data>();
247 if (s.count(
'\t') >= 2)
248 return String(s.split(
'\t')[2]);
256 void setState(
const StringView& state)
258 StringView current_data(get<NDPO::untranslated_string_data>());
259 Buffer<StringView> parts = current_data.split(
'\t');
260 lib_assert(parts.size() == 4,
"Bad Address");
262 for (uint04 i = 0; i < parts.size(); i++)
267 all_data += parts[i];
271 setAddress(all_data);
278 StringView zipCode()
const
280 StringView s = get<NDPO::untranslated_string_data>();
281 if (s.count(
'\t') >= 3)
282 return s.split(
'\t')[3];
290 void setZipCode(
const StringView& zip)
292 StringView current_data = get<NDPO::untranslated_string_data>();
293 Buffer<StringView> parts = current_data.split(
'\t');
294 lib_assert(parts.size() == 4,
"Bad Address");
296 for (uint04 i = 0; i < parts.size(); i++)
301 all_data += parts[i];
305 setAddress(all_data);
311 static constexpr const char* TypeName() {
return "physical_address"; }
317 class EmailAddress :
public Model
326 EmailAddress(
const Model& model)
329 if (!is<NDPN::type>(TypeName()))
332 set<NDPN::type>(TypeName());
339 static constexpr const char* TypeName() {
return "email_address"; }
344 void setEmail(
const StringView& email)
346 set<NDPO::untranslated_string_data>(email);
352 StringView getEmail()
const
354 return get<NDPO::untranslated_string_data>();
361 class CompanyName :
public Model
370 CompanyName(
const Model& model)
373 if (!is<NDPN::type>(TypeName()))
376 set<NDPN::type>(TypeName());
383 void setCompany(
const StringView& companyName)
385 set<NDPO::untranslated_string_data>(companyName);
391 StringView getCompany()
const
393 return get<NDPO::untranslated_string_data>();
399 static constexpr const char* TypeName() {
return "company_name"; }
405 class CompanyRole :
public Model
414 CompanyRole(
const Model& model)
417 if (!is<NDPN::type>(TypeName()))
420 set<NDPN::type>(TypeName());
427 void setCompanyRole(
const StringView& role)
429 set<NDPO::untranslated_string_data>(role);
435 StringView getCompanyRole()
const
437 return get<NDPO::untranslated_string_data>();
443 static constexpr const char* TypeName() {
return "company_role"; }
451 class ContactInfo :
public Model
461 ContactInfo(
const Model& model)
464 if (!is<NDPN::type>(TypeName()))
468 set<NDPN::type>(TypeName());
469 set<NDPOC::name>(_t(
"Contact"));
476 ContactName contactName()
478 return ContactName(getChild(0));
484 TelephoneNumber telephoneNumber()
486 return TelephoneNumber(getChild(1));
492 EmailAddress emailAddress()
494 return EmailAddress(getChild(2));
500 CompanyName companyName()
502 return CompanyName(getChild(3));
508 CompanyRole companyRole()
510 return CompanyRole(getChild(4));
516 static constexpr const char* TypeName() {
return "contact_info"; }
A core class that represents a node on model hierarchy.
The primary namespace for the NDEVR SDK.