Flashcard Submission - #216
Conversation
…me and flashcard id
Dejmenek
left a comment
There was a problem hiding this comment.
Hey @Esaiy 👋,
First of all, we're really sorry that you had to wait such a long time for your project to be reviewed 😔. I've reviewed it now, and I have to say it looks fantastic 😁. Thank you for your patience and for putting so much effort into it.
🟢 Your project meets all the requirements🎉
🟢 Good separation of responsibilities by splitting the logic into controllers, services, and repositories.
🟢 Nice use of the Fisher-Yates shuffle algorithm to randomize the order of cards when studying a stack of flashcards.
⭐ Well done on completing half of the monthly study session reports. You've correctly implemented the average score per month report. The only missing part is the report showing the number of study sessions per month.
Suggestions
I've left some comments with suggestions and ideas for improvement👍
🟡 When there are no stacks and I try to study or manage flashcards, there is no visible feedback explaining that this action cannot be performed. The message disappears too quickly without giving the user enough time to read it.
I've seen you had a problem with looking through exceptions for SqlClient. Yeah, unfortunately that's pretty common with SqlClient. It usually exposes a single SqlException type, and you need to inspect properties to determine the specific SQL Server error. The exception numbers can feel a bit messy because SQL Server uses them to represent different errors.
The same approach applies to other database providers as well. For example, SQLite has its own exception type and error codes, so handling specific database errors usually requires checking provider-specific values.
I'll mark your project as approved✔. Keep up the great work!
| WHERE YEAR(date) = @Year | ||
| AND stack.id = @Id | ||
| ) AS src | ||
| PIVOT |
There was a problem hiding this comment.
🟡 The average score is calculated as a SQL float, but it is mapped to an int in ReportDTO, which means the decimal part could be truncated and the results may lose precision.
No description provided.