Ejemplo n.º 1
0
        public override async Task <UploadAvatarQueryResult> HandleRequest(UploadAvatarQuery request, CancellationToken cancellationToken = default)
        {
            string avatarUrl;

            // proceed avatar
            using (var imageFilter = new ImageFilter(request.AvatarFile))
            {
                ImageFilter image = imageFilter
                                    .Resize(IMAGE_SIZE)
                                    .Crop(IMAGE_SIZE);

                string disposableWebP = image.CreateTempWebP();

                avatarUrl = await fileLoader
                            .UploadAsync(disposableWebP, ProjectDirectories.Avatars)
                            .ConfigureAwait(false);
            }

            User user = Context.Users.Find(request.UserId);

            // delete old file
            string oldAvatar = user.AvatarPath;

            user.AvatarPath = avatarUrl;
            await Context.SaveChangesAsync(cancellationToken)
            .ConfigureAwait(false);

            await fileLoader.DeleteAsync(oldAvatar)
            .ConfigureAwait(false);

            return(new UploadAvatarQueryResult()
            {
                AvatarPath = avatarUrl
            });
        }