コード例 #1
0
        public async Task <IActionResult> Index()
        {
            var userWardrobe = await _avatarService.GetUserWardrobeAsync();

            if (userWardrobe.Count == 0)
            {
                ShowAlertDanger("Avatars have not been configured.");
                _logger.LogError("User {id} tried to customize their avatar but avatars have not been configured!",
                                 GetActiveUserId());
                return(RedirectToAction(nameof(HomeController.Index), HomeController.Name));
            }

            var layerGroupings = userWardrobe
                                 .GroupBy(_ => _.GroupId)
                                 .Select(_ => _.ToList())
                                 .ToList();

            var usersresult = await _avatarService.GetUserUnlockBundlesAsync();

            var viewModel = new AvatarViewModel
            {
                LayerGroupings = layerGroupings,
                Bundles        = usersresult,
                DefaultLayer   = userWardrobe.First(_ => _.DefaultLayer).Id,
                ImagePath      = _pathResolver.ResolveContentPath($"site{GetCurrentSiteId()}/avatars/")
            };
            var userAvatar = await _avatarService.GetUserAvatarAsync();

            viewModel.NewAvatar = userAvatar.Count == 0;
            return(View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> Index()
        {
            var userWardrobe = await _avatarService.GetUserWardrobeAsync();

            if (userWardrobe.Count == 0)
            {
                ShowAlertDanger("Avatars have not been set up.");
                return(RedirectToAction("Index", "Home"));
            }

            AvatarJsonModel model = new AvatarJsonModel();

            model.Layers = _mapper
                           .Map <ICollection <AvatarJsonModel.AvatarLayer> >(userWardrobe);
            var layerGroupings = userWardrobe
                                 .GroupBy(_ => _.GroupId)
                                 .Select(_ => _.ToList())
                                 .ToList();
            AvatarViewModel viewModel = new AvatarViewModel()
            {
                LayerGroupings   = layerGroupings,
                DefaultLayer     = userWardrobe.Where(_ => _.DefaultLayer).First().Id,
                ImagePath        = _pathResolver.ResolveContentPath($"site{GetCurrentSiteId()}/avatars/"),
                AvatarPiecesJson = Newtonsoft.Json.JsonConvert.SerializeObject(model)
            };

            var userAvatar = await _avatarService.GetUserAvatarAsync();

            if (userAvatar.Count == 0)
            {
                viewModel.NewAvatar = true;
            }
            return(View(viewModel));
        }
コード例 #3
0
        public ActionResult FileUpload(HttpPostedFileBase file)
        {
            if (file != null)
            {
                var    ext  = Path.GetExtension(file.FileName) ?? "jpg";
                string path = Path.Combine(Server.MapPath("~/Content/Avatars/temp"), Guid.NewGuid() + ext);
                while (System.IO.File.Exists(path))
                {
                    path = Path.Combine(Server.MapPath("~/Content/Avatars/temp"), Guid.NewGuid() + ext);
                }

                System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream);

                var viewModel = new AvatarViewModel
                {
                    Path   = Path.Combine("/Content/Avatars/temp", Path.GetFileName(path)),
                    Width  = image.Width,
                    Height = image.Height
                };

                var r = new ResizeSettings();
                r.Width  = viewModel.DisplayWidth;
                r.Height = viewModel.DisplayHeight;
                ImageResizer.ImageBuilder.Current.Build(image, path, r);

                //file.SaveAs(path);


                Session["UploadedFile"] = viewModel;
            }

            // after successfully uploading redirect the user
            return(RedirectToAction("UploadPhoto", "Profile"));
        }
コード例 #4
0
        public async Task <IActionResult> GetLayersItems(
            string type, int layerId, int selectedItemId, int bundleId, int[] selectedItemIds)
        {
            try
            {
                var layeritems = await _avatarService.GetUsersItemsByLayerAsync(layerId);

                var model = new AvatarViewModel
                {
                    ItemPath = _pathResolver.ResolveContentPath($"site{GetCurrentSiteId()}/avatars/")
                };
                switch (type?.ToUpperInvariant())
                {
                case "ITEM":
                    model.LayerItems     = layeritems;
                    model.SelectedItemId = selectedItemId;
                    model.ItemPath       = _pathResolver.ResolveContentPath($"site{GetCurrentSiteId()}/avatars/");
                    model.LayerId        = layerId;
                    break;

                case "COLOR":
                    model.LayerColors = await _avatarService.GetColorsByLayerAsync(layerId);

                    model.SelectedItemId = selectedItemId;
                    model.LayerId        = layerId;
                    break;

                default:
                    model.Bundle = await _avatarService.GetBundleByIdAsync(bundleId);

                    model.SelectedItemIds = selectedItemIds;
                    break;
                }
                if (model.Bundle != null)
                {
                    var lookupIndex = model.SelectedItemIds
                                      .Select(_ => model.SelectedItemIds
                                              .ToList()
                                              .IndexOf(_)
                                              )
                                      .FirstOrDefault(_ => _ != -1);
                    model.SelectedItemIndex = lookupIndex == -1 ? 0 : lookupIndex;
                }
                Response.StatusCode = StatusCodes.Status200OK;
                return(PartialView("_SlickPartial", model));
            }
            catch (GraException gex)
            {
                _logger.LogError(gex,
                                 "Could not retrieve layer items for layer id {layerId}: {Message}",
                                 layerId,
                                 gex.Message);
                Response.StatusCode = StatusCodes.Status400BadRequest;
                return(Json(new
                {
                    success = false
                }));
            }
        }
コード例 #5
0
        public async Task <IActionResult> Avatar()
        {
            var user = await GetCurrentUserAsync();

            var model = new AvatarViewModel(user);

            return(View(model));
        }
コード例 #6
0
 public IActionResult ClearAvatar([FromBody] AvatarViewModel model)
 {
     if (!_service.ClearAvatar(model))
     {
         return(StatusCode(500, "Avatar cannot be cleared!"));
     }
     return(Ok("Avatar cleared successfully!"));
 }
コード例 #7
0
        public void Models_AvatarViewModel_Default_Instantiate_Should_Pass()
        {
            // Act
            var result = new AvatarViewModel();

            // Assert
            Assert.IsNotNull(result, TestContext.TestName);
        }
コード例 #8
0
        public FrmDadosRefeicao()
        {
            InitializeComponent();

            AvatarView escolido = AvatarViewModel.BuscarporID(1);

            this.imgAvatarEscolhido.Source = escolido.imgAvatar;
        }
コード例 #9
0
        public ActionResult Avatar(AvatarViewModel model, string ExternalImageURL)
        {
            switch (model.AvatarType)
            {
            case AvatarType.Url:
                if (string.IsNullOrWhiteSpace(model.Url))
                {
                    ModelState.AddModelError("Url", "Enter an avatar url.");
                }
                break;

            case AvatarType.Upload:
                List <string> validFormats = new List <string>
                {
                    "image/png", "image/x-png",
                    "image/gif", "image/x-gif",
                    "image/jpeg", "image/x-jpeg",
                    "image/jpg", "image/x-jpg",
                };

                if (model.Image == null || model.Image.ContentLength == 0)
                {
                    ModelState.AddModelErrorFor <AvatarViewModel>(m => m.Image.FileName, "Please select an image to upload.");
                }
                else if (!validFormats.Contains(model.Image.ContentType))
                {
                    ModelState.AddModelErrorFor <AvatarViewModel>(m => m.Image, "Invalid file format; only gif,png,jpeg,jpg are allowed.");
                }
                break;

            case AvatarType.None:
            default:
                break;
            }

            if (IsModelValidAndPersistErrors())
            {
                switch (model.AvatarType)
                {
                case AvatarType.Upload:
                    string uploadedFileName = _fileServices.UploadAvatar(model.Image);
                    _userServices.UpdateAvatarToUpload(_currentUser.UserID, uploadedFileName);
                    break;

                case AvatarType.Url:
                    _userServices.UpdateAvatarToUrl(_currentUser.UserID, model.Url);
                    break;

                case AvatarType.None:
                default:
                    _userServices.UpdateAvatarToNone(_currentUser.UserID);
                    break;
                }
                SetSuccess("Profile Settings Updated");
            }

            return(RedirectToSelf());
        }
コード例 #10
0
 public async Task<IActionResult> Avatar(bool JustHaveUpdated)
 {
     var user = await GetCurrentUserAsync();
     var model = new AvatarViewModel(user)
     {
         JustHaveUpdated = JustHaveUpdated
     };
     return View(model);
 }
コード例 #11
0
        public FrmDiasSemana()
        {
            InitializeComponent();

            AvatarView escolido = AvatarViewModel.BuscarporID(1);

            this.txtNomeApelido.Text       = escolido.Name;
            this.imgAvatarEscolhido.Source = escolido.imgAvatar;
        }
コード例 #12
0
        public NewItemPage()
        {
            InitializeComponent();

            BindingContext = viewModel = new AvatarViewModel();

            lblCalculoDistancia.Text       = "30";
            lblIntervaloPosicao.Text       = "1";
            lblIntervaloPosicaoParado.Text = "30";

            saveButton.Clicked += Save_Clicked;
        }
コード例 #13
0
        // Constructor
        public FrmTutorial()
        {
            InitializeComponent();
            AvatarView escolido = AvatarViewModel.BuscarporID(1);

            this.imgAvatarEscolhido.Source  = escolido.imgAvatar;
            this.imgAvatarEscolhido1.Source = escolido.imgAvatar;
            this.imgAvatarEscolhido2.Source = escolido.imgAvatar;
            this.imgAvatarEscolhido3.Source = escolido.imgAvatar;
            this.imgAvatarEscolhido4.Source = escolido.imgAvatar;
            this.imgAvatarEscolhido5.Source = escolido.imgAvatar;
        }
コード例 #14
0
        public async Task <IActionResult> Avatar(bool justHaveUpdated)
        {
            var user = await GetCurrentUserAsync();

            var model = new AvatarViewModel(user)
            {
                JustHaveUpdated = justHaveUpdated,
                NewIconAddres   = user.IconFilePath
            };

            return(View(model));
        }
コード例 #15
0
        public async Task <AvatarViewModel> GetUserAvatarAsync(ClaimsPrincipal principal)
        {
            var user = await GetUserAsync(principal);

            AvatarViewModel vm = new AvatarViewModel
            {
                ImagePath = user.FileName,
                ImageData = user.FileData
            };

            return(vm);
        }
コード例 #16
0
        public async Task <ICollection <Image> > UploadAvatar([FromForm] AvatarViewModel model)
        {
            ICollection <Image> images = new List <Image>();
            var files = model.Files;

            if (files != null && files.Any())
            {
                images = _imageRepository.Save(files, Consts.Folder.User.Name());
                await _identityRepository.AddImages(model.Id, images.First());
            }

            return(images);
        }
コード例 #17
0
        public async Task <ActionResult> EditAvatar(AvatarViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("_Avatar", model));
            }

            await _userService.UpdateAvatarAsync(UserHelper.Id, model.AttachedImage);

            await ResetUserSessionValueAsync();

            return(Content("Refresh"));
        }
コード例 #18
0
 public async Task<IActionResult> Avatar(AvatarViewModel model)
 {
     var cuser = await GetCurrentUserAsync();
     if (!ModelState.IsValid)
     {
         model.ModelStateValid = false;
         model.Recover(cuser);
         return View(model);
     }
     cuser.HeadImgUrl = await _storageService.SaveToOSS(Request.Form.Files.First(), Values.UsersIconBucketId, 365);
     await _userService.ChangeProfileAsync(cuser.Id, await _appsContainer.AccessToken(), string.Empty, cuser.HeadImgUrl, string.Empty);
     await _userManager.UpdateAsync(cuser);
     return RedirectToAction(nameof(Avatar), new { JustHaveUpdated = true });
 }
コード例 #19
0
 private void ApplicationBarIconButton_Click(object sender, EventArgs e)
 {
     if (ValidarComponentes.ValidarTextBox(txtNomeApelido, 1))
     {
         App.Current.Actives.ActiveAvatarP      = AvatarViewModel.BuscarporID(1);
         App.Current.Actives.ActiveAvatarP.Name = txtNomeApelido.Text;
         App.Current.Actives.ActiveAvatarP.Alterar();
         NavigationService.Navigate(new Uri("/View/FrmCadastroPerfilPasso01.xaml", UriKind.Relative));
     }
     else
     {
         MessageBox.Show("Insira o nome de apelido, por favor", "Erro de preenchimento!", MessageBoxButton.OK);
     }
 }
コード例 #20
0
        public ActionResult EditAvatar(AvatarViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("_Avatar", model));
            }

            var imageFilePath = SaveImage(model.AttachedImage, nameof(EditAvatar));

            _userService.UpdateAvatar(UserHelper.UserId.Value, imageFilePath);

            ResetUserSessionValue();

            return(Content("Refresh"));
        }
コード例 #21
0
        public async Task <IActionResult> Avatar(AvatarViewModel model)
        {
            var currentUser = await GetCurrentUserAsync();

            if (!ModelState.IsValid)
            {
                model.Recover(currentUser);
                return(View(model));
            }
            currentUser.IconFilePath = model.NewIconAddress;
            await _userService.ChangeProfileAsync(currentUser.Id, await _appsContainer.AccessToken(), currentUser.NickName, currentUser.IconFilePath, currentUser.Bio);

            await _userManager.UpdateAsync(currentUser);

            return(RedirectToAction(nameof(Avatar), new { JustHaveUpdated = true }));
        }
コード例 #22
0
        public ActionResult Create([Bind(Include = "Id,Name,DataInHttpPostedFileBase")] AvatarViewModel avatarViewModel)
        {
            if (ModelState.IsValid)
            {
                Avatar avatar = new Avatar()
                {
                    Name = avatarViewModel.Name,
                    Data = ConvertHttpPostedFileBaseToByteArray(avatarViewModel.DataInHttpPostedFileBase)
                };
                db.Avatar.Add(avatar);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(avatarViewModel));
        }
コード例 #23
0
        private void Salvar_Click(object sender, EventArgs e)
        {
            App.Current.Actives.ActivePerfil.Idavatar = 1;
            PerfilViewModel.Gravar(App.Current.Actives.ActivePerfil);
            MassaView massa = new MassaView()
            {
                Idmassa     = MassaViewModel.listar().Count + 1,
                Dataupadate = DateTime.Now.Date,
                Massa       = App.Current.Actives.ActivePerfil.Peso
            };

            massa.Gravar();
            NavigationService.Navigate(new Uri("/View/FrmMenuInicial.xaml", UriKind.Relative));
            Image img = new Image();

            img.Source = AvatarViewModel.BuscarporID(1).imgAvatar;
        }
コード例 #24
0
        public async Task <IActionResult> UploadAvatar(int id)
        {
            User user = await userManager.FindByIdAsync(id.ToString());

            if (user != null)
            {
                AvatarViewModel avatarModel = new AvatarViewModel {
                    Id = id
                };
                if (user.Avatar != null)
                {
                    avatarModel.Delete = true;
                }
                return(View(avatarModel));
            }
            return(BadRequest());
        }
コード例 #25
0
        public async Task <ActionResult> Avatar(AvatarViewModel vm)
        {
            var path   = String.Format(PlatformConfiguration.UploadedUserPathTemplate, UserContext.UserId);
            var result = SaveAs(vm.Image, path);

            if (result != null)
            {
                Command.Execute(new UpdateAvatarCommand
                {
                    FileId = result.File.Id
                });
            }

            await SignInManager.UpdateClaims(UserContext);

            return(RedirectToAction("Index"));
        }
コード例 #26
0
        public async Task <IActionResult> Upload(AvatarViewModel model)
        {
            IFormFile file = model.File;

            if (file.Length > 0)
            {
                string path = Path.Combine(_env.WebRootPath, "images");
                using (FileStream fs = new FileStream(Path.Combine(path, file.FileName), FileMode.Create))
                {
                    await file.CopyToAsync(fs);
                }
                return(Ok());
            }
            else
            {
                return(BadRequest());
            }
        }
コード例 #27
0
        /// <summary>
        /// Student's Avatar page
        /// </summary>
        /// <param name="id">Student Id</param>
        /// <returns>Selected Avatar View Model</returns>
        // GET: Portal
        public ActionResult Avatar(string id = null)
        {
            // var currentUser = User.Identity.GetUserName();
            //var currentUserId = User.Identity.GetUserId();

            var myStudent = Backend.StudentBackend.Instance.Read(id);

            if (myStudent == null)
            {
                return(RedirectToAction("Error", "Home"));
            }

            var myAvatar = Backend.AvatarBackend.Instance.Read(myStudent.AvatarId);

            if (myAvatar == null)
            {
                return(RedirectToAction("Error", "Home"));
            }

            var SelectedAvatarViewModel = new SelectedAvatarForStudentViewModel();

            // Populate the Values to use
            SelectedAvatarViewModel.AvatarList = Backend.AvatarBackend.Instance.Index();

            // Build up the List of AvatarLevels, each list holds the avatar of that level.
            SelectedAvatarViewModel.MaxLevel = SelectedAvatarViewModel.AvatarList.Aggregate((i1, i2) => i1.Level > i2.Level? i1 : i2).Level;

            SelectedAvatarViewModel.AvatarLevelList = new List <AvatarViewModel>();
            // populate each list at the level
            for (var i = 1; i <= SelectedAvatarViewModel.MaxLevel; i++)
            {
                var tempList       = SelectedAvatarViewModel.AvatarList.Where(m => m.Level == i).ToList();
                var tempAvatarList = new AvatarViewModel();
                tempAvatarList.AvatarList = new List <AvatarModel>();
                tempAvatarList.AvatarList.AddRange(tempList);
                tempAvatarList.ListLevel = i;
                SelectedAvatarViewModel.AvatarLevelList.Add(tempAvatarList);
            }

            SelectedAvatarViewModel.SelectedAvatar = myAvatar;
            SelectedAvatarViewModel.Student        = myStudent;

            return(View(SelectedAvatarViewModel));
        }
コード例 #28
0
        public ActionResult Avatar(AvatarViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("_Avatar", model));
            }

            var imageFilePath = SaveImage(model.AttachedImage, nameof(Avatar));

            _userService.UpdateAvatar(UserHelper.UserId.Value, imageFilePath);

            var userId = UserHelper.UserId;

            Session.Remove(USER_ACCOUNT);

            Session.Add(USER_ACCOUNT, _userService.GetUser(userId.Value));

            return(this.Content("Refresh"));
        }
コード例 #29
0
        public ActionResult Edit([Bind(Include = "Id,Name,DataInHttpPostedFileBase")] AvatarViewModel avatarViewModel)
        {
            if (ModelState.IsValid)
            {
                Avatar avatar = new Avatar();

                if (avatarViewModel.DataInHttpPostedFileBase != null)
                {
                    avatar.Data = ConvertHttpPostedFileBaseToByteArray(avatarViewModel.DataInHttpPostedFileBase);
                }

                avatar.Name = avatarViewModel.Name;

                db.Entry(avatar).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(avatarViewModel));
        }
コード例 #30
0
        public async Task <IActionResult> Avatar(AvatarViewModel model)
        {
            var cuser = await GetCurrentUserAsync();

            if (!ModelState.IsValid)
            {
                model.ModelStateValid = false;
                model.Recover(cuser);
                return(View(model));
            }
            var uploadedProbeFile = await _storageService.SaveToProbe(Request.Form.Files.First(), _configuration["UserIconSiteName"], $"{DateTime.UtcNow.ToString("yyyy-MM-dd")}", SaveFileOptions.RandomName);

            cuser.IconFilePath = $"{uploadedProbeFile.SiteName}/{uploadedProbeFile.FilePath}";
            await _userService.ChangeProfileAsync(cuser.Id, await _appsContainer.AccessToken(), cuser.NickName, cuser.IconFilePath, cuser.Bio);

            await _userManager.UpdateAsync(cuser);

            return(RedirectToAction(nameof(Avatar), new { JustHaveUpdated = true }));
        }