public async Task <UserDto> UpdateAsync(string id, CreateUserDto dto)
        {
            AppContext.SetSwitch(
                "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            using var channel = GrpcChannel.ForAddress(_configuration["UserGrpc"]);
            var client = new UserService.UserServiceClient(channel);

            var result = await client.UpdateAsync(new UserUpdateRequest
            {
                Id           = id,
                FirstName    = dto.Firstname,
                LastName     = dto.LastName,
                NationalCode = dto.NationalCode
            });

            if (!result.Success)
            {
                throw new BadRequestException($"Error occured while updating user: {result.ErrorDescription}");
            }

            return(new UserDto
            {
                Firstname = result.FirstName,
                Id = result.Id,
                LastName = result.LastName,
                NationalCode = result.NationalCode
            });
        }
        public async Task <ResponseBaseModel <string> > UpdateUser([FromBody] User request)
        {
            var response = new ResponseBaseModel <string>();

            try
            {
                var result = await _serviceClient.UpdateAsync(request);

                response.SetCode((Enums.ResponseCode)Convert.ToInt32(result.Code));
            }
            catch (Exception e)
            {
                response.SetErrorMsg(e.Message);
            }
            return(response);
        }
        public async Task <IActionResult> Update(UpdateUserDto dto)
        {
            try
            {
                var response = await _client.UpdateAsync(dto);

                if (!string.IsNullOrEmpty(response.Error))
                {
                    if (response.Error == ErrorMessages.UserNotFound)
                    {
                        return(HandleNotFound(response.Error));
                    }

                    return(HandleBadRequest(response.Error));
                }

                return(HandleOk());
            }
            catch (Exception e)
            {
                return(HandleBadGateway(e.Message));
            }
        }
        public async Task <ResponseBaseModel <string> > UpdateUser([FromBody] UpdateUserMessage request)
        {
            var result = await _serviceClient.UpdateAsync(request);

            return(new ResponseBaseModel <string>((ResponseCode)result.Code, null));
        }