#pragma once #include #include #include namespace ts { namespace server { class TSServer; } namespace letter { struct LetterHeader { LetterId id; ClientUid sender; ClientUid receiver; std::chrono::time_point created; std::string subject; bool read; }; struct Letter : public LetterHeader { std::string message; }; class LetterManager { public: LetterManager(server::TSServer*); ~LetterManager(); size_t unread_letter_count(const ClientUid&); std::vector> avariableLetters(ClientUid); std::shared_ptr getFullLetter(LetterId); void updateReadFlag(LetterId, bool); void deleteLetter(LetterId); void createLetter(ClientUid sender, ClientUid reciver, std::string subject, std::string message); private: server::TSServer* server; }; } }