Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ 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
Expand All @@ -37,7 +38,7 @@ class AdapterProduto : RecyclerView.Adapter<AdapterProduto.ViewHolder>() {
var listProdutos = listOf<Produto>()
var repository : LoteRepository = LoteRepository()
var repositoryVitrine : VitrineRepository = VitrineRepository()
var repositoryEstoque : EstoqueRepository = EstoqueRepository()
var produtoRepository : ProdutoRepository = ProdutoRepository()

override fun onCreateViewHolder(
parent: ViewGroup,
Expand Down Expand Up @@ -101,7 +102,7 @@ class AdapterProduto : RecyclerView.Adapter<AdapterProduto.ViewHolder>() {
) {
if (response.isSuccessful) {
var estoque : EstoqueDTO = EstoqueDTO(0, 0, produto.quantity.toInt() - quantidade, produto.batchId, produto.id, 0, "", LocalDateTime.now())
repositoryEstoque.postEstoque(estoque).enqueue(object : retrofit2.Callback<ResponseBody> {
produtoRepository.postProduto(estoque).enqueue(object : retrofit2.Callback<ResponseBody> {
override fun onResponse(
call: retrofit2.Call<ResponseBody>,
response: retrofit2.Response<ResponseBody>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ import com.example.projetosaveit.model.ChatDTO
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.ImagemDTO
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.VitrineDTO
import com.example.projetosaveit.model.VitrineInsertDTO
import okhttp3.ResponseBody
Expand All @@ -27,8 +30,8 @@ interface ApiService {

// API de SQL

@POST("/api/product/inserir")
fun postEstoque(@Body estoque : EstoqueDTO) : Call<ResponseBody>
@POST("api/product/inserir")
fun postProduto(@Body estoque : EstoqueDTO) : Call<ResponseBody>

@GET("api/batch/listarProdutosLote/{enterpriseId}")
fun getProdutos(@Path("enterpriseId") idEmpresa : Long): Call<List<Produto>>
Expand Down Expand Up @@ -78,6 +81,15 @@ interface ApiService {
@GET("api/employee/buscarPorEmail/{email}")
fun getFuncionarioEmail(@Path("email") email : String): Call<FuncionarioDTO>

@GET("api/stock/relatorioProduto/{enterpriseId}")
fun getRelatorioProdutos(@Path("enterpriseId") idEmpresa : Long): Call<List<RelatorioDTO>>

@GET("api/batch/selecionarSku/{sku}")
fun getBatchSku(@Path("sku") sku : String): Call<LoteDTO>

@POST("api/stock/inserir")
fun postEstoque(@Body estoque : EstoqueInsertDTO) : Call<ResponseBody>

// API de Mongo

@GET("chats/enterprise/{enterpriseId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@ package com.example.projetosaveit.api.repository
import com.example.projetosaveit.api.network.ApiService
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 okhttp3.Response
import okhttp3.ResponseBody
import retrofit2.Call

class EstoqueRepository {
fun postEstoque(estoque : EstoqueDTO) : Call<ResponseBody> {

fun getRelatorioMensal(enterpriseId: Long): Call<List<RelatorioDTO>> {
return RetrofitClientSql.instance.getRelatorioProdutos(enterpriseId)
}

fun postEstoque(estoque: EstoqueInsertDTO) : Call<ResponseBody> {
return RetrofitClientSql.instance.postEstoque(estoque)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.example.projetosaveit.api.repository

import com.example.projetosaveit.adapter.recycleView.Produto
import com.example.projetosaveit.api.network.RetrofitClientSql
import com.example.projetosaveit.model.LoteDTO
import com.example.projetosaveit.model.LoteInsertDTO
import com.example.projetosaveit.model.ProdutoDTO
import com.example.projetosaveit.model.ProdutoInfoDTO
Expand All @@ -24,4 +25,8 @@ class LoteRepository {
fun patchProdutoId(id : Long, updates : Map<String, @JvmSuppressWildcards Any>): Call<ResponseBody> {
return RetrofitClientSql.instance.patchProdutoId(id, updates)
}

fun getLoteSku(sku: String) : Call<LoteDTO> {
return RetrofitClientSql.instance.getBatchSku(sku)
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package com.example.projetosaveit.api.repository

import com.example.projetosaveit.api.network.ApiService
import com.example.projetosaveit.api.network.RetrofitClientSql
import com.example.projetosaveit.model.EstoqueDTO
import com.example.projetosaveit.model.ProdutoDTO
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response


class ProdutoRepository {
// Por enquanto nada...
fun postProduto(estoque : EstoqueDTO) : Call<ResponseBody> {
return RetrofitClientSql.instance.postProduto(estoque)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.projetosaveit.model

import java.time.LocalDateTime

class EstoqueInsertDTO(
var quantityInput : Int,
var quantityOutput : Int,
var batchId : Long,
var productId : Long,
var discardQuantity : Int,
var discardReason : String,
var createdAt : String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.projetosaveit.model

data class RelatorioDTO(
val totalInput: Int,
val totalOutput: Int,
val totalDiscard: Int,
val monthOutput: Int
)
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class CadastroEndereco : AppCompatActivity() {
).show()
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("plano", 0)
intent.putExtra("tipoFunc", true)
intent.putExtra("tipoFunc", false)
startActivity(intent)
finish()
}
Expand Down
41 changes: 41 additions & 0 deletions app/src/main/java/com/example/projetosaveit/ui/Chatbot.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.example.projetosaveit.ui

import android.os.Bundle
import android.widget.ImageButton
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.example.projetosaveit.R

class Chatbot : AppCompatActivity() {
private lateinit var drawerLayout: DrawerLayout

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_chatbot)
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
}

drawerLayout = findViewById(R.id.drawerLayout)

val btMenu = findViewById<ImageButton>(R.id.btMenu)
btMenu.setOnClickListener {
drawerLayout.openDrawer(GravityCompat.START)
}
}

override fun onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class InserirFuncionario : AppCompatActivity() {
}
}

fun postFuncionario(id: Long) {
private fun postFuncionario(id: Long) {
val nome = findViewById<TextInputEditText>(R.id.nomeFunc).text.toString()
val email = findViewById<TextInputEditText>(R.id.emailFunc).text.toString()
val senha = findViewById<TextInputEditText>(R.id.senhaFunc).text.toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ class TelaCadastro2Comercio : AppCompatActivity() {
findViewById<TextView>(R.id.btnLogin).setOnClickListener {
val intent = Intent(this, Login::class.java)
startActivity(intent)
finish()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,97 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import com.example.projetosaveit.R
import com.example.projetosaveit.api.repository.EstoqueRepository
import com.example.projetosaveit.api.repository.LoteRepository
import com.example.projetosaveit.databinding.FragmentCadastrarRelatorioBinding
import com.example.projetosaveit.model.EstoqueInsertDTO
import com.example.projetosaveit.model.LoteDTO
import com.google.firebase.auth.FirebaseAuth
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response
import java.time.LocalDateTime

/**
* A simple [androidx.fragment.app.Fragment] subclass.
* Use the [CadastrarRelatorio.newInstance] factory method to
* create an instance of this fragment.
*/
class CadastrarRelatorio : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}
private var binding: FragmentCadastrarRelatorioBinding? = null
private val loteRepository = LoteRepository()
private val estoqueRepository = EstoqueRepository()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_cadastrar_relatorio, container, false)
}
): View {
binding = FragmentCadastrarRelatorioBinding.inflate(inflater, container, false)

companion object {
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment CadastrarRelatorio.
*/
// TODO: Rename and change types and number of parameters
@JvmStatic
fun newInstance(param1: String, param2: String) =
CadastrarRelatorio().apply {
binding?.btnCadastrarEstoque?.setOnClickListener {

val sku = binding?.sku?.text.toString()
val qntdProd = binding?.qntdProd?.text.toString()
val qntdSaida = binding?.qntdSaida?.text.toString()
val motivoDescarte = binding?.motivoDescarte?.text.toString()
val qntdDescarte = binding?.qntdDescarte?.text.toString()

if (sku.isBlank() || qntdProd.isBlank() || qntdSaida.isBlank() || qntdDescarte.isBlank()) {
Toast.makeText(requireContext(), "Preencha todos os campos obrigatórios.", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}

val createdAt = LocalDateTime.now()

loteRepository.getLoteSku(sku).enqueue(object : retrofit2.Callback<LoteDTO> {
override fun onResponse(call: Call<LoteDTO>, response: Response<LoteDTO>) {
if (response.isSuccessful) {
val lote = response.body()
if (lote != null) {
val estoqueDto = EstoqueInsertDTO(
quantityInput = qntdProd.toInt(),
quantityOutput = qntdSaida.toInt(),
createdAt = createdAt.toString(),
productId = lote.productId,
batchId = lote.id,
discardReason = motivoDescarte,
discardQuantity = qntdDescarte.toInt()
)

estoqueRepository.postEstoque(estoqueDto)
.enqueue(object : retrofit2.Callback<ResponseBody> {
override fun onResponse(
call: Call<ResponseBody>,
response: Response<ResponseBody>
) {
if (response.isSuccessful) {
Toast.makeText(requireContext(), "Estoque cadastrado com sucesso", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(requireContext(), "Erro ao cadastrar estoque", Toast.LENGTH_SHORT).show()
}
}

override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
Toast.makeText(requireContext(), "Erro ao cadastrar estoque: ${t.message}", Toast.LENGTH_SHORT).show()
}
})
} else {
Toast.makeText(requireContext(), "Lote não encontrado", Toast.LENGTH_SHORT).show()
}
} else {
Toast.makeText(requireContext(), "Erro ao buscar lote", Toast.LENGTH_SHORT).show()
}
}

override fun onFailure(call: Call<LoteDTO>, t: Throwable) {
Toast.makeText(requireContext(), "Erro ao buscar lote: ${t.message}", Toast.LENGTH_SHORT).show()
}
})
}

return binding!!.root
}

override fun onDestroyView() {
super.onDestroyView()
binding = null
}
}

This file was deleted.

Loading