public IHttpActionResult ChangeProfileAvatar([FromBody] AvatarBindingModel stringAvatar) { if (stringAvatar.stringBase64 != null && stringAvatar.stringBase64.Length > 10) { var currentUserId = User.Identity.GetUserId(); if (currentUserId == null) { return(BadRequest()); } var avatarBase64 = Convert.FromBase64String(stringAvatar.stringBase64); this.service.ChangeProfileAvatar(avatarBase64, currentUserId); } else { return(NotFound()); } return(Ok()); }
public async Task <IActionResult> Avatar([FromForm] AvatarBindingModel collection) { if (string.IsNullOrWhiteSpace(collection?.Token)) { return(BadRequest(GeneralMessage.TokenNotFound)); } if (string.IsNullOrWhiteSpace(collection?.DeviceId)) { return(BadRequest(GeneralMessage.DeviceIdNotFound)); } try { var model = _mapper.Map <UserGetSchema>(collection); var user = await _userService.GetAsync(model); switch (model.StatusCode) { case -1: return(BadRequest(GeneralMessage.UserNotFound)); case -2: return(BadRequest(GeneralMessage.UserIsNotActive)); case -3: return(BadRequest(GeneralMessage.PhoneIsNotVerified)); } using (var memoryStream = new MemoryStream()) { await collection.Avatar.CopyToAsync(memoryStream); if (memoryStream.ToArray().Length == 0) { return(BadRequest("فایل فاقد محتوی می باشد")); } if (memoryStream.ToArray().Length > int.Parse(AppSettings.AvatarSize) * 1024) { return(BadRequest("حجم تصویر شما بیشتر از میزان مجاز است")); } var image = new Bitmap(memoryStream); if (!ImageFormats.Contains(image.RawFormat)) { return(BadRequest("نوع تصویر شما از انواع مجاز نمی باشد")); } var avatarResolution = AppSettings.AvatarResolution.Split('x'); if (image.Width * image.Height > int.Parse(avatarResolution[0]) * int.Parse(avatarResolution[1])) { return(BadRequest("اندازه تصویر شما بزرگتر از میزان مجاز است")); } if (!Directory.Exists(AppSettings.FilePath)) { Directory.CreateDirectory(AppSettings.FilePath); } image.Save($@"{AppSettings.FilePath}\{user.UserName}.jpeg", ImageFormat.Jpeg); } var editModel = new UserEditSchema { Token = collection.Token, DeviceId = collection.DeviceId, Avatar = $"{user.UserName}.jpeg" }; await _userService.EditAsync(editModel); switch (model.StatusCode) { case 1: return(Ok()); } } catch (Exception ex) { await _exceptionService.InsertAsync(ex, URL, IP); } return(InternalServerError()); }