Abonamenty?

Domain Model

Customer

Jest to nasz klient, może być klientem biznesowym, indywidualnym lub anonimowym. Klient anonimowy nie posiada referencji do User, każdy inny powinien mieć przynajmniej jednego user'a w roli MasterCustomer?. Customer posiada kolekcję adresów, każdy użytkownik danej firmy może ustawić jeden z adresów jako swój domyślny w swoim profilu. Użytkownik danej firmy może także dodawać adresy dla firmy do której należy.

CustomerProfile? (TODO)

Globalne ustawienia dla modelu Customer, czyli firmy.

User

Użytkownik systemu, może być klientem, pracownikiem BOK jak i administratorem systemu. Każdy użytkownik posiada przynajmniej jedną rolę. Użytkownik posiada także swój profil, obecnie można tam ustawić domyślny język interfejsu oraz domyślny adres kontaktowy, który będzie używany w ogłoszeniach dodawanych przez tego użytkownika.

UserProfile?

Tu zapisywany jest profil użytkownika - np. język interfejsu, adres kontaktowy dla ogłoszeń

Role

Role, prawa użytkownika. Każdy użytkownik powinien posiadać przynajmniej jedną rolę, może ich mieć kilka. Obecne role to:

  • Administrator - najwyższe prawa - generalnie dla działu IT
  • CallCenter? - osoby należące do BOK
  • MasterCustomer? - użytkownik firmy, który ma możliwość dodawania nowych użytkowników dla swojej firmy.
  • Customer - standardowy użytkownik firmy, posiada możliwość dodawania ogłoszeń w imieniu swojej firmy.

Category

Kategoria, do której można zakwalifikować ogłoszenie. Posiada kolekcję parametrów, marek oraz modeli. Marki i modele można zdefiniować niezależnie dla każdej kategorii. Marki i modele są opcjonalne, kategoria nie musi posiadać marek i modeli. Kolekcja parametrów jest unikalna dla każdej kategorii. Każdemu parametrowi dla danej kategorii można przydzielić grupę (Group) oraz zdefiniować czy jest on wymagany (walidacja) oraz czy może być używany jako filtr do zawężania wyników wyszukiwania.

Parameter

Posiada referencję do pola (Field) oraz informację czy jest wymagany, do jakiej grupy należy i czy jest filtrem wyszukiwania.

Field

Pole na formularzu, np. moc (jako input), opcja wyposażenia - ABS (checkbox) itd. Pole może być przypisane do wielu kategorii - za pomocą parametru. Wartość danego pola można określić w jednostkach (Unit), np. moc może być podana w kW lub KM. Gdy pole jest typu Select - można określić zestaw dopuszczalnych wartości dla tego pola - OptionItems?. Pole posiada właściwość DataType?, które może być:

  • Boolean = 1,
  • DateTime? = 2,
  • Decimal = 3,
  • Double = 4,
  • Int32 = 5,
  • String = 6

Pole posiada właściwość ControlType?, które może być:

Unit

Jednostka, za pomocą której można wyrazić wartość w danym polu (Field).

OptionItem?

Jedna z dopuszczalnych wartości dla pola typu Select

Ogłoszenie, należy do jednej z kategorii, należy do jednej z firm (Customer), posiada dane kontaktowe (Address), opis, cenę, walutę, markę, model. Posiada kolekcję obiektów typu AdDetail?, gdzie znajdują się wartości każdego z parametrów, które zostały wypełnione przez użytkownika, który dodawał to ogłoszenie. Posiada kolekcję zdjęć (Image).