Replaces IProjectService/ProjectService. IProjectMemberService is
left in place for now — ProjectMembersController still depends on it
until the next task converts it too.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces IRoleService/RoleService. The permission-builder logic moves
to a shared RolePermissionBuilder static helper used by both the
create and update handlers. RolesController keeps its inline
IPermissionService checks unchanged.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces IAccountService/AccountService with one command/query per
operation, following the pattern set in the Auth module.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds the MediatR package and wires AddMediatR in DI. Replaces
IAuthService/AuthService with LoginCommand/LoginHandler, the pattern
the remaining modules will follow.
The ASP.NET Core solution (mws.api/mws.application/mws.domain/
mws.infrastructure) existed only as untracked working files. Adding
it to version control, plus a .gitignore for build output and local
tooling directories, so the CQRS/mediator refactor plan has a real
git history to branch and diff against.