Gdzie umieścić kod obsługi zamówień usera

0

Mam dwie klasy - CustomerService z logiką biznesową dotyczącą klienta (tworzenie usera, zmiana jego danych, pobieranie, kasacja itp.) i OrderService z ogólnymi metodami dotyczacymi zamówień.

W którym z tych serwisów umieścić metodę, która wyciąga zamówienia klienta o jakimś tam Id?
Metodę do tworzenia zamówień mam w sumie w OrderService

2

Stworzyć nowy serwis: CustoemrOrderService

0

Dzięki. A w sumie czemu tak?

0

Dzięki. A w sumie czemu tak?

@Hohensztapler: ponieważ nie chcesz mieszać domen a klasy powinny skupiać się na jednej domenie. Chociaż sugerowałbym bardziej wrzucić to w OrderSearchService, gdzie będziesz miał dodatkowe searche po dacie, po produkcie, po NIPie itd.

Na pewno nie chcesz tej metody w CustomerService. Jeżeli trzymasz id klienta w Orderze to tak naprawdę nie potrzebujesz ani obiektu klienta ani dostępu do kolekcji klientów. To co chcesz zrobić ogrnaicza się do selecta z tabelki orderów czyli wystarczyłoby _orderService.GetByCustomerId() bo dostęp do kolekcji orderów masz już w OrderService. Takie zapytanie warto jednak mieć gdzieś osobno gdybyś kiedyś chciał robić jakieś indeksy do wyszukiwania czy podpinał jakieś Apache Lucene czy Elastic Searcha czy jakieś inne cache robił.

Jeżeli masz trzy tabelki: Customer, Order, i CustomerOrder to zachodzi pytanie czy jeden order może mieć wielu Customerów? Jeżeli nie to relacja wiele do wielu jest zbędna i możesz upchnąć to w tabelce z Orderami. Choć w rzeczywistości będzie jeszcze inaczej więc dodatkowa historia: Order będzie miał (raczej dodatkowo niż zamiast ID klienta) ID do małej kopii klienta.

W większości systemów ecommerce Order będzie posiadał kopię danych klienta. Dlaczego? Bo klient może usunąć konto, a Ciebie prawo zobowiązuje do trzymania faktur/paragonów przez X lat. Bo klient może zmienić email, nip. nazwisko i nagle zmieniają Ci się dane Orderu, który przecież już kiedyś zaistniał.

Wyobraź sobie sytuację, że ktoś robi zamówienie z nipem/nazwiskiem A, potem zmienia nip/nazwisko, wchodzi w historię i nagle widzi, że stare zamówienia/faktury się zaktualizowały.

1 użytkowników online, w tym zalogowanych: 0, gości: 1