alexanderjdupree / chocan Goto Github PK
View Code? Open in Web Editor NEWCS300 Group Project - Data processing app for Chocoholic Anonymous medical services.
License: MIT License
CS300 Group Project - Data processing app for Chocoholic Anonymous medical services.
License: MIT License
Actors: Manager
Use Case Overview: The manager wishes to see a summary of provider activity for the week.
Precondition: Manager is logged into the system.
Basic Flow:
Currently Circle CI only runs continuous integration on the GCC compiler, we should add a build job to the Circle CI configuration file to run a job on the Clang compiler as well. This is an entirely optional feature, but it would be nice to know that the project is supported across multiple platforms.
Actors: Provider or Manager
Use Case Overview: Provider or Manager will update or edit a record.
Precondition: Member has their membership card and a Provider or Manager is logged into the system.
Basic Flow:
Alternative Flow 1:
Recommend we switch the datetime primitive type wrappers to the std::chrono libraries duration types. These types provide strong type safety (which was a requirement of the datetime library) without any excess boiler plate code. Furthermore, duration types provide easy methods for converting into other duration types. Like converting years to days to hours to minutes etc.
More on the benefits of std::chrono can be found here.
https://www.youtube.com/watch?v=P32hvk8b13M&t=336s
A cursory glance of your SQLite code shows that SQL injection is possible:
Line 66 in 4bf47e1
Since you are concatenating user data with the queries the input could contain malicious code. To avoid this, you should be using prepared statements.
Currently, if we enter Ctrl+D at any point in the application the application will be sent into an infinite loop. I believe this is because Ctrl+D sends an EOF character to STDIN and the Terminal Input Controller does not seem to discard this character from the stream. So we need to refactor the Terminal_Input_Controller.hpp file to check for EOF, or somehow discard that character from the stream.
This is the current algorithm for generating unique ID's:
unsigned ID_Generator::yield() const
{
int id = 111111110;
while(database->id_exists(++id));
return id;
}
Essentially it says 'find the first 9 digit id that isn't taken by counting up from 111111111'. This sequential algorithm is O(N) and not great. So If someone wants to get rid of my quick prototype code with something more robust that'd be great.
As per the initial requirements document, for the add transaction part of the app we need to record the current time as (MM-DD-YYYY HH:MM:SS). Currently the DateTime object only has fields for Months, days, and years. We need to add these extra attributes to the date time object and create constructors for those fields.
We should run the system tests within Valgrind so we can have a printout of memory usage and ensure there are no memory leaks for the application.
It should be a simple enhancement, just add the call to valgrind
in the 'Run System Tests' section of the .circlci/config.yml
file.
The current version of the Catch2 testing framework in our repository is v2.9.2. Recommend we update to the latest version, v2.11.0 which offers a better reporter and bench-marking support.
Whoever wants to take this on just follow these simple directions:
git checkout -b update_catch2
catch.hpp
in the third_party/
folder with the latest versionCurrently, if you try to run the application outside of the repository root folder you won't be able to load the state views because the Terminal_State_Viewer uses relative paths. We need to update this to use absolute file paths so the application can find the views from anywhere in the file system. I am thinking that during the build phase we define an environment variable like "CHOCAN_VIEWS=[absolute path to views folder here]" and then prefix that variable to the view name.
Actors: Manager
Use Case Overview: The manager will delete a member or provider account.
Precondition: Manager is logged into the system
Basic Flow:
Actors: Manager
Use Case Overview: The manager will create a member account.
Precondition: Manager is logged into the system
Basic Flow:
Alternative Flow 1:
3. A1 - Incorrect information can be edited before account is finalized.
Since we're using C++17 language features, and build script itself has dependencies we should update it to be more robust. I propose the following features:
Actors: Provider, Member
Use Case Overview: Provider will add a service transaction to a members record.
Precondition: Provider is logged into the terminal
Basic Flow:
Alternative Flow 1:
Alternative Flow 2:
2. A1- Provider enters a non existent service number, error message is displayed then loop.
Actors: Member, Provider or Manager
Use Case Overview: Provider or Manager may view a member’s record.
Precondition: A provider or manager is logged into the system
Basic Flow:
Alternative Flow 1:
Alternative Flow 2:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.