diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 56e31de..fc15d69 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + @@ -15,8 +16,12 @@ + + + tools:targetApi="31" + > + + + + @@ -94,4 +106,4 @@ android:resource="@array/preloaded_fonts" /> - + \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/adapter/AdapterProduto.kt b/app/src/main/java/com/example/projetosaveit/adapter/AdapterProduto.kt index 6d7afcc..f775124 100644 --- a/app/src/main/java/com/example/projetosaveit/adapter/AdapterProduto.kt +++ b/app/src/main/java/com/example/projetosaveit/adapter/AdapterProduto.kt @@ -3,6 +3,7 @@ package com.example.projetosaveit.adapter import android.app.AlertDialog import android.content.Intent import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import java.util.Date @@ -19,13 +20,13 @@ import com.example.projetosaveit.R import com.example.projetosaveit.adapter.recycleView.Produto import com.example.projetosaveit.api.repository.EstoqueRepository import com.example.projetosaveit.api.repository.LoteRepository -import com.example.projetosaveit.api.repository.ProdutoRepository import com.example.projetosaveit.api.repository.VitrineRepository import com.example.projetosaveit.model.EstoqueDTO import com.example.projetosaveit.model.ProdutoInfoDTO import com.example.projetosaveit.model.VitrineDTO import com.example.projetosaveit.model.VitrineInsertDTO import com.example.projetosaveit.ui.TelaEstoque +import com.example.projetosaveit.util.NotificaoUtils import com.google.android.material.appbar.MaterialToolbar import okhttp3.ResponseBody import java.text.SimpleDateFormat @@ -38,7 +39,7 @@ class AdapterProduto : RecyclerView.Adapter() { var listProdutos = listOf() var repository : LoteRepository = LoteRepository() var repositoryVitrine : VitrineRepository = VitrineRepository() - var produtoRepository : ProdutoRepository = ProdutoRepository() + var repositoryEstoque : EstoqueRepository = EstoqueRepository() override fun onCreateViewHolder( parent: ViewGroup, @@ -85,7 +86,10 @@ class AdapterProduto : RecyclerView.Adapter() { cancelBtn.setOnClickListener { dialog.dismiss() } saveBtn.setOnClickListener { val quantidade = editQuantidade.text.toString().toInt() - val vitrineInsert : VitrineInsertDTO = VitrineInsertDTO("", produto.batchId, quantidade, Date()) + val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault()) + val currentDate = sdf.format(Date()) + + val vitrineInsert = VitrineInsertDTO("", produto.batchId, quantidade, currentDate) repositoryVitrine.postVitrine(vitrineInsert).enqueue(object : retrofit2.Callback { override fun onResponse( @@ -93,29 +97,32 @@ class AdapterProduto : RecyclerView.Adapter() { response: retrofit2.Response ) { if (response.isSuccessful) { - Toast.makeText(holder.itemView.context, "Produto adicionado à vitrine com sucesso!", Toast.LENGTH_LONG).show() - val updates = mapOf("quatity" to produto.quantity.toInt() - quantidade) - repository.patchProdutoId(produto.id, updates).enqueue(object : retrofit2.Callback { + + val apenasNumero = produto.quantity.filter { it.isDigit() } + val quantidadeAtual = apenasNumero.toInt() + + NotificaoUtils.notificarProdutoAdicionado( + holder.itemView.context, + produto.name + ) + + var estoque : EstoqueDTO = EstoqueDTO(0, 0, quantidadeAtual - quantidade, produto.batchId, produto.id, 0, "", currentDate) + repositoryEstoque.postEstoque(estoque).enqueue(object : retrofit2.Callback { override fun onResponse( call: retrofit2.Call, response: retrofit2.Response ) { if (response.isSuccessful) { - var estoque : EstoqueDTO = EstoqueDTO(0, 0, produto.quantity.toInt() - quantidade, produto.batchId, produto.id, 0, "", LocalDateTime.now()) - produtoRepository.postProduto(estoque).enqueue(object : retrofit2.Callback { - override fun onResponse( - call: retrofit2.Call, - response: retrofit2.Response - ) { - if (response.isSuccessful) { - Toast.makeText(holder.itemView.context, "O estoque foi atualizado junto com inserção na vitrine", Toast.LENGTH_LONG).show() - } - } - - override fun onFailure(call: retrofit2.Call, t: Throwable) { - Toast.makeText(holder.itemView.context, "Erro ao atualizar estoque: ${t.message}", Toast.LENGTH_LONG).show() - } - }) + Toast.makeText(holder.itemView.context, "O estoque foi atualizado junto com inserção na vitrine", Toast.LENGTH_LONG).show() + }else { + val errorBodyString = try { + response.errorBody()?.string() + } catch (e: Exception) { + "Erro desconhecido ao ler o corpo de erro" + } + + Log.e("API_ERROR", "Erro na API: $errorBodyString") + Toast.makeText(context, errorBodyString ?: "Erro desconhecido", Toast.LENGTH_LONG).show() } } @@ -123,6 +130,15 @@ class AdapterProduto : RecyclerView.Adapter() { Toast.makeText(holder.itemView.context, "Erro ao atualizar estoque: ${t.message}", Toast.LENGTH_LONG).show() } }) + }else { + val errorBodyString = try { + response.errorBody()?.string() + } catch (e: Exception) { + "Erro desconhecido ao ler o corpo de erro" + } + + Log.e("API_ERROR", "Erro na API: $errorBodyString") + Toast.makeText(context, errorBodyString ?: "Erro desconhecido", Toast.LENGTH_LONG).show() } } @@ -140,7 +156,7 @@ class AdapterProduto : RecyclerView.Adapter() { } else -> { - repository.getProdutoId(produto.id).enqueue(object : retrofit2.Callback { + repository.getProdutoId(produto.batchId).enqueue(object : retrofit2.Callback { override fun onResponse( call: retrofit2.Call, response: retrofit2.Response @@ -174,6 +190,7 @@ class AdapterProduto : RecyclerView.Adapter() { bundle.putString("quantidadeMostrada", produto?.batchResponseDTO?.quantity.toString()) bundle.putString("marcaProduto", produto?.productResponseDTO?.brand) bundle.putString("skuProduto", produto?.batchResponseDTO?.batchCode) + bundle.putLong("idProduto", produto?.productResponseDTO?.id!!) val intent : Intent = Intent(holder.itemView.context, TelaEstoque::class.java) intent.putExtras(bundle) diff --git a/app/src/main/java/com/example/projetosaveit/adapter/AdapterVitrine.kt b/app/src/main/java/com/example/projetosaveit/adapter/AdapterVitrine.kt index 45b3fb6..c3ae3f7 100644 --- a/app/src/main/java/com/example/projetosaveit/adapter/AdapterVitrine.kt +++ b/app/src/main/java/com/example/projetosaveit/adapter/AdapterVitrine.kt @@ -49,6 +49,7 @@ class AdapterVitrine() : RecyclerView.Adapter() { val intent = Intent(context, ProdutoVitrine::class.java) val bundle : Bundle = Bundle() + bundle.putLong("idEmpresa", response.body()?.enterpriseId ?: 0L) bundle.putLong("idVitrine", itemVitrine.id) bundle.putString("nomeVitrine", itemVitrine.name) bundle.putString("imagemVitrine", itemVitrine.image) diff --git a/app/src/main/java/com/example/projetosaveit/adapter/recycleView/Produto.kt b/app/src/main/java/com/example/projetosaveit/adapter/recycleView/Produto.kt index eede569..1664483 100644 --- a/app/src/main/java/com/example/projetosaveit/adapter/recycleView/Produto.kt +++ b/app/src/main/java/com/example/projetosaveit/adapter/recycleView/Produto.kt @@ -2,11 +2,11 @@ package com.example.projetosaveit.adapter.recycleView import java.util.Date -class Produto( +data class Produto( var name : String, var quantity : String, var expirationDate : Date, var image : String, var batchId : Long, var id : Long -) {} \ No newline at end of file +) \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/api/network/ApiService.kt b/app/src/main/java/com/example/projetosaveit/api/network/ApiService.kt index f5e9561..dc1c406 100644 --- a/app/src/main/java/com/example/projetosaveit/api/network/ApiService.kt +++ b/app/src/main/java/com/example/projetosaveit/api/network/ApiService.kt @@ -3,17 +3,22 @@ package com.example.projetosaveit.api.network import com.example.projetosaveit.adapter.recycleView.Produto import com.example.projetosaveit.adapter.recycleView.Vitrine import com.example.projetosaveit.model.ChatDTO +import com.example.projetosaveit.model.ChatRequest +import com.example.projetosaveit.model.ChatResponse import com.example.projetosaveit.model.EmpresaDTO import com.example.projetosaveit.model.EmpresaInsertDTO import com.example.projetosaveit.model.EstoqueDTO -import com.example.projetosaveit.model.EstoqueInsertDTO import com.example.projetosaveit.model.FuncionarioDTO import com.example.projetosaveit.model.FuncionarioInsertDTO +import com.example.projetosaveit.model.HistoricoResponse import com.example.projetosaveit.model.ImagemDTO +import com.example.projetosaveit.model.IniciarChatRequest +import com.example.projetosaveit.model.IniciarChatResponse import com.example.projetosaveit.model.LoteDTO import com.example.projetosaveit.model.LoteInsertDTO import com.example.projetosaveit.model.ProdutoInfoDTO import com.example.projetosaveit.model.RelatorioDTO +import com.example.projetosaveit.model.RelatorioProdutoDTO import com.example.projetosaveit.model.VitrineDTO import com.example.projetosaveit.model.VitrineInsertDTO import okhttp3.ResponseBody @@ -30,8 +35,18 @@ interface ApiService { // API de SQL - @POST("api/product/inserir") - fun postProduto(@Body estoque : EstoqueDTO) : Call + @GET("api/stock/relatorioProdutoPorProduto/{enterpriseId}/{productId}") + fun getRelatorioProduto(@Path("enterpriseId") enterpriseId: Long, @Path("productId") productId: Long + ): Call> + + @GET("api/stock/relatorioProduto/{enterpriseId}") + fun getRelatorioProdutos(@Path("enterpriseId") idEmpresa : Long): Call> + + @POST("/api/stock/inserir") + fun postEstoque(@Body estoque : EstoqueDTO) : Call + + @GET("/api/batch/selecionarSku/{sku}") + fun getBatchSku(@Path("sku") sku : String) : Call @GET("api/batch/listarProdutosLote/{enterpriseId}") fun getProdutos(@Path("enterpriseId") idEmpresa : Long): Call> @@ -81,34 +96,41 @@ interface ApiService { @GET("api/employee/buscarPorEmail/{email}") fun getFuncionarioEmail(@Path("email") email : String): Call - @GET("api/stock/relatorioProduto/{enterpriseId}") - fun getRelatorioProdutos(@Path("enterpriseId") idEmpresa : Long): Call> + @GET("api/showcase/novos") + fun getVitrinesNovas( + @Query("ultimoCheck") ultimoCheck: String + ): Call> - @GET("api/batch/selecionarSku/{sku}") - fun getBatchSku(@Path("sku") sku : String): Call +// API de Mongo/WebSocket - @POST("api/stock/inserir") - fun postEstoque(@Body estoque : EstoqueInsertDTO) : Call - -// API de Mongo - - @GET("chats/enterprise/{enterpriseId}") + @GET("chats/empresa/{enterpriseId}") fun getChatsEmpresa( @Path("enterpriseId") idEmpresa: Long ): Call> - @GET("chats/ultimamensagem") + @GET("chats/ultimaMensagemDoChat") fun getChatUltimaMensagem( @Query("chatId") idChat: Long, @Query("enterpriseId") idEmpresa: Long ): Call - @GET("chats/outraempresa") + @GET("chats/buscarOutraEmpresa") fun getChatOutraEmpresa( @Query("chatId") idChat: Long, @Query("enterpriseId") idEmpresa: Long ): Call - @GET("chats/buscarchatweb") + @GET("chats/buscarChatWebSocket") fun getChatsHistorico( @Query("chatId") idChat: Long ): Call> + +// API de Chatbot + + @POST("iniciar_chat") + fun iniciarChat(@Body request: IniciarChatRequest): Call + + @POST("executar_fluxo") + fun enviarMensagem(@Body request: ChatRequest): Call + + @GET("obter_historico") + fun obterHistorico(@Query("session_id") sessionId: String): Call } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/api/network/RetrofitClientSql.kt b/app/src/main/java/com/example/projetosaveit/api/network/RetrofitClientSql.kt index e476829..66fc763 100644 --- a/app/src/main/java/com/example/projetosaveit/api/network/RetrofitClientSql.kt +++ b/app/src/main/java/com/example/projetosaveit/api/network/RetrofitClientSql.kt @@ -6,7 +6,7 @@ import okhttp3.OkHttpClient object RetrofitClientSql { - private const val BASE_URL = "https://apisaveit.onrender.com/" + private const val BASE_URL = "https://apisaveit.onrender.com" private const val API_TOKEN = "essentiasaveit-193812-paoea-oei" private val client = OkHttpClient.Builder() @@ -28,4 +28,4 @@ object RetrofitClientSql { val instance: ApiService by lazy { retrofit.create(ApiService::class.java) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/projetosaveit/api/repository/EstoqueRepository.kt b/app/src/main/java/com/example/projetosaveit/api/repository/EstoqueRepository.kt index 49b9a19..f0f81a1 100644 --- a/app/src/main/java/com/example/projetosaveit/api/repository/EstoqueRepository.kt +++ b/app/src/main/java/com/example/projetosaveit/api/repository/EstoqueRepository.kt @@ -5,6 +5,7 @@ import com.example.projetosaveit.api.network.RetrofitClientSql import com.example.projetosaveit.model.EstoqueDTO import com.example.projetosaveit.model.EstoqueInsertDTO import com.example.projetosaveit.model.RelatorioDTO +import com.example.projetosaveit.model.RelatorioProdutoDTO import okhttp3.Response import okhttp3.ResponseBody import retrofit2.Call @@ -15,7 +16,11 @@ class EstoqueRepository { return RetrofitClientSql.instance.getRelatorioProdutos(enterpriseId) } - fun postEstoque(estoque: EstoqueInsertDTO) : Call { + fun postEstoque(estoque: EstoqueDTO) : Call { return RetrofitClientSql.instance.postEstoque(estoque) } + + fun getRelatorioProduto(enterpriseId : Long, productId : Long) : Call> { + return RetrofitClientSql.instance.getRelatorioProduto(enterpriseId, productId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/api/repository/ProdutoRepository.kt b/app/src/main/java/com/example/projetosaveit/api/repository/ProdutoRepository.kt index 1be77e1..8717238 100644 --- a/app/src/main/java/com/example/projetosaveit/api/repository/ProdutoRepository.kt +++ b/app/src/main/java/com/example/projetosaveit/api/repository/ProdutoRepository.kt @@ -10,7 +10,5 @@ import retrofit2.Response class ProdutoRepository { - fun postProduto(estoque : EstoqueDTO) : Call { - return RetrofitClientSql.instance.postProduto(estoque) - } + // por enquanto nada... } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/api/repository/VitrineRepository.kt b/app/src/main/java/com/example/projetosaveit/api/repository/VitrineRepository.kt index 923eee3..810f6ad 100644 --- a/app/src/main/java/com/example/projetosaveit/api/repository/VitrineRepository.kt +++ b/app/src/main/java/com/example/projetosaveit/api/repository/VitrineRepository.kt @@ -12,4 +12,6 @@ class VitrineRepository { fun getVitrineEmpresa(enterpriseId : Long) = RetrofitClientSql.instance.getVitrinesEmpresa(enterpriseId) fun postVitrine(showcase : VitrineInsertDTO) = RetrofitClientSql.instance.postVitrine(showcase) + + fun getVitrineNovas(ultimoCheck: String) = RetrofitClientSql.instance.getVitrinesNovas(ultimoCheck) } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/model/EstoqueDTO.kt b/app/src/main/java/com/example/projetosaveit/model/EstoqueDTO.kt index 5562c63..1ad1e30 100644 --- a/app/src/main/java/com/example/projetosaveit/model/EstoqueDTO.kt +++ b/app/src/main/java/com/example/projetosaveit/model/EstoqueDTO.kt @@ -10,5 +10,5 @@ class EstoqueDTO ( var productId : Long, var discardQuantity : Int, var discardReason : String, - var createdAt : LocalDateTime + var createdAt : String ) \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/model/RelatorioProdutoDTO.kt b/app/src/main/java/com/example/projetosaveit/model/RelatorioProdutoDTO.kt new file mode 100644 index 0000000..b2c4d69 --- /dev/null +++ b/app/src/main/java/com/example/projetosaveit/model/RelatorioProdutoDTO.kt @@ -0,0 +1,7 @@ +package com.example.projetosaveit.model + +data class RelatorioProdutoDTO( + val totalOutput: Int, + val mouthInput: Int +) { +} \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/model/VitrineDTO.kt b/app/src/main/java/com/example/projetosaveit/model/VitrineDTO.kt index 573682e..5e30156 100644 --- a/app/src/main/java/com/example/projetosaveit/model/VitrineDTO.kt +++ b/app/src/main/java/com/example/projetosaveit/model/VitrineDTO.kt @@ -5,13 +5,12 @@ class VitrineDTO( var name: String, var description: String, var image: String, - var price: Double, - var productId: Long, var loteId: Long, var tipoPeso: String, var quantidadeGeral: Int, var empresa: String, var localizacao: String, - var validade: String + var validade: String, + var enterpriseId: Long ) { } diff --git a/app/src/main/java/com/example/projetosaveit/model/VitrineInsertDTO.kt b/app/src/main/java/com/example/projetosaveit/model/VitrineInsertDTO.kt index e4f7749..f76929d 100644 --- a/app/src/main/java/com/example/projetosaveit/model/VitrineInsertDTO.kt +++ b/app/src/main/java/com/example/projetosaveit/model/VitrineInsertDTO.kt @@ -6,6 +6,6 @@ class VitrineInsertDTO( var description : String, var batchId : Long, var quantityShowcase : Int, - var entranceDate : Date + var entranceDate : String ) { } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/ui/AdicionarProduto.kt b/app/src/main/java/com/example/projetosaveit/ui/AdicionarProduto.kt index 448698d..9357986 100644 --- a/app/src/main/java/com/example/projetosaveit/ui/AdicionarProduto.kt +++ b/app/src/main/java/com/example/projetosaveit/ui/AdicionarProduto.kt @@ -216,6 +216,10 @@ class AdicionarProduto : AppCompatActivity() { inserirProduto(lote) } } + + findViewById(R.id.btVoltarAdicaoProduto).setOnClickListener { + finish() + } } @@ -332,6 +336,7 @@ class AdicionarProduto : AppCompatActivity() { }, onError = { e -> Toast.makeText(this@AdicionarProduto, "Erro no upload: ${e.message}", Toast.LENGTH_SHORT).show() + Log.d(ContentValues.TAG, "Erro no upload: ${e.message}") } ) } @@ -410,8 +415,13 @@ class AdicionarProduto : AppCompatActivity() { } private fun openGallery() { - val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) - startActivityForResult(intent, REQUEST_IMAGE_PICK) + if (ContextCompat.checkSelfPermission(this@AdicionarProduto, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + requestCameraPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE) + return + } else { + val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) + startActivityForResult(intent, REQUEST_IMAGE_PICK) + } } private fun openCamera() { diff --git a/app/src/main/java/com/example/projetosaveit/ui/AdicionarProdutoVitrine.kt b/app/src/main/java/com/example/projetosaveit/ui/AdicionarProdutoVitrine.kt index ad8f318..1576013 100644 --- a/app/src/main/java/com/example/projetosaveit/ui/AdicionarProdutoVitrine.kt +++ b/app/src/main/java/com/example/projetosaveit/ui/AdicionarProdutoVitrine.kt @@ -1,11 +1,14 @@ package com.example.projetosaveit.ui import android.app.AlertDialog +import android.content.pm.PackageManager +import android.os.Build import android.widget.Toast import android.os.Bundle import android.view.WindowManager import android.widget.Button import android.widget.EditText +import android.widget.ImageView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat @@ -27,6 +30,13 @@ class AdicionarProdutoVitrine : AppCompatActivity() { val objAutenticar: FirebaseAuth = FirebaseAuth.getInstance() var idEmpresa : Long = 0 + private val PERMISSION_REQUEST_CODE = 1001 + + override fun onStart() { + super.onStart() + pedirPermissaoNotificacao() + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() @@ -60,6 +70,10 @@ class AdicionarProdutoVitrine : AppCompatActivity() { } } + findViewById(R.id.btVoltarAdicaoVitrine).setOnClickListener { + finish() + } + } private fun carregarProdutos(idEmpresa: Long) { @@ -78,4 +92,30 @@ class AdicionarProdutoVitrine : AppCompatActivity() { } }) } + + private fun pedirPermissaoNotificacao() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED + ) { + requestPermissions( + arrayOf(android.Manifest.permission.POST_NOTIFICATIONS), + PERMISSION_REQUEST_CODE + ) + } + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, permissions: Array, grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == PERMISSION_REQUEST_CODE) { + if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { + Toast.makeText(this, "Permissão de notificações concedida", Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this, "Permissão de notificações negada", Toast.LENGTH_SHORT).show() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/projetosaveit/ui/AtualizarNome.kt b/app/src/main/java/com/example/projetosaveit/ui/AtualizarNome.kt new file mode 100644 index 0000000..d29c8f0 --- /dev/null +++ b/app/src/main/java/com/example/projetosaveit/ui/AtualizarNome.kt @@ -0,0 +1,70 @@ +package com.example.projetosaveit.ui + +import android.os.Bundle +import android.util.Log +import android.widget.Button +import android.widget.EditText +import android.widget.ImageView +import android.widget.Toast +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import com.example.projetosaveit.R +import com.example.projetosaveit.api.repository.EmpresaRepository +import com.example.projetosaveit.util.GetEmpresa +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + +class AtualizarNome : AppCompatActivity() { + private val empresaRepository = EmpresaRepository() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContentView(R.layout.activity_atualizar_nome) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + + findViewById