Esempio n. 1
0
        public async Task <Result <string> > Handle(RemoveUserDataCommand request, CancellationToken token)
        {
            var entity = await _context.Users.IgnoreQueryFilters().SingleOrDefaultAsync(c => c.Id == request.UserId, token);

            if (entity == null)
            {
                return(Failure <string>("L'utilisateur est introuvable."));
            }

            if (entity.Id != request.RequestUser.Id)
            {
                return(Failure <string>("Vous n'êtes pas autorisé à accéder à cette ressource."));
            }

            if (!entity.RemovedOn.HasValue)
            {
                return(Success <string>(request.Reason));
            }

            await _blobService.CleanUserStorageAsync(request.UserId, token);

            var result = await _mediatr.Process(new RemoveAuthUserCommand(request.RequestUser)
            {
                UserId = entity.Id
            }, token);

            if (!result.Succeeded)
            {
                return(Failure <string>(result));
            }

            entity.Close();
            await _context.SaveChangesAsync(token);

            return(Success <string>(request.Reason));
        }