#ifndef PASSWORD_H_ #define PASSWORD_H_ #include #include #include"Encryption.h" #include"FileNameRetrieval.h" #include"GeneratePasswordFileName.h" #include"TimeInformation.h" template class Password : public TimeInformation { S filename; const S passwordDirectory{FolderStructure::passwordDirectory}; S encryptedMessage; S decryptedMessage; int year, month, day; public: Password(); Password(const S&); friend class Encryption; void setupEncryptedMessage(const S&); void setupDecryptedMessage(const S&); void setupPasswordFilename(); void setupPasswordFilename(const S&); void setupDate(); S retrieveEncryptedMessage() const; S retrieveDecryptedMessage() const; S passwordFilename() const; S passwordPath() const; bool repetitive(); }; template Password::Password() { setupPasswordFilename(); } template Password::Password(const S& filename) : filename(filename) { } template void Password::setupEncryptedMessage(const S& pass) { encryptedMessage.assign(pass); } template void Password::setupDecryptedMessage(const S& pass) { decryptedMessage.assign(pass); } template void Password::setupPasswordFilename() { for (auto passwordNameDoesNotExist = true; passwordNameDoesNotExist; passwordNameDoesNotExist = repetitive()) { GeneratePasswordFileName gp{}; year = gp.retrieveYear(); month = gp.retrieveMonth(); dayOfMonth = gp.retrieveDayOfMonth(); filename.assign(gp.passwordFileNameString()); } } template void Password::setupPasswordFilename(const S& fin) { for (auto passwordNameDoesNotExist = true; passwordNameDoesNotExist; passwordNameDoesNotExist = repetitive()) { filename.assign(fin); } } template S Password::retrieveEncryptedMessage() const { return encryptedMessage; } template S Password::retrieveDecryptedMessage() const { return decryptedMessage; } template S Password::passwordFilename() const { return filename; } template S Password::passwordPath() const { return passwordDirectory + filename; } template bool Password::repetitive() { filename.append(".txt"); FileNameRetrieval fnr; fnr.retrievePasswordNames(); vector createdPasswordNames{fnr.passwordNameContainer()}; auto count = 0; for (auto cPNBegin = createdPasswordNames.begin(); cPNBegin!=createdPasswordNames.end(); ++cPNBegin) { if (filename.compare(*cPNBegin)==0) ++count; if (count>0) return true; } return false; } #endif