#pragma once #include "domain/entities/Item.h" #include "domain/polices/ItemExpirationPolicy.h" #include "application/interfaces/IItemRepository.h" #include "application/interfaces/IClock.h" #include "application/interfaces/IOrderService.h" namespace nxl::autostore::application { class AddItem { public: virtual ~AddItem() = default; AddItem(IItemRepository& itemRepository, IClock& clock, IOrderService& orderService); domain::Item::Id_t execute(domain::Item&& item); private: IItemRepository& itemRepository; IClock& clock; IOrderService& orderService; domain::ItemExpirationPolicy expirationPolicy; }; } // namespace nxl::autostore::application