Mirabito - Aydin Demir; Mert Aydemir, Ayberk Aykut, Baris Turgay

From CS486wiki
Jump to navigationJump to search

Week 1

Date: 01/29/2023

Attendance: Ayberk Can Aykut, Aydın Can Demir, Necati Mert Aydemir, Barış Turgay


Summary of the work in the winter internship:

- Timesheet entries table was divided into week pairs. Work period tables were created for Week Pairs.
- A work period control system was created, where employees can confirm their working hours and send them to supervisors, and supervisors can approve then send them to HR. Badges and snackbars are used for notification system.
- Input fields, input formatting, fool proofs are improved, general css and materials are improved. 
- For Mobile and Tablet compatibility, different input and pop up screens have been created according to the screen size. 
- The identity framework structure has been implemented. New authentication functions and controllers have been created on the backend. New login page, guard and authentication structures have been created on the frontend. 
- HR user role and HR view have been created. 
- All CRUD operations have been created for timesheet entry editing.

Accomplishments:

- Our first meeting was held with the participation of Brent and our new teammate Barış.
- The problem of angular command system not working during the presentation last week has been resolved.
- Npm package dependency problem has been solved which we were dealing with for a long time. The latest version of the project was uploaded to the repository. The latest version of the work is available in sourcetree on the development branch. 
- Mert installed it on his computer and started working latest version of controllers and database.
- Aydın examined the final version of the project and learned about the styling changes. We reviewed the final version of the project together.
- Barış set up Visual Studio 2022, .NET 6 SDK, Angular and checked some tutorials for .NET Entity Framework and Angular as requested.

Problems:

- We have problem about sharing project with Barış because the repository admin is Abhineet. Baris is currently working on web development without code. We will contact Abhineet as soon as possible and solve this issue.

To-Do:

- The second meeting will be hold 02/03/2022 (on Friday).
- We will contact Abhineet as soon as possible to solve the repository issue.
- We will work to understand the changes and the latest version of the project.
- The Progress of the project and the features that can be added will be discussed during this week.


Week 2

Date: 02/05/2023

Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir


Accomplishments:

- After our meeting this Friday, we have a general outline of what is needed to be done.
- Everyone has access to the repository now.
- Changes Ayberk did on his winter internship were studied and everyone has an understanding of what features were added.
- For the timesheet view, employee id and week pair information were given to the route and different initialization was provided. In this way, it will be possible to separate HR and Manager view written in the same component by using different routes, and general view and statistics page for Managers will be created.
- Sign up component and page were created. Sign Up page has been coded for new users, which allows creating users directly. In this way, Barış's general knowledge about the project and its operation was developed.
- While opening the backend solution file on Baris's computer, he was encountering the problem value does not within the expected range. This problem was fixed by cloning the latest version of the development repository back to the computer.

Problems:

- There are security issues about newly created timesheet routes. A page appears in front of people who write the route even though they are not authorized. For this, we will either do an in component check or a new guard will be created.

To-Do:

- The role structure of the users will be modified in a way that every user can have one or more roles. Every user will be assigned the role of "User" and they can have the roles "Manager" and "HR" as well.
- Depending on the user's roles, they will have access to the default employee TimeSheet view, Manager view, and HR view.
- Database tables will be updated to support multiple roles, department ids, and User->Manager->HR relations (who is assigned to who).
- We will have a weekly view and biweekly view options (right now, we only support biweekly).
- Registration screen in front-end for testing (also an onboarding for Barış).


Week 3

Date: 02/12/2023

Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir


Accomplishments:

- Multiple roles are now available. Before that, a user could only have the role "User", "Manager" or "HR". These roles had attributes assigned to them like a "User" can have TimeSheets, and a Manager has subordinates and can approve their subordinates' WorkPeriod data. Since there are cases where a Manager or an HR operative might have their TimeSheets or an HR operative is also a Manager and have to approve their subordinates, we decided to allow multiple roles for every employee. This is the groundwork for another feature that we are requested to add: separate components/tabs for each role view.
- Some little API calls are added like AssignRole, RevertRole, NullifyAssignedManager, UpdateMirabitoId.
- Some changes in the backend was done. Changes consist of refactors and logic changes. For example, we started using Identity Framework built-in functions for Role manipulations rather than directly checking.
- Introducing MirabitoID. For the Employee table in our database, we had 2 id attributes (EmployeeId, UserId) to differentiate the employee. EmployeeId, a primary key that is used to identify individual employees within our system. UserId, which was introduced with the Identity Framework, is generally used for authentication and authorization logic. Another ID number was requested which would serve the purpose of the actual Identification Number of the employees working for Mirabito. The new ID we created is called MirabitoID. It is unique, nullable, and has a 16-character limit. The constraint is bound to change since we don't know the details regarding the actual id itself.
- Changes on registration. Some API calls slightly changed and waiting for integration with the front end. Some testing might be needed in the future.

Problems:

- We are suspecting some bugs after integration since structural changes are typical for their unexpected errors.

To-Do:

- Separating components/tabs for Personal TimeSheet View, Manager View, and HR View.
- Database tables will be updated to support multiple roles, department ids, and User->Manager->HR relations (who is assigned to who).
- We will have a weekly view and biweekly view options (right now, we only support biweekly).
- Sort by department, and sort by manager filters in the summary screens. Visual representation of the data.
- Security issues regarding URL access will be fixed.
- User, Manager, and HR view rework in the frontend.
- Current hours/Total hours


Week 4

Date: 02/19/2023

Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir

Accomplishments:

- GetFilteredWorkPeriods call added. It takes 4 parameters (will take 1 more in the future). 2 of the parameters are for filtering and the other 2 are for pagination. Parameters are the following: filterId1: (0, no filter), (1: filter by employeeId), (2: filter by departmentId), (3: filter by manager's employeeId). filterId2: basically the id depending on your filterId1. rowCount: the number of rows you want to get. pageNum: for which page (STARTS FROM 0)
- WorkPeriod has its controller now. Some of the API calls were in the MasterCalendar controller. They were copied into the new WorkPeriodController but their initial copies are left with a LEGACY mark on them. They will be deleted when every occurrence of these calls is deleted from the front end.
- Added department id to the employee table so that we can filter by department id.
- WorkPeriod row creation bugfix. There was a bug introduced with the registration rework regarding the Employee Id assignment on new WorkPeriods but the bug is fixed with the latest changes.
- Security problem solved. With the authorization information from the backend controller, the guard at the front-end is activated and the validity of week pair and authorization of the directly typed URLs are checked.
- In order to print the timesheet entry information on the screen, the print icon has been fixed in the lower right corner which takes the direct output of the screen.

Problems:

- An API call fails in HR's pending timesheets page. It will be checked.
- Some bugs might appear while integrating.

To-Do:

- Filter WorkPeriods based on their activity state.
- Some legacy API calls should be changed with their new versions in the front end.
- We will have a weekly view and biweekly view options (right now, we only support biweekly).
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data.
- User, Manager, and HR view rework in the front end.
- Current hours/Total hours
- Instead of the print button, which takes the direct output of the screen, output in csv format can be created in the future.


Week 5

Date: 02/26/2023

Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir

Accomplishments:

- Added the pagination feature on GetFilteredWorkPeriods even no filter is selected.
- Legacy is API calls are replaced with their new alternatives in the frond-end, waiting to be pushed. 
- Some replaced API calls are deleted from the back-end.
- CheckUserRole API call that checks if a user has the given role.
- The bug that resets the UserRoleIds is fixed. Turns out we had to hard code the UserRoleIds so that Entity Framework will know what to write to the DB rather than guessing on its own.
- Unused Models and Tables are deleted. Back-end is cleaner.

Problems:

- No?

To-Do:

- API call security
- Filter WorkPeriods based on their activity state (Pending, accepted, declined).
- We will have a weekly view and biweekly view options (right now, we only support biweekly).
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data.
- User, Manager, and HR view rework in the front end.
- Current hours/Total hours
- Instead of the print button, which takes the direct output of the screen, output in csv format can be created in the future.