Mirabito - Aydin Demir; Mert Aydemir, Ayberk Aykut, Baris Turgay: Difference between revisions
| (39 intermediate revisions by the same user not shown) | |||
| Line 180: | Line 180: | ||
'''Accomplishments: ''' |
'''Accomplishments: ''' |
||
- Added the pagination feature on GetFilteredWorkPeriods even no filter is selected. |
- Added the pagination feature on GetFilteredWorkPeriods even if no filter is selected. |
||
- Legacy |
- Legacy 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 hardcode 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. The back-end is cleaner. |
|||
- Users directed to a different link with the timesheet period and employee id parameters (selected in the dropdown). The confusion of accessing more than one image over the same link has been avoided. In-app navigation became easier. |
|||
- The problem in the API call in the work periods waiting to be approved table for HR has been resolved. |
|||
- Database has been updated. After the last back end changes, a new mock user data was created. All modified API calls were tested. |
|||
'''Problems: ''' |
'''Problems: ''' |
||
- Baris changed his broken computer with new one. We have downloaded development environment, but we encounter errors while updating the database and installing the required dependency packages. We will solve it as soon as possible and try to be on the same page. |
|||
- No? |
|||
'''To-Do: ''' |
'''To-Do: ''' |
||
- API call security |
|||
- Filter WorkPeriods based on their activity state (Pending, accepted, declined). |
- Filter WorkPeriods based on their activity state (Pending, accepted, declined). |
||
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
|||
- We will have a weekly view and biweekly view options (right now, we only support biweekly). |
|||
- 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 6 == |
|||
'''Date''': 03/05/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- '''GetFilteredWorkPeriods:''' Filter WorkPeriods based on their activity state (Pending, accepted, declined). If the input (filterId3) is less than 0, the filter is inactive. At first, I was thinking of first filtering based on the first 2 filterId inputs, then applying the 3rd filter input. However, since querying part by part might cause performance drainage, I tried to find a method to query every single filter element at once. One of the other problems I had to consider was the simplicity of the code. I could've considered copying and pasting code parts for every combination of (filterId1, filterId2) and (filterId3) but later I came up with a solution that generalized the filtering. So, the function is clean and relatively fast but might be hard to understand or debug. |
|||
- Introducing '''API call security on the backend'''. Some calls require certain roles to run successfully. It works fine on the client side. However, further modifications should be done with the SwaggerUI so that testing gets easier. |
|||
- Unnecessary API calls and loops have been removed on the front-end. Enabled to work faster than before. |
|||
- A column was added to the ''WorkPeriod table'' in the database, which keeps the '''regular working time''' of the employees in that work period. |
|||
- Necessary changes were made in the back-end in order to update the time value in the work period. '''ChangeWorkPeriod''' controller has been changed. |
|||
- A '''Time column has been added''' to the overview tables of HR and Managers so that the working hours can be seen more easily in the timesheets of Employees. WPToBeAccepted function in the front-end has been changed. Front-end management of ''multiple API calls'' is provided by using forkJoin structure. |
|||
'''Problems: ''' |
|||
- Due to the role based authorization, testing in SwaggerUI is harder now. |
|||
'''To-Do: ''' |
|||
- Sort WorkPeriods by dates. |
|||
- Modifying the SwaggerUI to run the API calls with role based authorizations. |
|||
- Further API call security |
|||
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
||
| Line 200: | Line 257: | ||
- Current hours/Total hours |
- Current hours/Total hours |
||
- Instead of the print button, which takes the direct output of the screen, output in |
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
||
== Week 7 == |
|||
'''Date''': 03/12/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- ''' User Profile ''' now the system have user profile. When user click on their name or their profile icon, they can access their personal profile. In their profile they can see their user ID's, their Managers Id's, capable of changing their profile picture/icon, and their first and last name and so on. |
|||
- '''Profile Pictures''' are supported in the backend. Given a file as an input, it is converted into a byte array and that array is stored inside the ProfilePicture table. The table consists of a Id (PrimaryKey), EmployeeId (unique), and a byte array. API calls are called GetProfilePicture and UploadProfilePicture. GetProfilePicture takes an employeeId as a parameter and returns the file. UploadProfilePicture takes the employeeId and the file object and changes/adds the profile picture of that given employee. However, a layer of security should be added like the file size, permissions and so on. |
|||
- The design document was prepared. The use case screenshots of the application, the features added over time and information about the development were given. Images from various devices are provided to demonstrate mobile compatibility. A diagram has been created for the simple routing map of the application. |
|||
- Task Current hours/Total hours is completed and can be displayed at manager table. |
|||
'''Problems: ''' |
|||
- Due to the role based authorization, testing in SwaggerUI is harder now. |
|||
- It was difficult to pull and push work simply because more than one person was developing at the same time. We spend effort to merge these branches. |
|||
'''To-Do: ''' |
|||
- Support for weekly workperiod view. |
|||
- Sort WorkPeriods by dates. |
|||
- Modifying the SwaggerUI to run the API calls with role based authorizations. |
|||
- Further API call security |
|||
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
|||
- User, Manager, and HR view rework in the front end. |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 8 == |
|||
'''Date''': 03/19/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- The problem with merging different branches has been fixed. Fixed some functionalities. The database was updated by running old migrations. |
|||
- After the repository was updated without any problems, all processes were tested for each role. |
|||
- '''SwaggerUI is testable for authentication''' now. In the backend, the file named Program.cs is changed. The functionality of Program.cs is to initialize some of the essential dependencies such as SwaggerUI and Identity Framework. A middleware that lets you do tests just like you have logged in to the system. Whenever you log in, a JWT token with an expiration date is generated. You can test API calls with security functionalities without needing the front end. It is a good way to test calls before integrating them with the front end. |
|||
- A '''new controller called Admin''' has been created. The calls in this controller will consist of manipulations that wouldn't be needed in the current state of the program. Some calls are moved to this controller. Other controllers are cleaner now. |
|||
- A component has been created where HR and Managers can see the work period data collectively. Instead of the individual view of the Timesheet view, a more general view and different functionalities have been created. |
|||
- A '''paginated workperiod table''' was created for the created overview component. A '''look up button''', which is a link to the timesheet view, has been added to look at each data entry in more detail. |
|||
- Functions have been created to ''manipulate data to display dates'' in a more readable way and null values more explanatory. |
|||
- While the data was being loaded at the very beginning, a '''loading spinner''' was added to let you know that the process is continuing. |
|||
- '''Filtering''' options according to Employee Id, Department Id and Manager Id have been added in order to examine the table in more detail. |
|||
- A login guard has been added to access the newly created component. |
|||
'''Problems: ''' |
|||
- Some calls should be changed in the back end and the front end for more security. Some bugs may appear if we fail to change them smoothly. |
|||
'''To-Do: ''' |
|||
- Working on search bar and filtering by words for an easier search. We can create a new pipe mechanism on the table to automatically update the dataSource and pagination. |
|||
- Security controls, role requirements and tabs for routing have not been created yet for the newly created overview component |
|||
- Support for weekly workperiod view. |
|||
- Sort WorkPeriods by dates. |
|||
- Further API call security |
|||
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 9 == |
|||
'''Date''': 03/26/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- '''Departments table and corresponding API calls have been added'''. The table only consists of a Department ID and a Department name. This table will be used in the front end for better visualization of the employee info. New calls are the following: '''UpdateEmployeeDepartmentId''', '''AddDepartment''', '''GetDepartmentById'''. Some of the calls have error checks in cases where the input is faulty. |
|||
- Changes in the '''GetFilteredWorkPeriods''' API call. Returned data are now sorted based on date, WorkPeriod data of HR employees are not shown, and future WorkPeriod data of the employees are not returned. Along with those changes, a huge refactoring in the function has been made. Since the call is rather critical and might need changes/additions to it, some adjustments regarding readability and maintainability have been made. |
|||
- ''Search bar'' is implemented. Search function searches the input value in the data loaded with the GetFilteredWorkPeriod API call. In this way, the desired data in the loaded data can be accessed quickly. The complexity of the search algorithm in the search bar function has been reduced. Faster search results can be reached. The data displayed by filtering after the search also changes the pagination. Task completed -> Working on search bar and filtering by words for an easier search. |
|||
- In the front-end, functions were arranged according to the new data changes in the back-end '''GetFilteredWorkPeriods''' API call. Updated dataSource so that the table shows the requested data. |
|||
- The overview component for the HR role has been added to the routing. It is set as the first component to be displayed by default after the Log In screen. |
|||
- ''Link button'' has been added to switch from overview component to timesheet view for navigation bar HR role. Task completed -> tabs for routing have not been created yet for the newly created overview component. The overview component is now available for HR role. |
|||
- There are improvements in getting the user profile photo data from the database on the profile page. API calls will be arranged and the profile photo will be kept throughout the session. |
|||
'''Problems: ''' |
|||
- Some changes need testing as they might result in unexpected bugs. |
|||
'''To-Do: ''' |
|||
- Security controls, role requirements for overview component |
|||
- Support for weekly workperiod view. |
|||
- Further API call security |
|||
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data. |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 10 == |
|||
'''Date''': 04/02/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- '''GetFilteredWorkPeriods''' rework. For filter id 2, it takes a comma separated string input rather than a single int as an input. The reason is it was requested for our system to be able to apply multiple filters at once. For example, if we want to see the work period data of employees with ids 1, 5, and 8; the client should enter the filterid1 as 1 and filterid2 as "1,5,8". |
|||
- Profile page has been edited. The problems in the operations of storing photos in the database and extracting them from the database have been resolved. Now, the photo is displayed in the navigation bar. |
|||
- Created a new source icon for timesheet entry data added or edited, showing that it has been changed by the manager. |
|||
- Input field in front-end updated for department filtering feature. |
|||
'''Problems: ''' |
|||
- Some changes need testing as they might result in unexpected bugs. |
|||
'''To-Do: ''' |
|||
- NLOG framework will be checked. |
|||
- Security controls, role requirements for overview component |
|||
- Support for weekly workperiod view. |
|||
- Further API call security |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 11 == |
|||
'''Date''': 04/09/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- NLOG framework was checked. |
|||
- Profile page is updated. Pop up profile page component is created. Old profile page component adapted to new pop up component. |
|||
- For Manager and HR, new notification icon is added for updated work periods for the employee dropdown. |
|||
- For edited and added timesheet entries, new manager icon is added into Timesheet entry table's source column. |
|||
- We made the button that provides the link to the Overview component for HR more fancy. It now takes up less space, and when hovering, it slides to reveal the information text. |
|||
'''Problems: ''' |
|||
- none. |
|||
'''To-Do: ''' |
|||
- Security controls, role requirements for overview component |
|||
- Support for weekly workperiod view. |
|||
- Further API call security |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 12 == |
|||
'''Date''': 04/16/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- NLOG framework was introduced to the system. Several configurations were done and the system can log the changes. Logs include pieces of information such as date, logger info, log type (error, info, trace, etc.); controller, class, and function information. We may add more log info such as modified data (before and after modification). We have created a new table to store logs. However, database log entries are not integrated yet. |
|||
- After multiple filtering feature, back-end function for getting filtered work periods are changed. This change affected Overview table for HR component. We revived the Overview component by adapting backend changes. Now, Overview component supported multiple filtering. |
|||
'''Problems: ''' |
|||
- none. |
|||
'''To-Do: ''' |
|||
- Log entry to the database |
|||
- Security controls, role requirements for overview component |
|||
- Support for weekly workperiod view. |
|||
- Further API call security |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
- User profile showing user either user is weekly workperiod or by weekly workperiod. |
|||
== Week 13 == |
|||
'''Date''': 04/23/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- Security controls, role requirements for overview component task is completed. HR Guard is created and link and routing security provided. |
|||
- The pop up dialog for the profile page has been updated and improvements have been made to the frontend. |
|||
- Api call supporting multiple filtering has been added to the Work period service. Multiple select dropdown filtering system was created for user convenience in multiple filtering. After selecting from Filter by dropdown, new multi-select dropdown with features related to that filtering type is created. To support this structure, new API calls like getDepartment, GetManagers were coded and connections were created. |
|||
- Tooltips have been added to explain the icons in the source section of the Timesheet entries. Now it shows when the manager icon is hovered, it has been changed by the manager. |
|||
- A new pop up component has been created to display the logs of that timesheet entry when the icons are pressed in the source section of the timesheet table. |
|||
'''Problems: ''' |
|||
- none. |
|||
'''To-Do: ''' |
|||
- Further API call security |
|||
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future. |
|||
== Week 14 == |
|||
'''Date''': 04/30/2023 |
|||
'''Attendance''': Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir |
|||
'''Accomplishments: ''' |
|||
- We tried implementing the NLOG framework but failed to connect the logging system with the database. Based on our understanding, if we made some changes to the Program.cs file and added the Startup.cs file as middleware and initialize the NLOG framework, we could direct the logs to the corresponding table in our table. But, to do that we might have to make some changes that might affect the workflow of the program. We didn't want to take the risk and created a custom logging feature for TimeSheets and WorkPeriods. |
|||
- Introducing '''SheetLog'''. Whenever a Timesheet and Workperiod entry is created and edited, we log it in our table. We log the logger id, date, sheet/wp id, and message where we enter the changes (eg. changed from x to y). Several API calls are added that return logs given the entered sheet/wp ids. |
|||
- We have activated the JWT bearer access token on API calls for employee identification. Token information has been placed in the header of all API callers. In this way, communication was established between the frontend and the backend regarding which user made the logs. Previously, access token was only used for authentication. |
|||
- New functions have been written to display logs. The pop-up structure has been created. The log information from the backend has been transformed into a table and displayed. |
|||
- Expandable log display provided in case of multiple change logs. |
|||
'''Problems: ''' |
|||
- No |
|||
'''To-Do: ''' |
|||
- Presentation |
|||
Latest revision as of 03:24, 1 May 2023
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 if no filter is selected.
- Legacy 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 hardcode 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. The back-end is cleaner.
- Users directed to a different link with the timesheet period and employee id parameters (selected in the dropdown). The confusion of accessing more than one image over the same link has been avoided. In-app navigation became easier.
- The problem in the API call in the work periods waiting to be approved table for HR has been resolved.
- Database has been updated. After the last back end changes, a new mock user data was created. All modified API calls were tested.
Problems:
- Baris changed his broken computer with new one. We have downloaded development environment, but we encounter errors while updating the database and installing the required dependency packages. We will solve it as soon as possible and try to be on the same page.
To-Do:
- API call security
- Filter WorkPeriods based on their activity state (Pending, accepted, declined).
- 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 6
Date: 03/05/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- GetFilteredWorkPeriods: Filter WorkPeriods based on their activity state (Pending, accepted, declined). If the input (filterId3) is less than 0, the filter is inactive. At first, I was thinking of first filtering based on the first 2 filterId inputs, then applying the 3rd filter input. However, since querying part by part might cause performance drainage, I tried to find a method to query every single filter element at once. One of the other problems I had to consider was the simplicity of the code. I could've considered copying and pasting code parts for every combination of (filterId1, filterId2) and (filterId3) but later I came up with a solution that generalized the filtering. So, the function is clean and relatively fast but might be hard to understand or debug.
- Introducing API call security on the backend. Some calls require certain roles to run successfully. It works fine on the client side. However, further modifications should be done with the SwaggerUI so that testing gets easier.
- Unnecessary API calls and loops have been removed on the front-end. Enabled to work faster than before.
- A column was added to the WorkPeriod table in the database, which keeps the regular working time of the employees in that work period. - Necessary changes were made in the back-end in order to update the time value in the work period. ChangeWorkPeriod controller has been changed. - A Time column has been added to the overview tables of HR and Managers so that the working hours can be seen more easily in the timesheets of Employees. WPToBeAccepted function in the front-end has been changed. Front-end management of multiple API calls is provided by using forkJoin structure.
Problems:
- Due to the role based authorization, testing in SwaggerUI is harder now.
To-Do:
- Sort WorkPeriods by dates.
- Modifying the SwaggerUI to run the API calls with role based authorizations.
- Further API call security
- 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 7
Date: 03/12/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- User Profile now the system have user profile. When user click on their name or their profile icon, they can access their personal profile. In their profile they can see their user ID's, their Managers Id's, capable of changing their profile picture/icon, and their first and last name and so on.
- Profile Pictures are supported in the backend. Given a file as an input, it is converted into a byte array and that array is stored inside the ProfilePicture table. The table consists of a Id (PrimaryKey), EmployeeId (unique), and a byte array. API calls are called GetProfilePicture and UploadProfilePicture. GetProfilePicture takes an employeeId as a parameter and returns the file. UploadProfilePicture takes the employeeId and the file object and changes/adds the profile picture of that given employee. However, a layer of security should be added like the file size, permissions and so on.
- The design document was prepared. The use case screenshots of the application, the features added over time and information about the development were given. Images from various devices are provided to demonstrate mobile compatibility. A diagram has been created for the simple routing map of the application.
- Task Current hours/Total hours is completed and can be displayed at manager table.
Problems:
- Due to the role based authorization, testing in SwaggerUI is harder now.
- It was difficult to pull and push work simply because more than one person was developing at the same time. We spend effort to merge these branches.
To-Do:
- Support for weekly workperiod view.
- Sort WorkPeriods by dates.
- Modifying the SwaggerUI to run the API calls with role based authorizations.
- Further API call security
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data.
- User, Manager, and HR view rework in the front end.
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 8
Date: 03/19/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- The problem with merging different branches has been fixed. Fixed some functionalities. The database was updated by running old migrations.
- After the repository was updated without any problems, all processes were tested for each role. - SwaggerUI is testable for authentication now. In the backend, the file named Program.cs is changed. The functionality of Program.cs is to initialize some of the essential dependencies such as SwaggerUI and Identity Framework. A middleware that lets you do tests just like you have logged in to the system. Whenever you log in, a JWT token with an expiration date is generated. You can test API calls with security functionalities without needing the front end. It is a good way to test calls before integrating them with the front end.
- A new controller called Admin has been created. The calls in this controller will consist of manipulations that wouldn't be needed in the current state of the program. Some calls are moved to this controller. Other controllers are cleaner now.
- A component has been created where HR and Managers can see the work period data collectively. Instead of the individual view of the Timesheet view, a more general view and different functionalities have been created.
- A paginated workperiod table was created for the created overview component. A look up button, which is a link to the timesheet view, has been added to look at each data entry in more detail.
- Functions have been created to manipulate data to display dates in a more readable way and null values more explanatory.
- While the data was being loaded at the very beginning, a loading spinner was added to let you know that the process is continuing.
- Filtering options according to Employee Id, Department Id and Manager Id have been added in order to examine the table in more detail.
- A login guard has been added to access the newly created component.
Problems:
- Some calls should be changed in the back end and the front end for more security. Some bugs may appear if we fail to change them smoothly.
To-Do:
- Working on search bar and filtering by words for an easier search. We can create a new pipe mechanism on the table to automatically update the dataSource and pagination.
- Security controls, role requirements and tabs for routing have not been created yet for the newly created overview component
- Support for weekly workperiod view.
- Sort WorkPeriods by dates.
- Further API call security
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data.
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 9
Date: 03/26/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- Departments table and corresponding API calls have been added. The table only consists of a Department ID and a Department name. This table will be used in the front end for better visualization of the employee info. New calls are the following: UpdateEmployeeDepartmentId, AddDepartment, GetDepartmentById. Some of the calls have error checks in cases where the input is faulty.
- Changes in the GetFilteredWorkPeriods API call. Returned data are now sorted based on date, WorkPeriod data of HR employees are not shown, and future WorkPeriod data of the employees are not returned. Along with those changes, a huge refactoring in the function has been made. Since the call is rather critical and might need changes/additions to it, some adjustments regarding readability and maintainability have been made.
- Search bar is implemented. Search function searches the input value in the data loaded with the GetFilteredWorkPeriod API call. In this way, the desired data in the loaded data can be accessed quickly. The complexity of the search algorithm in the search bar function has been reduced. Faster search results can be reached. The data displayed by filtering after the search also changes the pagination. Task completed -> Working on search bar and filtering by words for an easier search.
- In the front-end, functions were arranged according to the new data changes in the back-end GetFilteredWorkPeriods API call. Updated dataSource so that the table shows the requested data.
- The overview component for the HR role has been added to the routing. It is set as the first component to be displayed by default after the Log In screen.
- Link button has been added to switch from overview component to timesheet view for navigation bar HR role. Task completed -> tabs for routing have not been created yet for the newly created overview component. The overview component is now available for HR role.
- There are improvements in getting the user profile photo data from the database on the profile page. API calls will be arranged and the profile photo will be kept throughout the session.
Problems:
- Some changes need testing as they might result in unexpected bugs.
To-Do:
- Security controls, role requirements for overview component
- Support for weekly workperiod view.
- Further API call security
- GetFilteredWorkPeriods API call's integration to the front-end, Visual representation of the data.
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 10
Date: 04/02/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- GetFilteredWorkPeriods rework. For filter id 2, it takes a comma separated string input rather than a single int as an input. The reason is it was requested for our system to be able to apply multiple filters at once. For example, if we want to see the work period data of employees with ids 1, 5, and 8; the client should enter the filterid1 as 1 and filterid2 as "1,5,8".
- Profile page has been edited. The problems in the operations of storing photos in the database and extracting them from the database have been resolved. Now, the photo is displayed in the navigation bar.
- Created a new source icon for timesheet entry data added or edited, showing that it has been changed by the manager.
- Input field in front-end updated for department filtering feature.
Problems:
- Some changes need testing as they might result in unexpected bugs.
To-Do:
- NLOG framework will be checked.
- Security controls, role requirements for overview component
- Support for weekly workperiod view.
- Further API call security
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 11
Date: 04/09/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- NLOG framework was checked.
- Profile page is updated. Pop up profile page component is created. Old profile page component adapted to new pop up component.
- For Manager and HR, new notification icon is added for updated work periods for the employee dropdown.
- For edited and added timesheet entries, new manager icon is added into Timesheet entry table's source column.
- We made the button that provides the link to the Overview component for HR more fancy. It now takes up less space, and when hovering, it slides to reveal the information text.
Problems:
- none.
To-Do:
- Security controls, role requirements for overview component
- Support for weekly workperiod view.
- Further API call security
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 12
Date: 04/16/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- NLOG framework was introduced to the system. Several configurations were done and the system can log the changes. Logs include pieces of information such as date, logger info, log type (error, info, trace, etc.); controller, class, and function information. We may add more log info such as modified data (before and after modification). We have created a new table to store logs. However, database log entries are not integrated yet.
- After multiple filtering feature, back-end function for getting filtered work periods are changed. This change affected Overview table for HR component. We revived the Overview component by adapting backend changes. Now, Overview component supported multiple filtering.
Problems:
- none.
To-Do:
- Log entry to the database
- Security controls, role requirements for overview component
- Support for weekly workperiod view.
- Further API call security
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
- User profile showing user either user is weekly workperiod or by weekly workperiod.
Week 13
Date: 04/23/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- Security controls, role requirements for overview component task is completed. HR Guard is created and link and routing security provided.
- The pop up dialog for the profile page has been updated and improvements have been made to the frontend.
- Api call supporting multiple filtering has been added to the Work period service. Multiple select dropdown filtering system was created for user convenience in multiple filtering. After selecting from Filter by dropdown, new multi-select dropdown with features related to that filtering type is created. To support this structure, new API calls like getDepartment, GetManagers were coded and connections were created.
- Tooltips have been added to explain the icons in the source section of the Timesheet entries. Now it shows when the manager icon is hovered, it has been changed by the manager.
- A new pop up component has been created to display the logs of that timesheet entry when the icons are pressed in the source section of the timesheet table.
Problems:
- none.
To-Do:
- Further API call security
- Instead of the print button, which takes the direct output of the screen, output in CSV format can be created in the future.
Week 14
Date: 04/30/2023
Attendance: Ayberk Can Aykut, Aydın Can Demir, Barış Turgay, Necati Mert Aydemir
Accomplishments:
- We tried implementing the NLOG framework but failed to connect the logging system with the database. Based on our understanding, if we made some changes to the Program.cs file and added the Startup.cs file as middleware and initialize the NLOG framework, we could direct the logs to the corresponding table in our table. But, to do that we might have to make some changes that might affect the workflow of the program. We didn't want to take the risk and created a custom logging feature for TimeSheets and WorkPeriods.
- Introducing SheetLog. Whenever a Timesheet and Workperiod entry is created and edited, we log it in our table. We log the logger id, date, sheet/wp id, and message where we enter the changes (eg. changed from x to y). Several API calls are added that return logs given the entered sheet/wp ids.
- We have activated the JWT bearer access token on API calls for employee identification. Token information has been placed in the header of all API callers. In this way, communication was established between the frontend and the backend regarding which user made the logs. Previously, access token was only used for authentication.
- New functions have been written to display logs. The pop-up structure has been created. The log information from the backend has been transformed into a table and displayed.
- Expandable log display provided in case of multiple change logs.
Problems:
- No
To-Do:
- Presentation