public async Task <IHttpActionResult> PostUser(UserRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (request.ImageArray != null && request.ImageArray.Length > 0)
            {
                var stream   = new MemoryStream(request.ImageArray);
                var guid     = Guid.NewGuid().ToString();
                var file     = string.Format("{0}.jpg", guid);
                var folder   = "~/Content/Users";
                var fullPath = string.Format("{0}/{1}", folder, file);
                var response = FilesHelper.UploadPhoto(stream, folder, file);

                if (response)
                {
                    request.Picture = fullPath;
                }
            }

            var user = ToUser(request);

            _db.Users.Add(user);
            await _db.SaveChangesAsync();

            CreateUserAsp(request.Email, "User", request.Password);

            return(CreatedAtRoute("DefaultApi", new { id = user.UserId }, user));
        }
        public async Task <IHttpActionResult> PutUser(int id, UserRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != request.UserId)
            {
                return(BadRequest());
            }

            var oldUser = await _db.Users.FindAsync(id);

            if (oldUser == null)
            {
                return(NotFound());
            }

            var oldEmail       = oldUser.Email;
            var isEmailChanged = oldUser.Email.ToLower() != request.Email.ToLower();

            if (request.ImageArray != null && request.ImageArray.Length > 0)
            {
                var stream   = new MemoryStream(request.ImageArray);
                var guid     = Guid.NewGuid().ToString();
                var file     = string.Format("{0}.jpg", guid);
                var folder   = "~/Content/Users";
                var fullPath = string.Format("{0}/{1}", folder, file);
                var response = FilesHelper.UploadPhoto(stream, folder, file);

                if (response)
                {
                    request.Picture = fullPath;
                }
            }
            else
            {
                request.Picture = oldUser.Picture;
            }

            oldUser.Email            = request.Email;
            oldUser.FavoriteTeamId   = request.FavoriteTeamId;
            oldUser.FirstName        = request.FirstName;
            oldUser.LastName         = request.LastName;
            oldUser.NickName         = request.NickName;
            oldUser.Picture          = request.Picture;
            _db.Entry(oldUser).State = EntityState.Modified;

            try
            {
                await _db.SaveChangesAsync();

                if (isEmailChanged)
                {
                    UpdateUserName(oldEmail, request.Email);
                }

                return(Ok(oldUser));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }