This console app provides CRUD operations to the Coding Session database and Coding Goals database. I have used following directives: SpectreConsole for beautifying the console, Dapperfor database operations.
- Coding Tracker: Contains the CodingController class which is responsible for maintaning the flow of the program.
- Coding Session: Contains the UserInput class which is responsible for the taking the input of the user Contains the CodeSession Database Model class, which contains following attributes: id, startTime, endTime, codingGoal
- Coding Goal: Contains the CodingGoal Database Model class, which contains following attributes: id, codingGoal, codingTask, startDate, endDate
- CodingTrackerDatabaseLibrary: Contains the GoalsDatabase and SessionDatabase class which performs database operations using Dapper ORM for goals and session database.
- App.exe.config: Stores connection strings for the Goals and Sessions database.
- The CodingController class presents the user with a main menu providing options to interact with the databases. There are two databases: SessionDatabase (stores the user's coding session info) and GoalsDatabase (stores the user's coding goals and their expected completion dates).
- CRUD operations are provided for both databases. While inserting data into the tables, validation is performed in their respective model classes. When inserting into the session table, a stopwatch is implemented to track the user's coding session.
- The menu also provides options to filter sessions based on days, months, and years.
- A progress tracking functionality is also provided to monitor how much of the goal has been achieved during a coding session and how many hours per day the user needs to work to complete the goal within the end date given by the user.