Jump to content
kandrus

Organização de um sistema MVC

Recommended Posts

Boa tarde!!

Estou com uma dúvida de arquitetura me corroendo onde eu coloco o código de um controle de estoque e onde faço sua chamada?


 

Estou desenvolvendo um sistema que entre os seus módulos tera um controle de estoque, como eu organizo o código deste módulo.

Vamos a um exemplo:

Toda vez que eu fizer uma venda preciso diminuir o numero de itens do produto vendido da tabela produtos.

A função/metodo dimiuirItem() {bla bla}
Deve ficar no EstoqueController ?


Ou crio uma camada a mais na arquitetura MVC apenas para guardar as classes de controle de estoques ?

Ou ainda desenvolvo tudo no Model.

E caso a nova camada seja o mais correto a fazer onde devo chamar os métodos dentro do Model ou nos Controllers?

Muito obrgado e desculpem o tamanho da duvida kkkk


 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By binds
      Olá Caríssimos,
       
      Não tenho muito conhecimento de javascript, desde já agradeço se alguém puder me ajudar.
      Preciso criar uma página simples de validação por idade para acessar uma página, a ideia é simples:
      se a pessoa nasceu antes de 2002 redireciona a página meusite_com_br/maior 
      mas se ela nasceu depois de 2002 redireciona a página meusite_com_br/menor
      Garimpando achei o código abaixo que fiz alguns ajustes, porém não sei como abrir as respectivas paginas meusite_com_br/menor ou meusite_com_br/maior como resultado, o resultado nesse caso são textos:  "MENOR 18" : "MAIOR DE 18"
       
      <!DOCTYPE html> <html> <body> <CENTER> <h2>Validador de Idade</h2> <p>Digite o ano que você nasceu para acessar o site:</p> <input id="age" value="Ex: 1990" /> <br> <button onclick="myFunction()">ACESSAR SITE</button> <p id="demo"></p> <script> function myFunction() {   var age, voteable;   age = Number(document.getElementById("age").value);   if (isNaN(age)) {     voteable = "Você não inseriu um ano válido. <BR> Exemplo: 2020";   } else {     voteable = (age > 2002) ? "MENOR 18" : "MAIOR DE 18";   }   document.getElementById("demo").innerHTML = voteable; } </script> </CENTER> </body> </html>  
      Novamente agradeço a ajuda!
      Luis
       
    • By violin101
      Caros amigos, saudações...
       
      Desculpa em recorrer aos amigos, mas estou com uma dúvida referente a SOMA total de uma coluna da TABELA.
       
      Abaixo postei o trecho onde alimento a Tabela via Javascript.
       
      os Campos(input) são passado dessa forma:
      ====[ qtde......: 3
      ====[ vlrunit...: 1,01
      ====[ vlrtotal..: 3,03
       
      O Problema que estou me deparando é a Soma Total do Campo vlrtotal.
      $("#btn-agregar").on("click",function(){ //Recebe dados do Forumulário e Atualiza a Tabela var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotal = document.getElementById("vlrtotal").value; if(qtde == "" || vlrunit == "" || vlrtotal == ""){ alert("Atenção! Nenhuma QUANTIDADE ou VALOR foi informado."); } else { html = "<tr>"; html += "<td><input type='hidden' name='idProdutos[]' value='"+infoprd[0]+"'>"+infoprd[1]+"</td>"; html += "<td><input type='hidden' name='descricao[]' value='"+infoprd[2]+"'>"+infoprd[2]+"</td>"; html += "<td style='text-align:center;'>"+infoprd[3]+"</td>"; html += "<td style='text-align:center;'>"+qtde+"</td>"; html += "<td style='text-align:right;'>"+vlrunit+"</td>"; html += "<td style='text-align:right;'>"+vlrtotal+"</td>"; html += "<td style='text-align:center;'>"+ "<button type='button' class='btn btn-danger btn-remove-produto' style='padding: 2px 5px;' title='Remover Item da Lista'>"+ "<span class='fa fa-remove'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); sumar(); $("#btn-agregar").val(null); $("#descricao").val(null); $("#cod_interno").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); } });  
      O trecho do Código abaixo é a função para realizar a soma.
      function sumar(){ subtotal = 0; $("#tbventas tbody tr").each(function(){ subtotal = subtotal + Number($(this).find("td:eq(5)").text()); }); $("input[name=subtotal]").val(subtotal.toFixed(2)); }  
       
      Infelizmente não consigo realizar a Soma do VlrTotal, o sistema mostra apenas NaN, ou apenas 0.
       
      Como consigo efetuar a soma correta no Formato MOEDA ?
       
      Grato,
       
       
      Cesar
       
       
    • By marsolim
      fala rapaziada tudo bem? sabe me dizer se tem diferença de performance, de compatibilidade e etc e tal entre o jquery $(this).val() e o javascript puro this.value? tava tentando pesquisar aqui mas não achei nada sobre.
      grato
    • By SaraAlcaras
      Olá galera! Estou criando um jogo da velha para coloca no meu portfólio, porem estou com um pequeno problema que não consigo resolver.. Quando o jogo finaliza a tela da uma ampliada/expandida no tamanho é quase imperceptível porem é algo que eu gostaria de mudar. Qual propriedade posso usar no css pra evitar que isso aconteça?
       
      Código CSS:

       
      :root{ --O-color: rgb(10, 177, 243); --X-color: rgb(253, 148, 148); --E-color: rgb(0, 0, 0); } * { margin: 0; padding:0; box-sizing: border-box; } body { display: grid; align-items: center; justify-content: center; font-family: grenze; height: 100vh; background-color: rgb(153, 153, 153); } .nextPlayer{ color: rgb(60, 62, 63); border: 1px solid rgb(211, 223, 104); box-shadow: 3px 5px 12px rgb(0, 0, 0); } .players { color: rgb(60, 62, 63); border: 1px solid rgb(211, 223, 104); box-shadow: 3px 5px 12px rgb(0, 0, 0); height: 55px; display: flex; flex-direction: column; justify-content: space-evenly; } .player{ display: flex; } .topo { display: flex; flex-direction: row; align-items: center; justify-content: space-evenly; margin-bottom: 20px; } .topo .players, .topo .nextPlayer { font-family: grenze; font-weight: bold; border-radius: 4px; } .title { font-size: 3rem; color: rgb(60, 62, 63); margin-bottom: 0; } .title2 { display: none; } .board { display: grid; grid-template-columns: repeat(3, 178px); grid-template-rows: repeat(3, 130px); gap: 1rem; cursor: pointer; } .board.game-over{ opacity: 0.10; } .cell { display: grid; align-items: center; justify-content: center; background-color: white; border-radius: 4px; font-size: 2rem; font-weight: bold; color: #00000066; } .cell:not(.O):not(.X):hover { box-sizing: 0 20px 25px -5px rgba(0, 0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0, 0.4); } .cell.O, .cell.X, .game-over .cell { cursor: not-allowed; } .cell.O { background-color: var(--O-color); } .cell.X { background-color: var(--X-color); } footer{ text-align: center; font-size: 30px; } .winner-message{ margin: 1rem; } .winner-message span.O{ color: var(--O-color); } .winner-message span.X{ color: var(--X-color); } .winner-message span.E{ color: var(--E-color); } button { padding: 0.9rem 1.5rem; border: none; border-radius: 5px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0, 0.6); background-color: rgb(68, 255, 146); color: white; font-size: 1.2rem; cursor: pointer; } @media only screen and (max-width: 767px) and (orientation:portrait) { body { width: 100%; text-align: justify; } .board{ grid-template-columns: repeat(3, 88px); grid-template-rows: repeat(3, 80px); -webkit-tap-highlight-color: transparent; } button { font-size: 10px; } .cell { border-radius: 3px; font-size: 1rem; } footer { font-size: 13px; } .title { font-size: 1.5rem; display: none; padding: 0.6em; /* transform: translateY(80%); */ } .title2 { display: flex; font-size: 1.5rem; padding: 0.6em; color: rgb(60, 62, 63); } .topo{ flex-direction: column; } .players { height: 65px; width: 95px; align-items: center; } .nextPlayer{ text-align: center; height: 22px; width: 118px; /* transform: translateY(-150%); */ } } @media only screen and (max-width: 767px) and (orientation:landscape) { body { width: 100%; text-align: justify; } .board { grid-template-columns: repeat(3, 60px); grid-template-rows: repeat(3, 60px); -webkit-tap-highlight-color: transparent; } footer { font-size: 0.5rem; display: flex; flex-direction: row; align-items: center; justify-content: space-evenly; } button { font-size: 0.5rem; } .title { font-size: 0.8rem; } .players{ height: 30px; width: 50px; align-items: center; font-size: 0.5rem; } .nextPlayer{ text-align: center; height: 14px; width: 60px; font-size: 0.5rem; } .cell { border-radius: 3px; font-size: 0.8rem; } } @media only screen and (min-width: 991px) and (max-width: 1200px) { body { width: 100%; text-align: justify; } }

    • By Alberto Nascimento
      i("resultado").innerHTML = ((((parseFloat(c1) * parseFloat(c2)) + ... Quando migrei para o servidor 7.2 parou de funcionar
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.