Exemple #1
0
        private async Task ReplaceCacheImg(CsmsUsersAvatar photo)
        {
            UserAvatarViewModel result = new UserAvatarViewModel()
            {
                Id       = photo.Id,
                UserId   = photo.UserId,
                Content  = photo.Picture,
                FileType = photo.FileType,
                Filename = photo.Filename,
                FileSize = photo.FileSize
            };

            await _cache.SetStringAsync(CacheKey.USER_PHOTO + photo.UserId, JsonConvert.SerializeObject(result), new DistributedCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(60)
            });
        }
Exemple #2
0
        public async Task <CommandResult> ExecuteAsync(IFormFile file, int userId)
        {
            try
            {
                if (file == null || userId <= 0)
                {
                    return(CommandResult.Failed(new CommandResultError()
                    {
                        Code = (int)HttpStatusCode.NotAcceptable,
                        Description = "File or UserId is null"
                    }));
                }

                if (file.Length > 4000000)
                {
                    return(CommandResult.Failed(new CommandResultError()
                    {
                        Code = (int)HttpStatusCode.NotAcceptable,
                        Description = "File size must less than 4Mb"
                    }));
                }

                if (!file.ContentType.Contains("image/"))
                {
                    return(CommandResult.Failed(new CommandResultError()
                    {
                        Code = (int)HttpStatusCode.NotAcceptable,
                        Description = "File not support"
                    }));
                }

                // Check user exists if need

                var names      = file.FileName.Split('.');
                var fileExtend = names[names.Length - 1];
                var fileName   = userId.ToString();

                byte[] fileContent;
                using (Stream stream = file.OpenReadStream())
                {
                    using (var binaryReader = new BinaryReader(stream))
                    {
                        fileContent = binaryReader.ReadBytes((int)file.Length);
                    }
                }

                var userAvatar = await _usersAvatarRepository.Table.Where(n => n.UserId == userId).FirstOrDefaultAsync();

                if (userAvatar != null)
                {
                    userAvatar.Picture  = fileContent;
                    userAvatar.FileSize = file.Length.ToString();
                    userAvatar.FileType = file.ContentType;
                    userAvatar.Filename = fileName + "." + fileExtend;
                    await _usersAvatarRepository.UpdateAsync(userAvatar);
                    await ReplaceCacheImg(userAvatar);
                }
                else
                {
                    CsmsUsersAvatar entity = new CsmsUsersAvatar()
                    {
                        UserId   = userId,
                        Filename = fileName + "." + fileExtend,
                        FileSize = file.Length.ToString(),
                        FileType = file.ContentType,
                        Picture  = fileContent,
                        Status   = "1"
                    };

                    await _usersAvatarRepository.InsertAsync(entity);
                    await ReplaceCacheImg(entity);
                }

                return(CommandResult.Success);
            }
            catch (Exception ex)
            {
                Logging <UploadUserAvatarCommand> .Error(ex, "UserId: " + userId);

                return(CommandResult.Failed(new CommandResultError()
                {
                    Code = (int)HttpStatusCode.InternalServerError,
                    Description = Message.InternalServerError
                }));
            }
        }