Example: "A" is working on "Project1" from 1-1-2020 to 1-1-2021. Then, the fields for this list are "Username, Current project name, From date, To date, Previous project, Previous period from and previous period A". Once "Project1" is finished, the User assigned to another project "Project2" from 1-2-2021 to 1-2-2022. Then we need to change the same in the list, once it is changed. "Project1" should be updated in the field of the previous project and the date From and To should update it on the date of the previous period. And the new change should be updated in the name of the current project, etc.
Then you can use Workflow or Flow. If there are several projects, it would create a flow step in which once the current state of the assigned element is completed, we get the current user in the flow and then add it to the next project based on the value of the previous project. You can try to query the list using the HTTP (workflow) call cycle through the items in the list that have the filter as User A assigned and the status completed. From the results we extract the projects that are already assigned and finished, so that we do not assign finished projects according to the previously selected project that has been completed.
Below are the workflow actions you would use,
Update the list item: here you must have an endpoint with the filters mentioned above)
create a loop
On the other hand, if you have access to Flow, you can also try to take advantage of it there. Basically you have the idea of what to do. This is a feasible case, let me know if you need more details. I have presented a logic that you can use. I hope this helps.