Пример #1
0
        private Avatar AddAvatar(ChangedAvatarDTO changedAvatar)
        {
            var avatar = Mapper.Map <Avatar>(changedAvatar);

            _databaseContext.Avatars.Add(avatar);
            _databaseContext.SaveChanges();

            return(avatar);
        }
Пример #2
0
        public ActionResult Index(ChangeAvatarViewModel viewModel)
        {
            var userID = _authService.GetCurrentUser().ID;

            switch (viewModel.Type)
            {
            case AvatarType.Default:
            {
                _avatarService.SetUserAvatarToDefault(userID);
                break;
            }

            case AvatarType.Gravatar:
            {
                var userEMail    = _profileService.GetProfileByUserID(userID).EMail;
                var gravatarLink = _gravatarService.GetGravatarLink(userEMail);

                var changeAvatarDTO = new ChangedAvatarDTO
                {
                    Type   = AvatarTypeDTO.Gravatar,
                    Source = gravatarLink
                };

                _avatarService.SetUserAvatar(userID, changeAvatarDTO);
                break;
            }

            case AvatarType.Internal:
            {
                var stream     = viewModel.AvatarFile.InputStream;
                var mimeType   = viewModel.AvatarFile.ContentType;
                var serverPath = HttpContext.Server.MapPath("/");

                if (viewModel.AvatarFile == null)
                {
                    ModelState.AddModelError("AvatarFile", "You have to upload file.");
                    return(View(viewModel));
                }

                if (!_avatarService.CheckIfMimeTypeIsValid(mimeType))
                {
                    ModelState.AddModelError("AvatarFile", $"{mimeType} is not allowed.");
                    return(View(viewModel));
                }

                var pathToAvatarFile = _avatarFilesService.SaveAvatar(stream, mimeType, serverPath);
                var avatar           = Mapper.Map <ChangedAvatarDTO>(viewModel);
                avatar.Source = pathToAvatarFile;

                _avatarService.SetUserAvatar(userID, avatar);
                break;
            }
            }

            return(RedirectToAction("Index"));
        }
Пример #3
0
        public void SetUserAvatar_NotExistingUserID_ThrowsUserProfileNotFoundException()
        {
            var testDatabaseContext = DbContextFactory.Create();

            var service    = new AvatarService(testDatabaseContext);
            var userAvatar = new ChangedAvatarDTO
            {
                Type   = AvatarTypeDTO.Gravatar,
                Source = "gravatarSource"
            };

            var exception = Record.Exception(() => service.SetUserAvatar(1001, userAvatar));

            Assert.IsType <UserProfileNotFoundException>(exception);
        }
Пример #4
0
        public void SetUserAvatar_ExistingUserID_AvatarSuccessfullyChanged(int userID, AvatarTypeDTO avatarType, string avatarSource)
        {
            var testDatabaseContext = DbContextFactory.Create();

            var service    = new AvatarService(testDatabaseContext);
            var userAvatar = new ChangedAvatarDTO
            {
                Type   = avatarType,
                Source = avatarSource
            };

            service.SetUserAvatar(userID, userAvatar);

            var updatedUserAvatar = service.GetUserAvatar(userID);

            Assert.Equal(avatarType, updatedUserAvatar.Type);
            Assert.Equal(avatarSource, updatedUserAvatar.Source);
        }
Пример #5
0
        /// <inheritdoc />
        public void SetUserAvatar(int userID, ChangedAvatarDTO changedAvatar)
        {
            if (!_databaseContext.Users.Any(p => p.ID == userID))
            {
                throw new UserProfileNotFoundException();
            }

            var user = _databaseContext.Users.First(p => p.ID == userID);

            if (user.Avatar.Type != AvatarType.Default)
            {
                RemoveUserAvatar(user);
            }

            var avatar = AddAvatar(changedAvatar);

            user.AvatarID = avatar.ID;

            _databaseContext.SaveChanges();
        }