diff --git a/README.md b/README.md index eafbe13..3bb9f27 100755 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Este projeto está sob licença do MIT que permite a qualquer pessoa que obtém - Dashboard -![Dashboard](./layouts/Dashboard%20Menu%20open-%20Bew%20-%20Desktop.png) +![Dashboard](./layouts/Dashboard%20Menu%20open-%20Bew%20-%20Desktop.jpeg) Acesse o layout completo no [Figma](https://www.figma.com/file/VLJiXLRJlLLLioYwbZtI95/BEW?node-id=0%3A1) (ainda em construção). @@ -53,12 +53,13 @@ Acesse o layout completo no [Figma](https://www.figma.com/file/VLJiXLRJlLLLioYwb - [X] Dashboard - [X] Adição e consulta de vendas - [ ] Edição de vendas -- [ ] Adição, consulta e edição de compras +- [x] Adição e consulta de compras +- [ ] Edição de compras - [X] Adição, consulta, edição e remoção de produtos - [X] Adição, consulta, edição e remoção de fornecedores - [X] Adição, consulta, edição e remoção de funcionários - [X] Adição, consulta, edição e remoção de clientes -- [ ] Adição, consulta, edição e remoção de promoções +- [x] Adição, consulta, edição e remoção de promoções - [X] Adição, consulta, edição e remoção de categorias - [ ] Gerenciamento de relatórios diff --git a/layouts/Dashboard - Bew - Desktop.png b/layouts/Dashboard - Bew - Desktop.png deleted file mode 100644 index 9e297a1..0000000 Binary files a/layouts/Dashboard - Bew - Desktop.png and /dev/null differ diff --git a/layouts/Dashboard Menu open- Bew - Desktop.jpeg b/layouts/Dashboard Menu open- Bew - Desktop.jpeg new file mode 100644 index 0000000..8765e5e Binary files /dev/null and b/layouts/Dashboard Menu open- Bew - Desktop.jpeg differ diff --git a/public/css/404.css b/public/css/404.css index 590da89..dad6b4c 100644 --- a/public/css/404.css +++ b/public/css/404.css @@ -1,4 +1,4 @@ -@import "./global.css"; +@import './global.css'; body{ color: var(--laranja); @@ -8,10 +8,16 @@ body{ h1{ font-size: 7rem; } -a{ + +.btnRetornar{ text-decoration: none; - color: var(--laranja); + background-color: var(--laranja); + color: var(--preto); display: flex; align-items: center; + justify-content: center; + border-radius: 5px; + font-weight: 500; margin:1.2rem; + padding: 0.5rem; } diff --git a/public/css/addEmployee.css b/public/css/addEmployee.css index b7f0605..d9109b5 100644 --- a/public/css/addEmployee.css +++ b/public/css/addEmployee.css @@ -1,4 +1,4 @@ -@import "./global.css"; +@import './modal.css'; #funcionarios{ background-color: rgba( 8, 102, 59, 0.47); @@ -18,86 +18,94 @@ main header h1 { padding-right: 10vw; } -.content{ - background-color: var(--cinza-claro); - border-radius: 10px; - display: flex; - align-items: center; - justify-content: center; - font-size: 1.3rem; - color: var(--branco); - overflow-y: scroll; +main .content { + height: 90%; + margin-top: 1%; } -main .content form { +main .content .conteudo-cadastro { display: grid; - grid-column-gap: 3%; - grid-template-columns: auto auto; - margin: 20px; - width: 80%; - height: 90%; + width: 90%; + height: 100%; + margin-left: 5%; + margin-right: 5%; + padding: 2.5% 5%; + grid-template-columns: 50% 50%; + grid-template-rows: repeat(12, 12%, 20%); + column-gap: 15px; + grid-template-areas: + 'label1 label1' + 'nome nome' + 'label2 label3' + 'nivelAcesso cpf' + 'label4 label4' + 'endereco endereco' + 'label5 label6' + 'telefone dataNascimento' + 'label7 label7' + 'email email' + 'label8 label9' + 'usuario senha'; } -.itemTodo{ - grid-column: 1 / span 2; +#nome{ + grid-area: nome; } -label{ - display: flex; +#nivelAcesso{ + grid-area: nivelAcesso; } -.icone{ - margin-right: 5px; +#cpf{ + grid-area: cpf; } -.input{ - background-color: var(--cinza-escuro); - border-radius: 7px; - border: 0; - color: var(--branco); - font-size: 1.3rem; - padding: 0.7rem; - margin-bottom: 2%; - margin-top: 1%; - width: 100%; +#endereco{ + grid-area: endereco; } -.botao{ - display: flex; - align-items: center; - justify-content: center; - border: 0; - border-radius: 5px; - margin-top: 10%; - padding: 10px; - font-family: 'Roboto', sans-serif; - font-size: 1rem; - font-weight: 500; +#telefone{ + grid-area: telefone; } -.btnCancelar{ - background-color: var(--cinza-escuro); - color: var(--branco); +#dataNascimento{ + grid-area: dataNascimento; } -.btnCadastrar{ - background-color: var(--verde); +#email{ + grid-area: email; } -.btnIcone{ - margin-left: 5px; +#usuario{ + grid-area: usuario; } -@media screen and (max-width: 900px){ - .item{ - grid-column: 1 / span 2; - } +#senha{ + grid-area: senha; +} + +.label7{ + grid-area: label7; +} + +main .content .conteudo-cadastro select { + width: 80%; + height: 70%; + border: none; + outline: none; + border-radius: 6px; + color: var(--branco); + background-color: var(--cinza-escuro); + font-size: 18px; + padding: 5px; + padding-left: 10px; + margin-left: 10%; +} - .btnCadastrar{ - margin-top: 4%; - } +.conteudo-cadastro{ + overflow-y: scroll; +} - .content{ - margin-top: 60px; - } +.conteudo-cadastro input{ + margin-bottom: 30px; } diff --git a/public/css/addProduct.css b/public/css/addProduct.css index 291dd41..19f7770 100644 --- a/public/css/addProduct.css +++ b/public/css/addProduct.css @@ -31,7 +31,7 @@ main .content .conteudo-cadastro { margin-right: 5%; padding: 2.5% 5%; grid-template-columns: 50% 50%; - grid-template-rows: repeat(3, 12%, 20%); + grid-template-rows: 12% 20% 12% 20% 12% 20%; column-gap: 15px; grid-template-areas: 'label1 label1' @@ -75,7 +75,3 @@ main .content .conteudo-cadastro select { padding-left: 10px; margin-left: 10%; } - -main .content .conteudo-cadastro select { - grid-area: select; -} diff --git a/public/css/addProductPromotion.css b/public/css/addProductPromotion.css new file mode 100644 index 0000000..152ae4e --- /dev/null +++ b/public/css/addProductPromotion.css @@ -0,0 +1,69 @@ +@import './modal.css'; + +#promocoes { + background-color: rgba(8, 102, 59, 0.47); + border-left-color: black; +} + +#promocoes a { + color: #fff; +} + +main header { + grid-template-columns: 10% 1fr; +} + +main header h1 { + justify-self: center; + padding-right: 10vw; +} + +main .content { + height: 90%; + margin-top: 1%; +} + +main .content .conteudo-cadastro { + display: grid; + width: 70%; + height: 60%; + margin-left: 15%; + margin-right: 5%; + padding: 2.5% 5%; + grid-template-columns: 1fr 80% 1fr; + grid-template-rows: 12% 20% 12% 20% 12% 20%; + column-gap: 15px; + grid-template-areas: + '. label1 .' + '. promocao .' + '. label2 .' + '. produto .' + '. label3 .' + '. desconto .'; +} + +#idPromocao { + grid-area: promocao; +} + +#idProduto { + grid-area: produto; +} + +#valorDesconto { + grid-area: desconto; +} + +select { + width: 80%; + height: 70%; + border: none; + outline: none; + border-radius: 6px; + color: var(--branco); + background-color: var(--cinza-escuro); + font-size: 18px; + padding: 5px; + padding-left: 10px; + margin-left: 10%; +} diff --git a/public/css/addPromotion.css b/public/css/addPromotion.css new file mode 100644 index 0000000..59b8588 --- /dev/null +++ b/public/css/addPromotion.css @@ -0,0 +1,53 @@ +@import './modal.css'; + +#promocoes { + background-color: rgba(8, 102, 59, 0.47); + border-left-color: black; +} + +#promocoes a { + color: #fff; +} + +main header { + grid-template-columns: 10% 1fr; +} + +main header h1 { + justify-self: center; + padding-right: 10vw; +} + +main .content { + height: 90%; + margin-top: 1%; +} + +main .content .conteudo-cadastro { + display: grid; + width: 90%; + height: 60%; + margin-left: 5%; + margin-right: 5%; + padding: 2.5% 5%; + grid-template-columns: 50% 50%; + grid-template-rows: 15% 25% 15% 25%; + column-gap: 15px; + grid-template-areas: + 'label1 label1' + 'nome nome' + 'label2 label3' + 'data1 data2'; +} + +#nome { + grid-area: nome; +} + +#dataInicio { + grid-area: data1; +} + +#dataFim { + grid-area: data2; +} diff --git a/public/css/addPurchases.css b/public/css/addPurchases.css new file mode 100644 index 0000000..fd72950 --- /dev/null +++ b/public/css/addPurchases.css @@ -0,0 +1,314 @@ +@import "./modal.css"; + +#compras { + background-color: rgba(8, 102, 59, 0.47); + border-left-color: black; +} + +#compras a { + color: #fff; +} + +main header { + grid-template-columns: 10% 1fr; +} + +main header h1 { + justify-self: center; + padding-right: 10vw; +} + +main .content { + height: 90%; + margin-top: 1%; +} + +button { + cursor: pointer; +} + +main .content form { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; +} + +form .buttons-modal { + display: flex; + flex-direction: row-reverse; + align-items: center; + justify-content: flex-start; + height: 3vw; +} + +.abrir-modal { + display: flex; + color: var(--branco); + background-color: var(--cinza-claro); + font-size: 1vw; + border-radius: 6px; + border: none; + height: 2vw; + align-items: center; + justify-content: center; + margin: 0 5px; + width: 20%; +} + +form .abrir-modal svg { + height: 1vw; +} + +.modal.produtos div:nth-child(1) { + width: 75%; + height: 75%; + margin: 6.25% 12.5%; +} + +.modal div label { + grid-area: texto; + width: 95%; + text-align: center; + border-radius: 6px; + padding: 2%; + background-color: var(--cinza-escuro); + color: var(--branco); +} + +.modal div label svg { + height: 60%; + margin-top: 3%; +} + +.modal div input { + grid-area: buscar; + background-color: var(--cinza-escuro); + color: var(--branco); + border-radius: 6px; + border:none; + padding: 2%; +} + +.modal div .table { + grid-area: tabela; + background-color: var(--cinza-claro); + border-radius: 6px; +} + +.modal div { +grid-template-areas: + '. . . . fechar' + '. texto buscar buscar .' + 'tabela tabela tabela tabela tabela'; +} + +.modal thead th, .modal tbody td { + padding-left: 5%; + width: auto; + text-align: center; +} + +.modal.fornecedor thead th:nth-child(2), .modal.fornecedor tbody td:nth-child(2) { + width: 60%; + text-align: left; +} + +.modal.produtos thead th:nth-child(2), .modal.produtos tbody td:nth-child(2) { + width: 40%; + text-align: left; +} + +.modal tbody button { + width: 25%; + margin-left: unset; +} + +.modal tbody button.check svg { + color: var(--verde); +} + +.modal tbody button.unset svg { +color: var(--laranja); +} + +.tabela-produtos { + width: 100%; + height: 65vh; + background-color: var(--cinza-claro); + margin: 1vh 0; + border: none; + border-radius: 6px; + text-align: center; +} + + table { + width: 100%; + max-height: 100%; + color: var(--branco); + border-collapse: collapse; + border-spacing: 1; +} + + thead th { + background-color: var(--cinza-escuro); + font-weight: 400; + height: 5vh; + width: 12%; +} + +.tabela-produtos thead th:nth-child(2) { + text-align: left; + width: 30%; + padding-left: 5px; +} + +.topo-tabela th { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + text-align: center; +} + +tbody { + overflow-y: scroll; + width: 100%; +} + + tbody tr { + border-bottom-color: var(--branco); + border-bottom-style: groove; + border-bottom-width: 1px; +} + + tbody td { + font-weight: 400; + height: 6vh; + text-align: center; +} + +.tabela-produtos tbody td:nth-child(2) { + text-align: left; + width: 30%; + padding-left: 5px; +} + +.tabela-produtos tbody td input { + width: 70%; + border-radius: 5px; + border: none; + background-color: var(--cinza-escuro); + height: 55%; + color: var(--branco); + text-align: right; + padding-right: 5px; +} + + tbody td button { + height: auto; + width: auto; + background-color: var(--cinza-escuro); + border: none; + border-radius: 5px; +} + +button:active { + opacity: 0.8; +} + +tbody td button svg { + height: 20px; + padding: 2px; + color: var(--laranja); +} + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* Firefox */ +input[type="number"] { + -moz-appearance: textfield; +} + +.info { + display: grid; + grid-template-columns: 1fr 20% 30%; + grid-template-rows: 1fr 1fr; + grid-template-areas: + "fornecedor total botoes" + "fornecedor total botoes"; + column-gap: 25px; + row-gap: 5px; + width: 100%; + height: 12vh; + margin: 1vh 0; +} + +.info h2 { + background-color: var(--cinza-escuro); + padding: 5px 20px; + border-radius: 6px; + font-size: 3vh; + font-weight: 400; + min-width: 25%; +} + +.info span { + font-size: 3vh; + font-weight: 300; + padding: 5px 20px; +} + +.info .fornecedor, +.total { + display: flex; + color: var(--branco); + background-color: var(--cinza-claro); + border-radius: 6px; +} + +.fornecedor { + grid-area: fornecedor; + flex-direction: column; + text-align: center; +} + +.total { + grid-area: total; + flex-direction: column; + text-align: center; +}.btn-sale { + width: 100%; + margin: unset; + grid-area: botoes; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.btn-sale button { + display: flex; + align-items: center; + justify-content: center; + font-size: 3vh; + border: none; + border-radius: 6px; + height: 45%; + width: 100%; +} + +.btn-sale button:nth-child(1) { + color: var(--branco); + background-color: var(--cinza-escuro); +} + +.btn-sale button:nth-child(2) { + color: var(--preto); + background-color: var(--verde); +} + +.btn-sale svg { + margin-left: 10px; +} diff --git a/public/css/addSales.css b/public/css/addSales.css index 4cb4341..2cc77a3 100644 --- a/public/css/addSales.css +++ b/public/css/addSales.css @@ -131,10 +131,14 @@ grid-template-areas: margin-left: unset; } -.modal tbody button svg { +.modal tbody button.check svg { color: var(--verde); } +.modal tbody button.unset svg { + color: var(--laranja); +} + .tabela-produtos { width: 100%; height: 65vh; @@ -284,14 +288,16 @@ input[type="number"] { flex-direction: column; text-align: center; } -.botoes { +.btn-sale { + width: 100%; + margin: unset; grid-area: botoes; display: flex; flex-direction: column; justify-content: space-between; } -.botoes button { +.btn-sale button { display: flex; align-items: center; justify-content: center; @@ -299,18 +305,19 @@ input[type="number"] { border: none; border-radius: 6px; height: 45%; + width: 100%; } -.botoes button:nth-child(1) { +.btn-sale button:nth-child(1) { color: var(--branco); background-color: var(--cinza-escuro); } -.botoes button:nth-child(2) { +.btn-sale button:nth-child(2) { color: var(--preto); background-color: var(--verde); } -.botoes svg { +.btn-sale svg { margin-left: 10px; } diff --git a/public/css/category.css b/public/css/category.css index 29c601a..2c79536 100644 --- a/public/css/category.css +++ b/public/css/category.css @@ -1,4 +1,4 @@ -@import './global.css'; +@import './modal.css'; #categorias{ background-color: rgba( 8, 102, 59, 0.47); diff --git a/public/css/client.css b/public/css/client.css index 39e41d4..f779256 100644 --- a/public/css/client.css +++ b/public/css/client.css @@ -1,5 +1,3 @@ -@import './global.css'; - #clientes{ background-color: rgba( 8, 102, 59, 0.47); border-left-color: black; @@ -124,3 +122,30 @@ main header .header-conteudo { font-weight: 500; width: 30%; } + +.modal.mensagem div { + background-color: var(--preto); +} + +.modal.mensagem div:nth-child(1) { + width: 25%; + height: 25%; + margin: 18.75% 37.5%; +} + +.modal.mensagem div button { + width: 20%; + border: none; + border-radius: 6px; + color: var(--laranja); + background-color: var(--cinza-escuro); + margin-left: 80%; +} + +.modal.mensagem div h3 { + color: var(--branco); + font-size: 22px; + text-align: center; + font-weight: 500; + margin-top: 5%; +} diff --git a/public/css/dashboard.css b/public/css/dashboard.css index 4a674cf..2dbb1c0 100644 --- a/public/css/dashboard.css +++ b/public/css/dashboard.css @@ -1,11 +1,10 @@ -@import "./global.css"; - main .content { height: 87.5%; display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; } main .content .logo { @@ -18,54 +17,24 @@ main .content h1 { color: var(--branco); font-weight: 400; font-size: 4vw; + text-align: center; } main .shortcuts { width: 90%; max-width: 70vw; - display: flex; - justify-content: space-between; - align-items: center; - height: 10%; + display: grid; + grid-template-columns: repeat(2, 50%); + grid-template-rows: repeat(2, 50%); + height: 20%; + row-gap: 15%; + column-gap: 2.5%; } -main .shortcuts a { - height: 75%; - width: 47.5%; +main .shortcuts button { color: var(--verde); border: 2px solid var(--verde); background-color: transparent; border-radius: 25px; - cursor: pointer; font-size: 1.5vw; - text-align: center; - text-decoration: none; - line-height: 5vh; -} - -@media screen and (max-width: 900px) { - main .content h1 { - font-size: 5vw; - text-align: center; - } - main .shortcuts { - flex-direction: column; - height: 25%; - } - main .shortcuts a { - width: 90%; - margin-bottom: 5%; - font-size: 3vw; - line-height: 7vh; - } -} - -@media screen and (max-width: 600px) { - main .content h1 { - font-size: 8vw; - } - - main .shortcuts a { - font-size: 4vw; - } } diff --git a/public/css/employee.css b/public/css/employee.css index 39d306e..d0b6c97 100644 --- a/public/css/employee.css +++ b/public/css/employee.css @@ -1,5 +1,3 @@ -@import './global.css'; - #funcionarios{ background-color: rgba( 8, 102, 59, 0.47); border-left-color: black; @@ -124,3 +122,30 @@ main header .header-conteudo { font-weight: 500; width: 30%; } + +.modal.mensagem div { + background-color: var(--preto); +} + +.modal.mensagem div:nth-child(1) { + width: 25%; + height: 25%; + margin: 18.75% 37.5%; +} + +.modal.mensagem div button { + width: 20%; + border: none; + border-radius: 6px; + color: var(--laranja); + background-color: var(--cinza-escuro); + margin-left: 80%; +} + +.modal.mensagem div h3 { + color: var(--branco); + font-size: 22px; + text-align: center; + font-weight: 500; + margin-top: 5%; +} diff --git a/public/css/login.css b/public/css/login.css index 8112573..2c58d39 100644 --- a/public/css/login.css +++ b/public/css/login.css @@ -1,4 +1,4 @@ -@import './global.css'; +@import './modal.css'; .container{ display: flex; diff --git a/public/css/product.css b/public/css/product.css index 9a25760..81b10fd 100644 --- a/public/css/product.css +++ b/public/css/product.css @@ -1,5 +1,3 @@ -@import './global.css'; - #produtos{ background-color: rgba( 8, 102, 59, 0.47); border-left-color: black; @@ -124,3 +122,30 @@ main header .header-conteudo { font-weight: 500; width: 30%; } + +.modal.mensagem div { + background-color: var(--preto); +} + +.modal.mensagem div:nth-child(1) { + width: 25%; + height: 25%; + margin: 18.75% 37.5%; +} + +.modal.mensagem div button { + width: 20%; + border: none; + border-radius: 6px; + color: var(--laranja); + background-color: var(--cinza-escuro); + margin-left: 80%; +} + +.modal.mensagem div h3 { + color: var(--branco); + font-size: 22px; + text-align: center; + font-weight: 500; + margin-top: 5%; +} diff --git a/public/css/promotion.css b/public/css/promotion.css new file mode 100644 index 0000000..9df2af8 --- /dev/null +++ b/public/css/promotion.css @@ -0,0 +1,52 @@ +@import './modal.css'; + +#promocoes{ + background-color: rgba( 8, 102, 59, 0.47); + border-left-color: black; +} + +#promocoes a{ + color: #fff; +} + +main header { + grid-template-columns: 10% 1fr; +} + +main header .header-conteudo { + display: flex; + padding-right: 5vw; + justify-content: space-between; +} + + +.btnAcao{ + width: 10%; +} + +.btnEditar{ + text-decoration: none; + color: var(--branco); + background-color: var(--cinza-claro); + border-radius: 5px; + border: none; + height: 2vw; + width: 4vw; + cursor: pointer; +} + +.btnDeletar{ + text-decoration: none; + color: var(--laranja); + background-color: var(--cinza-claro); + border-radius: 5px; + border: none; + height: 2vw; + width: 4vw; + cursor: pointer; +} + +.iconeAdd{ + width: 100%; + margin: 0; +} diff --git a/public/css/provider.css b/public/css/provider.css index fbabf61..436ba4e 100644 --- a/public/css/provider.css +++ b/public/css/provider.css @@ -1,5 +1,3 @@ -@import './global.css'; - #fornecedores{ background-color: rgba( 8, 102, 59, 0.47); border-left-color: black; @@ -124,3 +122,30 @@ main header .header-conteudo { font-weight: 500; width: 30%; } + +.modal.mensagem div { + background-color: var(--preto); +} + +.modal.mensagem div:nth-child(1) { + width: 25%; + height: 25%; + margin: 18.75% 37.5%; +} + +.modal.mensagem div button { + width: 20%; + border: none; + border-radius: 6px; + color: var(--laranja); + background-color: var(--cinza-escuro); + margin-left: 80%; +} + +.modal.mensagem div h3 { + color: var(--branco); + font-size: 22px; + text-align: center; + font-weight: 500; + margin-top: 5%; +} diff --git a/public/css/purchase.css b/public/css/purchase.css new file mode 100644 index 0000000..596a158 --- /dev/null +++ b/public/css/purchase.css @@ -0,0 +1,151 @@ +#compras{ + background-color: rgba( 8, 102, 59, 0.47); + border-left-color: black; +} + +#compras a{ + color: #fff; +} + +main header { + grid-template-columns: 10% 1fr; +} + +main header .header-conteudo { + display: flex; + padding-right: 5vw; + justify-content: space-between; +} + +.abrir-modal{ + color: var(--branco); + background-color: var(--cinza-claro); + border-radius: 5px; + border: none; + height: 2vw; + width: 2.5vw; + cursor: pointer; +} + +.modal { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 1; + background: #0008; +} + +.modal.disabled { + display: none; + opacity: 0; +} + +.compra{ + background-color: var(--preto); + width: 50%; + margin: 12.5% 25%; + border-radius: 6px; + display: flex; + flex-direction: column; + position: relative; +} + +.conteudoCompra{ + color: var(--branco); + display: grid; + grid-template-areas: + 'titulo titulo titulo' + 'info info info' + 'tabela tabela tabela' + 'total total total'; + padding: 2%; +} + +.conteudoCompra h2{ + color: var(--verde); + grid-area: titulo; +} + +.info{ + color: var(--branco); + grid-area: info; +} + +.info th{ + background-color: var(--cinza-escuro); + text-align: start; + width: 30%; + padding: 3px; + font-weight: 400; +} + +.info td{ + background-color: var(--cinza-claro); + padding: 3px; +} + +.tabelaProdutos{ + color: var(--branco); + grid-area: tabela; + margin-top: 1%; + overflow-y: scroll; +} + +.tabelaProdutos th{ + text-align: center; + font-weight: 400; + background-color: var(--cinza-escuro); + padding: 3px; + width: 33%; +} + +.tabelaProdutos td{ + text-align: center; + background-color: var(--cinza-claro); + padding: 3px; +} + +.totais{ + grid-area: total; + color: var(--branco); + margin-top: 1%; +} + +.totais th{ + text-align: center; + font-weight: 400; + background-color: var(--cinza-escuro); + padding: 5px 4px; + width: 50%; +} + +.totais td{ + text-align: center; + background-color: var(--cinza-claro); + padding: 8px 3px; +} + +.fechar-modal{ + background-color: var(--cinza-claro); + color: var(--laranja); + border: none; + border-radius: 5px; + position: absolute; + right: 0; +} + +.btnEditar{ + background-color: var(--verde); + color: var(--preto); + text-decoration: none; + display: flex; + align-items: center; + justify-content: center; + border-radius: 5px; + height: 40px; + margin: auto; + padding-left: 10px; + font-weight: 500; +} diff --git a/public/css/sale.css b/public/css/sale.css index 668b9ed..588c9ce 100644 --- a/public/css/sale.css +++ b/public/css/sale.css @@ -1,5 +1,3 @@ -@import './global.css'; - #vendas{ background-color: rgba( 8, 102, 59, 0.47); border-left-color: black; diff --git a/public/js/ClientFunctions.js b/public/js/ClientFunctions.js index 6dfbf18..adda42d 100644 --- a/public/js/ClientFunctions.js +++ b/public/js/ClientFunctions.js @@ -52,6 +52,8 @@ const consultarCliente = (id) => { `; + document.querySelector('.btnEditar').href = 'edit/client&id=' + cliente.id; + document.querySelector('.btnDeletar').href = 'delete/client&id=' + cliente.id; }) .catch((err) => console.log(err)); }; diff --git a/public/js/EmployeeFunctions.js b/public/js/EmployeeFunctions.js index 2a73470..6c737db 100644 --- a/public/js/EmployeeFunctions.js +++ b/public/js/EmployeeFunctions.js @@ -13,6 +13,13 @@ fecharModalElements.forEach((elemento) => { elemento.addEventListener("click", ( /* --------------- FUNCIONARIO -------------- */ const modalFuncionario = document.querySelector(".conteudoFuncionario"); +function adicionaZero(numero){ + if (numero <= 9) + return "0" + numero; + else + return numero; +} + const consultarFuncionario = (id) => { axios .post(`${host}/getEmployee`, @@ -25,6 +32,8 @@ const consultarFuncionario = (id) => { ) .then((response) => { const funcionario = response.data; + const dataNascimento = new Date(funcionario.dataNascimento); + const dataFormatada = `${adicionaZero(dataNascimento.getDate().toString())}/${adicionaZero(dataNascimento.getMonth()+1).toString()}/${dataNascimento.getFullYear()}`; modalFuncionario.innerHTML = `

${funcionario.nome}

@@ -54,13 +63,16 @@ const consultarFuncionario = (id) => { - +
Data de Nascimento${funcionario.dataNascimento}${dataFormatada}
Usuário ${funcionario.usuario}
`; + + document.querySelector('.btnEditar').href = 'edit/employee&id=' + funcionario.id; + document.querySelector('.btnDeletar').href = 'delete/employee&id=' + funcionario.id; }) .catch((err) => console.log(err)); } diff --git a/public/js/ProductFunctions.js b/public/js/ProductFunctions.js index 015e5b8..0dfa374 100644 --- a/public/js/ProductFunctions.js +++ b/public/js/ProductFunctions.js @@ -25,6 +25,10 @@ const consultarProduto = (id) => { ) .then((response) => { const produto = response.data; + const valorCompra = Number(produto.valorCompra); + const valorVenda = Number(produto.valorVenda); + const valorCompraFormatado = valorCompra.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); + const valorVendaFormatado = valorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); modalProduto.innerHTML = `

${produto.nome}

@@ -46,17 +50,20 @@ const consultarProduto = (id) => { - + - +
Valor de Venda${produto.valorVenda}${valorVendaFormatado}
Valor de Compra${produto.valorCompra}${valorCompraFormatado}
Código de Barras ${produto.codigoBarras}
`; + + document.querySelector('.btnEditar').href = 'edit/product&id=' + produto.id; + document.querySelector('.btnDeletar').href = 'delete/product&id=' + produto.id; }) .catch((err) => console.log(err)); } diff --git a/public/js/PromotionFunctions.js b/public/js/PromotionFunctions.js new file mode 100644 index 0000000..e46fbe9 --- /dev/null +++ b/public/js/PromotionFunctions.js @@ -0,0 +1,15 @@ +const filtrarPromocao = () => { + const tr = document.querySelectorAll(".tabela-consulta tbody tr"); + const filter = document.getElementById("input").value.toUpperCase(); + for (let i = 0; i < tr.length; i++) { + td = tr[i].getElementsByTagName("td")[1]; + if (td) { + txtValue = td.textContent || td.innerText; + if (txtValue.toUpperCase().indexOf(filter) > -1) { + tr[i].style.display = ""; + } else { + tr[i].style.display = "none"; + } + } + } +} diff --git a/public/js/PromotionProductFunctions.js b/public/js/PromotionProductFunctions.js new file mode 100644 index 0000000..6d33f2e --- /dev/null +++ b/public/js/PromotionProductFunctions.js @@ -0,0 +1,15 @@ +const filtrarPromocaoProduto = () => { + const tr = document.querySelectorAll(".tabela-consulta tbody tr"); + const filter = document.getElementById("input").value.toUpperCase(); + for (let i = 0; i < tr.length; i++) { + td = tr[i].getElementsByTagName("td")[2]; + if (td) { + txtValue = td.textContent || td.innerText; + if (txtValue.toUpperCase().indexOf(filter) > -1) { + tr[i].style.display = ""; + } else { + tr[i].style.display = "none"; + } + } + } +} diff --git a/public/js/ProviderFunctions.js b/public/js/ProviderFunctions.js index 7ccd5e8..787ce89 100644 --- a/public/js/ProviderFunctions.js +++ b/public/js/ProviderFunctions.js @@ -51,6 +51,9 @@ const consultarFornecedor = (id) => { `; + + document.querySelector('.btnEditar').href = 'edit/provider&id=' + fornecedor.id; + document.querySelector('.btnDeletar').href = 'delete/provider&id=' + fornecedor.id; }) .catch((err) => console.log(err)); }; diff --git a/public/js/PurchaseFunctions.js b/public/js/PurchaseFunctions.js new file mode 100644 index 0000000..7effec3 --- /dev/null +++ b/public/js/PurchaseFunctions.js @@ -0,0 +1,158 @@ +/* --------------- EXIBIR/ESCONDER MODAIS --------------- */ + +// elementos que abrem e fecham os modais +const abrirModalElements = document.querySelectorAll(".abrir-modal"); +const fecharModalElements = document.querySelectorAll(".fechar-modal"); + +// funções de abrir/fechar modais +const toggleModal = () => document.querySelector(".modal").classList.toggle("disabled"); + +abrirModalElements.forEach((elemento) => { elemento.addEventListener("click", toggleModal) }); +fecharModalElements.forEach((elemento) => { elemento.addEventListener("click", () => { toggleModal(); limparCompra(); })}); + +/* --------------- PRODUTOS DA COMPRA -------------- */ +const arrayProdutos = [] +const mountProducts = (value) => { + axios + .post( + `${host}/purchase/getProducts`, + (`idCompra=${value}`), + { + headers: { + "Content-type": "application/x-www-form-urlencoded", + }, + } + ) + .then((response) => { + arrayProdutos[0] = response.data; + }) + .catch((err) => console.log(err)); +}; + +/* --------------- Compra -------------- */ +const modalCompra = document.querySelector(".conteudoCompra"); + +function adicionaZero(numero){ + if (numero <= 9) + return "0" + numero; + else + return numero; +} + +const consultarCompra = (id) => { + mountProducts(id) + axios + .post(`${host}/getPurchase`, + (`idSearch=${id}`), + { + headers: { + "Content-type": "application/x-www-form-urlencoded", + }, + } + ) + .then((response) => { + const compra = response.data; + const dataCompra = new Date(compra.dataCompra); + const dataFormatada = `${adicionaZero(dataCompra.getDate().toString())}/${adicionaZero(dataCompra.getMonth()+1).toString()}/${dataCompra.getFullYear()} ${dataCompra.getHours()}:${dataCompra.getMinutes()}` + modalCompra.insertAdjacentHTML('beforeend', + ` +

Compra ${compra.idCompra}

+ + + + + + + + + + + + + +
Fornecedor${compra.nomeFornecedor}
Funcionário${compra.nomeFuncionario}
Data da Compra${dataFormatada}
+ + + + + + + + + + + + + +
Produtos
NomeQuantidadeValor Unitário
`); + + const tabelaProdutos = document.querySelector(".tabelaProdutos"); + + arrayProdutos[0].forEach((produto) => { + const valorUnitario = Number(produto.valorUnitario); + let valorFormatado = valorUnitario.toLocaleString('pt-br', { style: 'currency', currency: 'BRL' }); + tabelaProdutos.insertAdjacentHTML('beforeend', ` + ${produto.nome} + ${produto.quantidade} + ${valorFormatado} + `); + }); + + const valorCompra = Number(compra.valor); + const valorCompraFormatado = valorCompra.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); + modalCompra.insertAdjacentHTML('beforeend', + ` + + + + + + + + +
Quantidade TotalValor Total
${compra.quantidade}${valorCompraFormatado}
` + ) + + document.querySelector('.btnEditar').href = 'edit/purchase&id=' + compra.idCompra; + }) + .catch((err) => console.log(err)); +} + +const limparCompra = () => { + modalCompra.innerHTML = ""; +} + + +const filtrarCompra = () => { + const tr = document.querySelectorAll(".tabela-consulta tbody tr"); + const filter = document.getElementById("input").value; + for (let i = 0; i < tr.length; i++) { + td = tr[i].getElementsByTagName("td")[0]; + if (td) { + txtValue = td.textContent || td.innerText; + if (txtValue.indexOf(filter) > -1) { + tr[i].style.display = ""; + } else { + tr[i].style.display = "none"; + } + } + } +} +/* +function mountClients(idVenda) { + var xhttp = new XMLHttpRequest(); + + xhttp.onreadystatechange = function () { + if (this.readyState == 4 && this.status == 200) { + var result = JSON.parse(this.response); + for(var i in result){ + document.getElementById('products_'+idVenda).insertAdjacentHTML('beforeend', ''+result[i].nome+' - '+result[i].valorUnitario+'
'); + } + document.getElementById('products_'+idVenda).insertAdjacentHTML('beforeend', 'Editar'); + } + }; + xhttp.open("POST", host+"/sale/getProducts", true); + xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xhttp.send('idVenda='+idVenda); +} +*/ diff --git a/public/js/SaleFunctions.js b/public/js/SaleFunctions.js index fe608d6..b72e71f 100644 --- a/public/js/SaleFunctions.js +++ b/public/js/SaleFunctions.js @@ -32,6 +32,13 @@ const mountProducts = (value) => { /* --------------- VENDA -------------- */ const modalVenda = document.querySelector(".conteudoVenda"); +function adicionaZero(numero){ + if (numero <= 9) + return "0" + numero; + else + return numero; +} + const consultarVenda = (id) => { mountProducts(id) axios @@ -45,6 +52,8 @@ const consultarVenda = (id) => { ) .then((response) => { const venda = response.data; + const dataVenda = new Date(venda.dataVenda); + const dataFormatada = `${adicionaZero(dataVenda.getDate().toString())}/${adicionaZero(dataVenda.getMonth()+1).toString()}/${dataVenda.getFullYear()} ${dataVenda.getHours()}:${dataVenda.getMinutes()}` modalVenda.insertAdjacentHTML('beforeend', `

Venda ${venda.idVenda}

@@ -63,7 +72,7 @@ const consultarVenda = (id) => { Data da Venda - ${venda.dataVenda} + ${dataFormatada} @@ -84,13 +93,18 @@ const consultarVenda = (id) => { const tabelaProdutos = document.querySelector(".tabelaProdutos"); arrayProdutos[0].forEach((produto) => { + const valorUnitario = Number(produto.valorUnitario); + let valorFormatado = valorUnitario.toLocaleString('pt-br', { style: 'currency', currency: 'BRL' }); + console.log(valorFormatado) tabelaProdutos.insertAdjacentHTML('beforeend', ` - + `); }); + const valorVenda = Number(venda.valor); + const valorVendaFormatado = valorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); modalVenda.insertAdjacentHTML('beforeend', `
${produto.nome} ${produto.quantidade}${produto.valorUnitario}${valorFormatado}
@@ -99,10 +113,12 @@ const consultarVenda = (id) => { - +
${venda.quantidade}${venda.valor}${valorVendaFormatado}
` ) + + document.querySelector('.btnEditar').href = 'edit/sale&id=' + venda.idVenda; }) .catch((err) => console.log(err)); } diff --git a/public/js/addPurchaseFunctions.js b/public/js/addPurchaseFunctions.js new file mode 100644 index 0000000..041c6fc --- /dev/null +++ b/public/js/addPurchaseFunctions.js @@ -0,0 +1,210 @@ +/* --------------- EXIBIR/ESCONDER MODAIS --------------- */ +// elementos que abrem e fecham os modais +const abrirModalElements = document.querySelectorAll(".abrir-modal"); +const fecharModalElements = document.querySelectorAll(".fechar-modal"); + +// funções de abrir/fechar modais +const toggleModalProdutos = () => + document.querySelector(".modal.produtos").classList.toggle("disabled"); +const toggleModalFornecedores = () => + document.querySelector(".modal.fornecedores").classList.toggle("disabled"); + +// adicionando evento de abrir modal + listar +abrirModalElements[0].addEventListener("click", toggleModalProdutos); +abrirModalElements[1].addEventListener("click", toggleModalFornecedores); + +// adicionando evento de fechar modal + limpar +fecharModalElements[0].addEventListener("click", toggleModalProdutos); +fecharModalElements[1].addEventListener("click", toggleModalFornecedores); + +/* --------------- FORNECEDORES -------------- */ +const modalFornecedoresLista = document.querySelector(".lista.fornecedor tbody"); + + +const listarFornecedores = () => { + axios + .get(`${host}/getAllProviders`) + .then((response) => { + const fornecedores = response.data; + fornecedores.forEach((fornecedor) => { + modalFornecedoresLista.insertAdjacentHTML( + "beforeend", + ` + + ${fornecedor.id} + ${fornecedor.nome} + + + ` + ); + }); + }) + .catch((err) => console.log(err)); +} + +const limparFornecedores = () => { + modalFornecedoresLista.innerHTML = ''; +} + +// função para adicionar o fornecedor selecionado +const selecionarFornecedor = (id, nome) => { + const fornecedorSpan = document.querySelector(".info .fornecedor span"); + fornecedorSpan.innerHTML = `${nome} `; + toggleModalFornecedores(); +}; + +const filtrarFornecedor = (value) => { + axios + .post( + `${host}/getProviderByName`, + (`itemSearch=${value}`), + { + headers: { + "Content-type": "application/x-www-form-urlencoded", + }, + } + ) + .then((response) => { + limparFornecedores(); + const fornecedores = response.data; + fornecedores.forEach((fornecedor) => { + modalFornecedoresLista.insertAdjacentHTML( + "beforeend", + ` + ${fornecedor.id} + ${fornecedor.nome} + + ` + ); + }); + }) + .catch((err) => console.log(err)); +} + +/* --------------- PRODUTO --------------- */ +const modalProdutosInput = document.querySelector(".modal.produtos input"); +const modalProdutosLista = document.querySelector(".lista.produtos tbody"); + +const listarProdutos = () => { + axios + .post( + `${host}/getProducts`, + ("itemSearch="), + { + headers: { + "Content-type": "application/x-www-form-urlencoded", + }, + } + ) + .then((response) => { + const produtos = response.data; + produtos.forEach((produto) => { + const { id, nome, quantidade, valorVenda } = produto; + const novoValorVenda = Number(valorVenda); + const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); + + modalProdutosLista.insertAdjacentHTML( + "beforeend", + ` + ${id} + ${nome} + ${quantidade} + ${valorVendaFormatado} + + ` + ); + }); + }) + .catch((err) => console.log(err)); +} + +const limparProdutos = () => { + modalProdutosLista.innerHTML = ''; +} + +const produtosTabela = document.querySelector(".tabela-produtos tbody"); + +const selecionarProduto = (id, nome, quantidade) => { + + if (!document.querySelector(`#product_${id}`)) { + produtosTabela.insertAdjacentHTML( + "beforeend", + ` + ${id} + ${nome} + + + 0 + + ` + ); + const botao = document.querySelector(`tr#produto_lista${id} td button`); + botao.classList.remove("check"); + botao.innerHTML = feather.icons['minus-circle'].toSvg(); + botao.classList.add("unset"); + } else { + removerProduto(id); + } +}; + +const calcularTotalVenda = () => { + let total = 0; + + document.querySelectorAll('.total-produto').forEach(element => { + total += parseFloat(element.innerHTML); + }); + + const totalSpan = document.querySelector(".info .total span"); + totalSpan.innerHTML = `R$ ${total.toFixed(2)}`; +} + +const calcularTotalProduto = (quantidade, id) => { + let valor = document.querySelector(`#valorUnitario_${id}`).value; + document.querySelector(`#product_${id} .total-produto`).innerHTML = (valor * quantidade).toFixed(2); + calcularTotalVenda(); +} + +const removerProduto = (id) => { + const produto = document.getElementById('product_' + id); + produtosTabela.removeChild(produto); + const botao = document.querySelector(`tr#produto_lista${id} td button`); + botao.classList.remove("unset"); + botao.innerHTML = feather.icons['plus-circle'].toSvg(); + botao.classList.add("check"); + calcularTotalVenda(); +} + +const filtrarProduto = (value) => { + axios + .post( + `${host}/getProducts`, + (`itemSearch=${value}`), + { + headers: { + "Content-type": "application/x-www-form-urlencoded", + }, + } + ) + .then((response) => { + limparProdutos(); + const produtos = response.data; + produtos.forEach((produto) => { + const { id, nome, quantidade, valorVenda } = produto; + const check = !document.querySelector(`#product_${id}`); + modalProdutosLista.insertAdjacentHTML( + "beforeend", + ` + ${id} + ${nome} + ${quantidade} + ${valorVenda} + + ` + ); + }); + }) + .catch((err) => console.log(err)); +} + +listarProdutos(); +listarFornecedores(); diff --git a/public/js/addSaleFunctions.js b/public/js/addSaleFunctions.js index b4c8284..6db1aac 100644 --- a/public/js/addSaleFunctions.js +++ b/public/js/addSaleFunctions.js @@ -12,14 +12,14 @@ const toggleModalClientes = () => document.querySelector(".modal.clientes").classList.toggle("disabled"); // adicionando evento de abrir modal + listar -abrirModalElements[0].addEventListener("click", () => { toggleModalProdutos(); listarProdutos(); }); +abrirModalElements[0].addEventListener("click", () => { toggleModalProdutos(); }); abrirModalElements[1].addEventListener("click", toggleModalPagamentos); -abrirModalElements[2].addEventListener("click", () => { toggleModalClientes(); listarClientes(); }); +abrirModalElements[2].addEventListener("click", () => { toggleModalClientes(); }); // adicionando evento de fechar modal + limpar -fecharModalElements[0].addEventListener("click", () => { toggleModalProdutos(); limparProdutos(); }); +fecharModalElements[0].addEventListener("click", () => { toggleModalProdutos(); }); fecharModalElements[1].addEventListener("click", toggleModalPagamentos); -fecharModalElements[2].addEventListener("click", () => { toggleModalClientes(); limparClientes(); }); +fecharModalElements[2].addEventListener("click", () => { toggleModalClientes(); }); /* --------------- CLIENTES -------------- */ const modalClientesLista = document.querySelector(".lista.clientes tbody"); @@ -37,7 +37,7 @@ const listarClientes = () => { ${cliente.id} ${cliente.nome} - + ` ); @@ -78,7 +78,7 @@ const filtrarCliente = (value) => { ` ${cliente.id} ${cliente.nome} - + ` ); }); @@ -155,14 +155,16 @@ const listarProdutos = () => { const produtos = response.data; produtos.forEach((produto) => { const { id, nome, quantidade, valorVenda } = produto; + const novoValorVenda = Number(valorVenda); + const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); modalProdutosLista.insertAdjacentHTML( "beforeend", - ` + ` ${id} ${nome} ${quantidade} - ${valorVenda} - + ${valorVendaFormatado} + ` ); }); @@ -179,19 +181,26 @@ const produtosTabela = document.querySelector(".tabela-produtos tbody"); const selecionarProduto = (id, nome, quantidade, valorVenda) => { if (!document.querySelector(`#product_${id}`)) { + const novoValorVenda = Number(valorVenda); + const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'}); + produtosTabela.insertAdjacentHTML( "beforeend", ` ${id} ${nome} - - ${valorVenda.toFixed(2)} + + ${valorVendaFormatado} 0 ` ); + const botao = document.querySelector(`tr#produto_lista${id} td button`); + botao.classList.remove("check"); + botao.innerHTML = feather.icons['minus-circle'].toSvg(); + botao.classList.add("unset"); } else { - alert("Item já adicionado."); + removerProduto(id); } }; @@ -214,6 +223,10 @@ const calcularTotalProduto = (valor, quantidade, id) => { const removerProduto = (id) => { const produto = document.getElementById('product_' + id); produtosTabela.removeChild(produto); + const botao = document.querySelector(`tr#produto_lista${id} td button`); + botao.classList.remove("unset"); + botao.innerHTML = feather.icons['plus-circle'].toSvg(); + botao.classList.add("check"); calcularTotalVenda(); } @@ -233,14 +246,16 @@ const filtrarProduto = (value) => { const produtos = response.data; produtos.forEach((produto) => { const { id, nome, quantidade, valorVenda } = produto; + const check = !document.querySelector(`#product_${id}`); + modalProdutosLista.insertAdjacentHTML( "beforeend", - ` + ` ${id} ${nome} ${quantidade} ${valorVenda} - + ` ); }); @@ -288,3 +303,6 @@ function addProduct(product) { /*document.querySelector('.submit').addEventListener('click', () => { document.getElementById('formSale').submit(); })*/ + +listarClientes(); +listarProdutos(); diff --git a/routes/routes.php b/routes/routes.php index b877906..e3a43e0 100644 --- a/routes/routes.php +++ b/routes/routes.php @@ -65,6 +65,8 @@ Route::get('/edit/provider', 'ProviderController@edit'); Route::post('/update/provider', 'ProviderController@update'); Route::get('/delete/provider', 'ProviderController@delete'); + Route::get('/getAllProviders', 'ProviderController@getAllProviders'); + Route::post('/getProviderByName', 'ProviderController@getProviderByName'); // Rotas de promoções Route::get('/add/promotion', 'PromotionController@index'); @@ -82,5 +84,13 @@ Route::post('/update/promotion-product', 'PromotionProductController@update'); Route::get('/delete/promotion-product', 'PromotionProductController@delete'); + + // Rotas de compra + Route::get('/add/purchase', 'PurchaseController@index'); + Route::post('/adding/purchase', 'PurchaseController@store'); + Route::get('/purchase', 'PurchaseController@show'); + Route::post('/purchase/getProducts', 'PurchaseController@getProducts'); + Route::post('/getPurchase', 'PurchaseController@getPurchase'); + Route::run(); ?> diff --git a/src/Controllers/CategoryController.php b/src/Controllers/CategoryController.php index 27d9e7e..27ec3d1 100644 --- a/src/Controllers/CategoryController.php +++ b/src/Controllers/CategoryController.php @@ -1,19 +1,30 @@ create($params); - - if($result){ - return redirect('/add/category','Categoria inserida com sucesso'); + $data = array( + 'Nome_da_categoria' => $params['nome'] + ); + $validator = array( + 'Nome_da_categoria' => 'required' + ); + $resultValidation = validate($data,$validator); + if($validator['success']){ + $category = new CategoryModel(); + $result = $category->create($params); + if($result){ + return redirect('/category','Categoria inserida com sucesso'); + }else{ + return redirect('/add/category','Ocorreu um erro interno. Contate os desenvolvedores..'); + } }else{ - return redirect('/add/category','Algo deu errado, tente novamente.'); + return redirect('/add/category',$resultValidation['message']); } } @@ -28,24 +39,48 @@ public function edit($params){ $category = new EditCategoryView($params); } public function update($params){ - $category = new CategoryModel(); - $result = $category->update($params); + $data = array( + 'Nome_da_categoria' => $params['nome'], + 'ID_da_categoria' => $params['categoryId'] + ); + $validator = array( + 'Nome_da_categoria' => 'required', + 'ID_da_categoria' => 'required' + ); + $resultValidation = validate($data,$validator); + if($validator['success']){ + $category = new CategoryModel(); + $result = $category->update($params); - if($result){ - return redirect('/category', 'Categoria atualizada com sucesso.'); + if($result){ + return redirect('/category', 'Categoria atualizada com sucesso.'); + }else{ + return redirect('/category', 'Ocorreu um erro interno. Contate os desenvolvedores..'); + } }else{ - return redirect('/category', 'Algo deu errado, tente novamente.'); + return redirect('/category',$resultValidation['message']); } } public function delete($params){ - $category = new CategoryModel(); - $result = $category->delete($params); + $data = array( + 'ID_da_categoria' => $params['id'] + ); + $validator = array( + 'ID_da_categoria' => 'required' + ); + $resultValidation = validate($data,$validator); + if($validator['success']){ + $category = new CategoryModel(); + $result = $category->delete($params); - if($result){ - return redirect('/category', 'Categoria deletada com sucesso.'); + if($result){ + return redirect('/category', 'Categoria deletada com sucesso.'); + }else{ + return redirect('/category', 'Ocorreu um erro interno. Contate os desenvolvedores..'); + } }else{ - return redirect('/category', 'Algo deu errado, tente novamente.'); + return redirect('/category',$resultValidation['message']); } } } diff --git a/src/Controllers/ClientController.php b/src/Controllers/ClientController.php index 53034b7..28e6677 100644 --- a/src/Controllers/ClientController.php +++ b/src/Controllers/ClientController.php @@ -1,6 +1,7 @@ $params['nome'], + 'CPF' => $params['cpf'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Data_de_nascimento' => $params['dataNascimento'] + ); + $validator = array( + 'Nome' => 'required', + 'CPF' => 'required|cpf', + 'endereco' => 'required', + 'telefone' => 'required', + 'Data_de_nascimento' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $client = new ClientModel(); $result = $client->create($params); if($result){ - return redirect('/add/client','Cliente cadastrado com sucesso.'); + return redirect('/client','Cliente cadastrado com sucesso.'); }else{ - return redirect('/add/client','Algo deu errado, tente novamente.'); + return redirect('/add/client','Ocorreu um erro interno. Contate os desenvolvedores..'); } + }else{ + return redirect('/add/client', $resultValidation['message']); } } public function addSaleClient($params){ - $client = new ClientModel(); - - $cpf_valid = preg_match('/([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})/',$params['cpf']); $param['dataNascimento'] = str_replace('/','-',$params['dataNascimento']); - if($cpf_valid){ + $data = array( + 'Nome' => $params['nome'], + 'CPF' => $params['cpf'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Data_de_nascimento' => $params['dataNascimento'] + ); + $validator = array( + 'Nome' => 'required', + 'CPF' => 'required|cpf', + 'endereco' => 'required', + 'telefone' => 'required', + 'Data_de_nascimento' => 'required' + ); + $resultValidation = validate($data,$validator); + + if($resultValidation['success']){ + $client = new ClientModel(); $result = $client->create($params); if($result){ echo json_encode('Cliente cadastrado com sucesso.'); }else{ - echo json_encode('Algo deu errado, tente novamente.'); + echo json_encode('Ocorreu um erro interno. Contate os desenvolvedores..'); } + }else{ + return redirect('/add/client', $resultValidation['message']); } } public function getAllClients(){ @@ -68,24 +100,65 @@ public function edit($params){ } public function update($params){ - $client = new ClientModel(); - $result = $client->update($params); + $param['dataNascimento'] = str_replace('/','-',$params['dataNascimento']); - if($result){ - return redirect('/client','Cliente atualizado com sucesso.'); + $data = array( + 'Nome' => $params['nome'], + 'CPF' => $params['cpf'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Data_de_nascimento' => $params['dataNascimento'], + 'ID_do_cliente' => $params['clientId'] + ); + $validator = array( + 'Nome' => 'required', + 'CPF' => 'required|cpf', + 'endereco' => 'required', + 'telefone' => 'required', + 'Data_de_nascimento' => 'required', + 'ID_do_cliente' => 'required' + ); + $resultValidation = validate($data,$validator); + + if($resultValidation['success']){ + $client = new ClientModel(); + $result = $client->update($params); + + if($result){ + return redirect('/client','Cliente atualizado com sucesso.'); + }else{ + return redirect('/client','Ocorreu um erro interno. Contate os desenvolvedores..'); + } }else{ - return redirect('/client','Algo deu errado, tente novamente.'); + return redirect('/client', $resultValidation['message']); } + } public function delete($params){ - $client = new ClientModel(); - $result = $client->delete($params); - - if($result){ - return redirect('/client','Cliente deletado com sucesso.'); + $data = array( + 'ID_do_cliente' => $params['id'] + ); + $validator = array( + 'ID_do_cliente' => 'required' + ); + $resultValidation = validate($data,$validator); + + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $client = new ClientModel(); + $result = $client->delete($params); + + if($result){ + return redirect('/client','Cliente deletado com sucesso.'); + }else{ + return redirect('/client','Ocorreu um erro interno. Contate os desenvolvedores..'); + } + }else{ + return redirect('/client', $resultValidation['message']); + } }else{ - return redirect('/client','Algo deu errado, tente novamente.'); + return redirect('/client','Usuário sem permissão.'); } } } diff --git a/src/Controllers/EmployeeController.php b/src/Controllers/EmployeeController.php index 68f0f15..f75e710 100644 --- a/src/Controllers/EmployeeController.php +++ b/src/Controllers/EmployeeController.php @@ -1,53 +1,148 @@ create($params); - if($result){ - return redirect('/add/employee', 'Funcionário cadastrado com sucesso'); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $data = array( + 'Nome' => $params['nome'], + 'Nivel_de_acesso' => $params['nivelAcesso'], + 'CPF' => $params['cpf'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Data_de_nascimento' => $params['dataNascimento'], + 'Email' => $params['email'], + 'Usuário' => $params['usuario'], + 'Senha' => $params['senha'] + ); + $validator = array( + 'Nome' => 'required', + 'Nivel_de_acesso' => 'required', + 'CPF' => 'required|cpf', + 'Endereco' => 'required', + 'Telefone' => 'required', + 'Data_de_nascimento' => 'required', + 'Email' => 'required|email', + 'Usuário' => 'required', + 'Senha' => 'required' + ); + + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $employee = new EmployeeModel(); + $result = $employee->create($params); + if($result){ + return redirect('/employee', 'Funcionário cadastrado com sucesso'); + }else{ + return redirect('/add/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/employee', $resultValidation['message']); + } }else{ - return redirect('/add/employee', 'Algo deu errado, tente novamente'); + return redirect('/dashboard', 'Usuário sem permissão'); } } public function show(){ - $employee = new EmployeeModel(); - $params['employees'] = $employee->getAllEmployees(); - $employee = new EmployeeView($params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $employee = new EmployeeModel(); + $params['employees'] = $employee->getAllEmployees(); + $employee = new EmployeeView($params); + }else{ + return redirect('/dashboard', 'Usuário sem permissão'); + } } public function getEmployee($params){ $employee = new EmployeeModel(); echo json_encode($employee->getEmployeeById($params)); } public function edit($params){ - $employee = new EmployeeModel(); - $params['employee'] = $employee->getEmployeeById($params); - $employee = new EditEmployeeView($params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $employee = new EmployeeModel(); + $params['employee'] = $employee->getEmployeeById($params); + $employee = new EditEmployeeView($params); + }else{ + return redirect('/dashboard', 'Usuário sem permissão'); + } } public function update($params){ - $employee = new EmployeeModel(); - $result = $employee->update($params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $data = array( + 'Nome' => $params['nome'], + 'Nivel_de_acesso' => $params['nivelAcesso'], + 'CPF' => $params['cpf'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Data_de_nascimento' => $params['dataNascimento'], + 'Email' => $params['email'], + 'Usuário' => $params['usuario'], + 'Senha' => $params['senha'], + 'ID_do_funcionario' => $params['employeeId'] + ); + $validator = array( + 'Nome' => 'required', + 'Nivel_de_acesso' => 'required', + 'CPF' => 'required|cpf', + 'Endereco' => 'required', + 'Telefone' => 'required', + 'Data_de_nascimento' => 'required', + 'Email' => 'email', + 'Usuário' => 'required', + 'Senha' => 'required', + 'ID_do_funcionario' => 'required' + ); + + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $employee = new EmployeeModel(); + $result = $employee->update($params); - if($result){ - return redirect('/employee', 'Funcionário atualizado com sucesso'); + if($result){ + return redirect('/employee', 'Funcionário atualizado com sucesso'); + }else{ + return redirect('/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/employee', $resultValidation['message']); + } }else{ - return redirect('/employee', 'Algo deu errado, tente novamente'); + return redirect('/dashboard', 'Usuário sem permissão'); } } public function delete($params){ - $employee = new EmployeeModel(); - $result = $employee->delete($params); - if($result){ - return redirect('/employee', 'Funcionário deletado com sucesso'); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $data = array( + 'ID_do_funcionario' => $params['id'] + ); + $validator = array( + 'ID_do_funcionario' => 'required' + ); + $resultValidation = validate($data,$validator); + + if($resultValidation['success']){ + $employee = new EmployeeModel(); + $result = $employee->delete($params); + if($result){ + return redirect('/employee', 'Funcionário deletado com sucesso'); + }else{ + return redirect('/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/employee', $resultValidation['message']); + } }else{ - return redirect('/employee', 'Algo deu errado, tente novamente'); + return redirect('/dashboard', 'Usuário sem permissão'); } } } diff --git a/src/Controllers/LoginController.php b/src/Controllers/LoginController.php index 859db20..10009c7 100755 --- a/src/Controllers/LoginController.php +++ b/src/Controllers/LoginController.php @@ -11,6 +11,7 @@ public function store($params){ if(!empty($result)){ $_SESSION['dados_usuario'] = $result; + require_once('src/helpers/CheckPromotion.php'); return redirect('/dashboard'); }else{ return redirect('/login', 'Usuário ou senha incorretos'); diff --git a/src/Controllers/ProductController.php b/src/Controllers/ProductController.php index 44cbb77..9c0817d 100644 --- a/src/Controllers/ProductController.php +++ b/src/Controllers/ProductController.php @@ -1,23 +1,51 @@ getAllCategories(); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $category = new CategoryModel(); + $params['categories'] = $category->getAllCategories(); - $product = new AddProductView($params); + $product = new AddProductView($params); + }else{ + return redirect('/product','Usuário sem permissão.'); + } } public function store($params){ - $product = new ProductModel(); - $result = $product->create($params); - - if($result){ - return redirect('/add/product','Produto inserido com sucesso.'); - }else{ - return redirect('/add/product','Algo deu errado, tente novamente.'); + $data = array( + 'Nome' => $params['nome'], + 'Unidade' => $params['unidade'], + 'Valor_de_venda' => $params['valorVenda'], + 'Codigo_de_barras' => $params['codigoBarras'], + 'Categoria' => $params['categoria'] + ); + $validator = array( + 'Nome' => 'required', + 'Unidade' => 'required', + 'Valor_de_venda' => 'required', + 'Codigo_de_barras' => 'required', + 'Categoria' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $product = new ProductModel(); + $result = $product->create($params); + + if($result){ + return redirect('/product','Produto inserido com sucesso.'); + }else{ + return redirect('/add/product','Ocorreu um erro interno. Contate os desenvolvedores..'); + } + }else{ + return redirect('/product',$resultValidation['message']); + } + }else{ + return redirect('/product','Usuário sem permissão.'); } } @@ -36,32 +64,77 @@ public function getProduct($params){ echo json_encode($product->getProductById($params)); } public function edit($params){ - $product = new ProductModel(); - $category = new CategoryModel(); - $params['product'] = $product->getProductById($params); - $params['categories'] = $category->getAllCategories(); - $product = new EditProductView($params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $product = new ProductModel(); + $category = new CategoryModel(); + $params['product'] = $product->getProductById($params); + $params['categories'] = $category->getAllCategories(); + $product = new EditProductView($params); + }else{ + return redirect('/product','Usuário sem permissão.'); + } } public function update($params){ - $product = new ProductModel(); - $result = $product->update($params); + $data = array( + 'Nome' => $params['nome'], + 'Unidade' => $params['unidade'], + 'Valor_de_venda' => $params['valorVenda'], + 'Codigo_de_barras' => $params['codigoBarras'], + 'Categoria' => $params['categoria'], + 'ID_do_produto' => $params['productId'] + ); + $validator = array( + 'Nome' => 'required', + 'Unidade' => 'required', + 'Valor_de_venda' => 'required', + 'Codigo_de_barras' => 'required', + 'Categoria' => 'required', + 'ID_do_produto' => 'required' + ); + $resultValidation = validate($data,$validator); - if($result){ - return redirect('/product', 'Produto atualizado com sucesso.'); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $product = new ProductModel(); + $result = $product->update($params); + + if($result){ + return redirect('/product', 'Produto atualizado com sucesso.'); + }else{ + return redirect('/product', 'Ocorreu um erro interno. Contate os desenvolvedores..'); + } + }else{ + return redirect('/product',$resultValidation['message']); + } }else{ - return redirect('/product', 'Algo deu errado, tente novamente.'); + return redirect('/product','Usuário sem permissão.'); } } public function delete($params){ - $product = new ProductModel(); - $result = $product->delete($params); + $data = array( + 'ID_do_produto' => $params['id'] + ); + $validator = array( + 'ID_do_produto' => 'required' + ); + $resultValidation = validate($data,$params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $product = new ProductModel(); + $result = $product->delete($params); - if($result){ - return redirect('/product', 'Produto deletado com sucesso.'); + if($result){ + return redirect('/product', 'Produto deletado com sucesso.'); + }else{ + return redirect('/product', 'Aldo deu errado, tente novamente.'); + } + }else{ + return redirect('/product',$resultValidation['message']); + } }else{ - return redirect('/product', 'Aldo deu errado, tente novamente.'); + return redirect('/product','Usuário sem permissão.'); } } } diff --git a/src/Controllers/PromotionController.php b/src/Controllers/PromotionController.php index b1d4c6a..9c67769 100644 --- a/src/Controllers/PromotionController.php +++ b/src/Controllers/PromotionController.php @@ -1,18 +1,42 @@ create($params); - - if($result){ - return redirect('/promotion', 'Promoção cadastrada com sucesso.'); + $data = array( + 'Nome' => $params['nome'], + 'Data_de_inicio' => $params['dataInicio'], + 'Data_fim' => $params['dataFim'] + ); + $validator = array( + 'Nome' => 'required', + 'Data_de_inicio' => 'required', + 'Data_fim' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $promotion = new PromotionModel(); + $result = $promotion->create($params); + + if($result){ + return redirect('/promotion', 'Promoção cadastrada com sucesso.'); + }else{ + return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + } + }else{ + return redirect('/promotion', $resultValidation['message']); + } }else{ - return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion', 'Usuário sem permissão.'); } } public function show(){ @@ -21,28 +45,68 @@ public function show(){ $promotion = new PromotionView($params); } public function edit($params){ - $promotion = new PromotionModel(); - $params = $promotion->getPromotionById($params); - $promotion = new EditPromotionView($params); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $promotion = new PromotionModel(); + $params = $promotion->getPromotionById($params); + $promotion = new EditPromotionView($params); + }else{ + return redirect('/promotion', 'Usuário sem permissão.'); + } } public function update($params){ - $promotion = new PromotionModel(); - $result = $promotion->update($params); + $data = array( + 'ID_da_promocao' => $params['promotionId'], + 'Nome' => $params['nome'], + 'Data_de_inicio' => $params['dataInicio'], + 'Data_fim' => $params['dataFim'] + ); + $validator = array( + 'Nome' => 'required', + 'Data_de_inicio' => 'required', + 'Data_fim' => 'required', + 'ID_da_promocao' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $promotion = new PromotionModel(); + $result = $promotion->update($params); - if($result){ - return redirect('/promotion', 'Promoção atualizada com sucesso.'); + if($result){ + return redirect('/promotion', 'Promoção atualizada com sucesso.'); + }else{ + return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + } + }else{ + return redirect('/promotion', $resultValidation['message']); + } }else{ - return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion', 'Usuário sem permissão.'); } } public function delete($params){ - $promotion = new PromotionModel(); - $result = $promotion->delete($params); + $data = array( + 'ID_da_promocao' => $params['id'] + ); + $validator = array( + 'ID_da_promocao' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $promotion = new PromotionModel(); + $result = $promotion->delete($params); - if($result){ - return redirect('/promotion', 'Promoção deletada com sucesso.'); + if($result){ + return redirect('/promotion', 'Promoção deletada com sucesso.'); + }else{ + return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + } + }else{ + return redirect('/promotion', $resultValidation['message']); + } }else{ - return redirect('/promotion', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion', 'Usuário sem permissão.'); } } } diff --git a/src/Controllers/PromotionProductController.php b/src/Controllers/PromotionProductController.php index abc8849..b8d0a8b 100644 --- a/src/Controllers/PromotionProductController.php +++ b/src/Controllers/PromotionProductController.php @@ -1,5 +1,14 @@ create($params); - - if($result){ - return redirect('/promotion-product', 'Relação da promoção ao produto cadastrada com sucesso.'); + $data = array( + 'ID_do_produto' => $params['idProduto'], + 'ID_da_promocao' => $params['idPromocao'], + 'Valor_de_desconto' => $params['valorDesconto'] + ); + $validator = array( + 'ID_do_produto' => 'required', + 'ID_da_promocao' => 'required', + 'Valor_de_desconto' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $promotionProduct = new PromotionProductModel(); + $result = $promotionProduct->create($params); + + if($result){ + return redirect('/promotion-product', 'Relação da promoção ao produto cadastrada com sucesso.'); + }else{ + return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + } }else{ - return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion-product', $resultValidation['message']); } } public function show(){ @@ -32,23 +56,51 @@ public function edit($params){ $promotionProduct = new EditPromotionProductView($params); } public function update($params){ - $promotionProduct = new PromotionProductModel(); - $result = $promotionProduct->update($params); + $data = array( + 'ID_do_produto' => $params['idProduto'], + 'ID_da_promocao' => $params['idPromocao'], + 'Valor_de_desconto' => $params['valorDesconto'], + 'ID_da_promocao_do_produto' => $params['promotionProductId'] + ); + $validator = array( + 'ID_do_produto' => 'required', + 'ID_da_promocao' => 'required', + 'Valor_de_desconto' => 'required', + 'ID_da_promocao_do_produto' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $promotionProduct = new PromotionProductModel(); + $result = $promotionProduct->update($params); - if($result){ - return redirect('/promotion-product', 'Relação da promoção ao produto atualizada com sucesso.'); + if($result){ + return redirect('/promotion-product', 'Relação da promoção ao produto atualizada com sucesso.'); + }else{ + return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + } }else{ - return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion-product', $resultValidation['message']); } } public function delete($params){ - $promotionProduct = new PromotionProductModel(); - $result = $promotionProduct->delete($params); + $data = array( + 'ID_da_promocao_do_produto' => $params['id'] + ); + $validator = array( + 'ID_da_promocao_do_produto' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $promotionProduct = new PromotionProductModel(); + $result = $promotionProduct->delete($params); - if($result){ - return redirect('/promotion-product', 'Relação da promoção ao produto deletada com sucesso.'); + if($result){ + return redirect('/promotion-product', 'Relação da promoção ao produto deletada com sucesso.'); + }else{ + return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + } }else{ - return redirect('/promotion-product', 'Aldo deu errado, tente novamente.'); + return redirect('/promotion-product', $resultValidation['message']); } } } diff --git a/src/Controllers/ProviderController.php b/src/Controllers/ProviderController.php index 149f059..4258088 100644 --- a/src/Controllers/ProviderController.php +++ b/src/Controllers/ProviderController.php @@ -1,20 +1,48 @@ create($params); - - if($result){ - return redirect('/add/provider', 'Forncedor cadastrado com sucesso'); + $data = array( + 'Nome' => $params['nome'], + 'CNPJ' => $params['cnpj'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Email' => $params['email'] + ); + $validator = array( + 'Nome' => 'required', + 'CNPJ' => 'required|cnpj', + 'Endereco' => 'required', + 'Telefone' => 'required', + 'Email' => 'required|email', + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $provider = new ProviderModel(); + $result = $provider->create($params); + + if($result){ + return redirect('/provider', 'Forncedor cadastrado com sucesso'); + }else{ + return redirect('/add/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/provider', $resultValidation['message']); + } }else{ - return redirect('/add/provider', 'Algo deu errado, tente novamente'); + return redirect('/provider', 'Usuário sem permissão.'); } } @@ -29,31 +57,85 @@ public function getProvider($params){ echo json_encode($provider->getProviderById($params)); } - public function edit($params){ + public function getProviderByName($params){ $provider = new ProviderModel(); - $params['provider'] = $provider->getProviderById($params); - $provider = new EditProviderView($params); + echo json_encode($provider->getProviderByName($params)); + } + + public function edit($params){ + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $provider = new ProviderModel(); + $params['provider'] = $provider->getProviderById($params); + $provider = new EditProviderView($params); + }else{ + return redirect('/provider', 'Usuário sem permissão.'); + } } public function update($params){ - $provider = new ProviderModel(); - $result = $provider->update($params); + $data = array( + 'Nome' => $params['nome'], + 'CNPJ' => $params['cnpj'], + 'Endereco' => $params['endereco'], + 'Telefone' => $params['telefone'], + 'Email' => $params['email'], + 'ID_do_fornecedor' => $params['providerId'] + ); + $validator = array( + 'Nome' => 'required', + 'CNPJ' => 'required|cnpj', + 'Endereco' => 'required', + 'Telefone' => 'required', + 'Email' => 'required|email', + 'ID_do_fornecedor' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $provider = new ProviderModel(); + $result = $provider->update($params); - if($result){ - return redirect('/provider', 'Fornecedor atualizado com sucesso'); + if($result){ + return redirect('/provider', 'Fornecedor atualizado com sucesso'); + }else{ + return redirect('/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/provider', $resultValidation['message']); + } }else{ - return redirect('/provider', 'Algo deu errado, tente novamente'); + return redirect('/provider', 'Usuário sem permissão.'); } } public function delete($params){ - $provider = new ProviderModel(); - $result = $provider->delete($params); + $data = array( + 'ID_do_fornecedor' => $params['id'] + ); + $validator = array( + 'ID_do_fornecedor' => 'required' + ); + $resultValidation = validate($data,$validator); + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + if($resultValidation['success']){ + $provider = new ProviderModel(); + $result = $provider->delete($params); + + if($result){ + return redirect('/provider', 'Fornecedor deletado com sucesso'); + }else{ + return redirect('/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.'); + } + }else{ + return redirect('/provider', $resultValidation['message']); + } - if($result){ - return redirect('/provider', 'Fornecedor deletado com sucesso'); }else{ - return redirect('/provider', 'Algo deu errado, tente novamente'); + return redirect('/provider', 'Usuário sem permissão.'); } } + public function getAllProviders(){ + $provider = new ProviderModel(); + echo json_encode($provider->getAllProviders()); + } } ?> diff --git a/src/Controllers/PurchaseController.php b/src/Controllers/PurchaseController.php index e69de29..a74210d 100644 --- a/src/Controllers/PurchaseController.php +++ b/src/Controllers/PurchaseController.php @@ -0,0 +1,90 @@ + $params['funcionario'], + 'Fornecedor' => $params['fornecedor'] + ); + $validator = array( + 'Funcionario' => 'required', + 'Fornecedor' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $purchaseResult = $purchase->create($params); + $productPurchase = new ProductPurchaseModel(); + $resultProductPurchase = true; + foreach($params['produtos'] as $key => $produto){ + $params['idProduto'] = $produto; + $params['idCompra'] = $purchaseResult['lastInsertedId']; + $params['quantidade'] = $params['quantidadeCompra'][$key]; + $params['valorUnitarioProduto'] = $params['valorUnitario'][$key]; + + $data = array( + 'Quantidade' => $params['quantidade'], + 'ID_do_produto' => $params['idProduto'], + 'ID_da_compra' => $params['idCompra'], + 'Valor_unitario_do_produto' => $params['valorUnitarioProduto'] + ); + + $validator = array( + 'Quantidade' => 'required', + 'ID_do_produto' => 'required', + 'ID_da_compra' => 'required', + 'Valor_unitario_do_produto' => 'required' + ); + if($resultValidation['success']){ + if(!$productPurchase->create($params)){ + $resultProductPurchase = false; + } + }else{ + return redirect('/purchase',$resultValidation['message']); + } + } + if($purchaseResult['success'] && $resultProductPurchase){ + return redirect('/purchase','Compra efetuada com sucesso.'); + }else{ + return redirect('/add/purchase','Ocorreu um erro interno. Contate os desenvolvedores..'); + } + }else{ + return redirect('/purchase',$resultValidation['message']); + } + }else{ + return redirect('/dashboard','Usuário sem permissão.'); + } + } + public function show(){ + if($_SESSION['dados_usuario']['nivelAcesso'] == 2){ + $purchase = new PurchaseModel(); + $params['purchases'] = $purchase->getAllPurchase(); + $purchase = new PurchaseView($params); + }else{ + return redirect('/dashboard','Usuário sem permissão.'); + } + } + public function getProducts($params){ + $productPurchase = new ProductPurchaseModel(); + + echo json_encode($productPurchase->getProductsByVendaId($params)); + } + public function getPurchase($params){ + $purchase = new PurchaseModel(); + + echo json_encode($purchase->getPurchase($params)); + } + } +?> \ No newline at end of file diff --git a/src/Controllers/SaleController.php b/src/Controllers/SaleController.php index 91e7639..8d2b5d9 100644 --- a/src/Controllers/SaleController.php +++ b/src/Controllers/SaleController.php @@ -1,6 +1,7 @@ create($params); - $productSale = new ProductSaleModel(); - $resultProductSale = true; - foreach($params['produtos'] as $key => $produto){ - $params['idProduto'] = $produto; - $params['idVenda'] = $saleResult['lastInsertedId']; - $params['quantidade'] = $params['quantidadeVenda'][$key]; - if(!$productSale->create($params)){ - $resultProductSale = false; + + $data = array( + 'Cliente' => $params['cliente'], + 'Funcionario' => $params['funcionario'], + 'Forma_de_pagamento' => $params['formaPagamento'] + ); + $validator = array( + 'Cliente' => 'required', + 'Funcionario' => 'required', + 'Forma_de_pagamento' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + $saleResult = $sale->create($params); + $productSale = new ProductSaleModel(); + $resultProductSale = true; + foreach($params['produtos'] as $key => $produto){ + $params['idProduto'] = $produto; + $params['idVenda'] = $saleResult['lastInsertedId']; + $params['quantidade'] = $params['quantidadeVenda'][$key]; + + $data = array( + 'Quantidade' => $params['quantidade'], + 'ID_do_produto' => $params['idProduto'], + 'ID_da_venda' => $params['idVenda'] + ); + $validator = array( + 'Quantidade' => 'required', + 'ID_do_produto' => 'required', + 'ID_da_venda' => 'required' + ); + $resultValidation = validate($data,$validator); + if($resultValidation['success']){ + if(!$productSale->create($params)){ + $resultProductSale = false; + } + }else{ + return redirect('/sale',$resultValidation['message']); + } + } + if($saleResult['success'] && $resultProductSale){ + return redirect('/sale','Venda efetuada com sucesso.'); + }else{ + return redirect('/add/sale','Ocorreu um erro interno. Contate os desenvolvedores..'); } - } - if($saleResult['success'] && $resultProductSale){ - return redirect('/add/sale','Venda efetuada com sucesso.'); }else{ - return redirect('/add/sale','Algo deu errado, tente novamente.'); + return redirect('/sale',$resultValidation['message']); } } diff --git a/src/Models/CategoryModel.php b/src/Models/CategoryModel.php index be71e59..c0e624f 100644 --- a/src/Models/CategoryModel.php +++ b/src/Models/CategoryModel.php @@ -8,7 +8,7 @@ public function create($params){ return $category; } public function getAllCategories(){ - $sql = "SELECT * FROM Categoria;"; + $sql = "SELECT * FROM Categoria ORDER BY nome ASC;"; $categories = DB::getAll($sql); return $categories; diff --git a/src/Models/ClientModel.php b/src/Models/ClientModel.php index f99b3a2..9dfd75f 100644 --- a/src/Models/ClientModel.php +++ b/src/Models/ClientModel.php @@ -13,7 +13,7 @@ public function create($params){ return DB::execute($sql); } public function getAllClients(){ - $sql = "SELECT * FROM Cliente;"; + $sql = "SELECT * FROM Cliente ORDER BY nome ASC;"; return DB::getAll($sql); } diff --git a/src/Models/EmployeeModel.php b/src/Models/EmployeeModel.php index 1340b9e..b5a5cba 100644 --- a/src/Models/EmployeeModel.php +++ b/src/Models/EmployeeModel.php @@ -11,7 +11,7 @@ public function login($params){ public function create($params){ $nome = addslashes($params['nome']); - $nivelAcesso = addslashes(($params['nivelAcesso'])); + $nivelAcesso = addslashes($params['nivelAcesso']); $cpf = addslashes($params['cpf']); $endereco = addslashes($params['endereco']); $telefone = addslashes($params['telefone']); @@ -28,7 +28,7 @@ public function create($params){ } public function getAllEmployees(){ - $sql = "SELECT * FROM Funcionario;"; + $sql = "SELECT * FROM Funcionario ORDER BY nome ASC;"; return DB::getAll($sql); } diff --git a/src/Models/ProductModel.php b/src/Models/ProductModel.php index 8b7f611..96c99b1 100644 --- a/src/Models/ProductModel.php +++ b/src/Models/ProductModel.php @@ -15,7 +15,7 @@ public function create($params){ public function getProducts($params){ $itemSearch = addslashes($params['itemSearch']); - $sql = "SELECT + $sql = "SELECT p.*, CASE WHEN @@ -32,13 +32,13 @@ public function getProducts($params){ LEFT JOIN ProdutoPromocao AS pp ON p.id = pp.idProduto LEFT JOIN - Promocao AS pr ON pr.id = pp.idPromocao + Promocao AS pr ON pr.id = pp.idPromocao WHERE p.nome like '%{$itemSearch}%'"; return DB::getAll($sql); } public function getAllProducts(){ - $sql = "SELECT * FROM Produto;"; + $sql = "SELECT * FROM Produto ORDER BY nome ASC;"; return DB::getAll($sql); } @@ -54,7 +54,7 @@ public function getProductById($params){ p.codigoBarras, c.nome AS nomeCategoria FROM Produto AS p - INNER JOIN Categoria AS c + INNER JOIN Categoria AS c ON c.id = p.idCategoria WHERE p.id = '{$id}';"; diff --git a/src/Models/ProductPurchaseModel.php b/src/Models/ProductPurchaseModel.php new file mode 100644 index 0000000..da46f46 --- /dev/null +++ b/src/Models/ProductPurchaseModel.php @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/src/Models/PromotionModel.php b/src/Models/PromotionModel.php index ce31c2c..e3b088e 100644 --- a/src/Models/PromotionModel.php +++ b/src/Models/PromotionModel.php @@ -37,6 +37,11 @@ public function delete($params){ $sql = "DELETE FROM Promocao WHERE id = '{$id}'"; + return DB::execute($sql); + } + public function checkPromotion(){ + $sql = "DELETE FROM ProdutoPromocao WHERE idPromocao in(SELECT GROUP_CONCAT(id) FROM Promocao WHERE dataFim < NOW());"; + return DB::execute($sql); } } diff --git a/src/Models/ProviderModel.php b/src/Models/ProviderModel.php index e620767..2146032 100644 --- a/src/Models/ProviderModel.php +++ b/src/Models/ProviderModel.php @@ -13,7 +13,7 @@ public function create($params){ return DB::execute($sql); } public function getAllProviders(){ - $sql = "SELECT * FROM Fornecedor;"; + $sql = "SELECT * FROM Fornecedor ORDER BY nome ASC;"; return DB::getAll($sql); } @@ -24,6 +24,13 @@ public function getProviderById($params){ return DB::getFirst($sql); } + + public function getProviderByName($params){ + $fornecedor = addslashes($params['itemSearch']); + $sql = "SELECT * FROM Fornecedor WHERE nome like '%{$fornecedor}%'"; + + return DB::getAll($sql); + } public function update($params){ $nome = addslashes($params['nome']); diff --git a/src/Models/PurchaseModel.php b/src/Models/PurchaseModel.php new file mode 100644 index 0000000..beb1270 --- /dev/null +++ b/src/Models/PurchaseModel.php @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/src/Models/SaleModel.php b/src/Models/SaleModel.php index 0d5cf09..9dfadc3 100644 --- a/src/Models/SaleModel.php +++ b/src/Models/SaleModel.php @@ -20,7 +20,7 @@ public function getAllSales(){ v.created AS dataVenda FROM Venda AS v INNER JOIN Cliente AS c ON c.id = v.idCliente - INNER JOIN FormaPagamento AS fp ON fp.id = v.idFormaPagamento;"; + INNER JOIN FormaPagamento AS fp ON fp.id = v.idFormaPagamento ORDER BY v.id DESC;"; return DB::getAll($sql); } diff --git a/src/Views/404.php b/src/Views/404.php index 6f1b2b4..17ad5da 100755 --- a/src/Views/404.php +++ b/src/Views/404.php @@ -4,14 +4,16 @@ + Erro 404 - - + + +

404

Página não encontrada

- Voltar para o inicio + Voltar para o inicio diff --git a/src/Views/AddCategoryView.php b/src/Views/AddCategoryView.php index b7c8c51..e745e34 100644 --- a/src/Views/AddCategoryView.php +++ b/src/Views/AddCategoryView.php @@ -22,9 +22,9 @@ public function __construct() -
+
- +

ADICIONAR CATEGORIA

diff --git a/src/Views/AddClientView.php b/src/Views/AddClientView.php index 8c34ab6..8409d88 100644 --- a/src/Views/AddClientView.php +++ b/src/Views/AddClientView.php @@ -22,9 +22,9 @@ public function __construct() -
+
- +

ADICIONAR CLIENTE

diff --git a/src/Views/AddEmployeeView.php b/src/Views/AddEmployeeView.php index 5dd8114..f8e8c51 100644 --- a/src/Views/AddEmployeeView.php +++ b/src/Views/AddEmployeeView.php @@ -1,102 +1,83 @@ - - - - - - Cadastro de funcionários - - - - - -
-
- -

CADASTRAR FUNCIONÁRIO

-
-
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
+ + + + + + + Cadastro de funcionários - - + + -
-

- -

-
-
+ + +
+
+ +

CADASTRAR FUNCIONÁRIO

+
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+ +
+
+ + - - - + + -
+
- +

ADICIONAR PRODUTO

diff --git a/src/Views/AddPromotionProductView.php b/src/Views/AddPromotionProductView.php index dd50bda..99a70a0 100644 --- a/src/Views/AddPromotionProductView.php +++ b/src/Views/AddPromotionProductView.php @@ -1,41 +1,76 @@ - - - - - - Relacionar promoção - - -
- -
- -
- -
- -
-

- -

- - - \ No newline at end of file +class AddPromotionProductView +{ + public function __construct($params) + { + $env = parse_ini_file('env.ini')['HOST']; +?> + + + + + + + + Relacionar promoção + + + + + +
+
+ +

ADICIONAR PRODUTO À UMA PROMOÇÃO

+
+ +
+
+
+ +
+ +
+ +
+
+
+ + +
+
+ +
+
+ + + + + diff --git a/src/Views/AddPromotionView.php b/src/Views/AddPromotionView.php index a59e921..8d35c2d 100644 --- a/src/Views/AddPromotionView.php +++ b/src/Views/AddPromotionView.php @@ -1,31 +1,65 @@ +class AddPromotionView +{ + public function __construct() + { + $env = parse_ini_file('env.ini')['HOST']; ?> + + Cadastro de promoções + + -
- -
- -
- -
- -
-

- -

+ +
+
+ +

CADASTRAR PROMOÇÃO

+
+ +
+
+
+ + + + + + +
+
+ + +
+
+ +
+
+ + - \ No newline at end of file + diff --git a/src/Views/AddProviderView.php b/src/Views/AddProviderView.php index db60de7..7c04243 100644 --- a/src/Views/AddProviderView.php +++ b/src/Views/AddProviderView.php @@ -21,9 +21,9 @@ public function __construct() -
+
- +

ADICIONAR FORNECEDOR

diff --git a/src/Views/AddPurchaseView.php b/src/Views/AddPurchaseView.php new file mode 100644 index 0000000..511b927 --- /dev/null +++ b/src/Views/AddPurchaseView.php @@ -0,0 +1,156 @@ + + + + + + + + + + Compras + + + + + +
+
+ +

EFETUAR COMPRA

+
+ +
+
+ +
+ + +
+ + + + + + +
+ + + + + + + + + + + + + + + +
LISTA DE PRODUTOS
N° itemNomeQuantidadeValor UnitarioTotalRemover
+
+ +
+
+

Fornecedor

+ + + +
+ +
+

Total

+ R$ 0.00 +
+ +
+ + +
+
+
+ +
+
+ + + + + + + @@ -16,7 +16,7 @@ public function __construct($params) - Vendas + Nova Venda @@ -24,18 +24,17 @@ public function __construct($params) -
+
- +

EFETUAR VENDA

-
- +
@@ -92,7 +91,7 @@ public function __construct($params) {$paymentMethod['id']} {$paymentMethod['descricao']} - + "; } @@ -165,7 +164,7 @@ public function __construct($params) R$ 0.00
-
+
diff --git a/src/Views/CategoryView.php b/src/Views/CategoryView.php index f687b18..126612e 100644 --- a/src/Views/CategoryView.php +++ b/src/Views/CategoryView.php @@ -1,6 +1,8 @@ + public function __construct($params){ + $env = parse_ini_file('env.ini')['HOST']; +?> @@ -8,21 +10,21 @@ public function __construct($params){ ?> Categorias + - - - -
+
- +

CATEGORIAS

@@ -57,16 +59,26 @@ public function __construct($params){ ?> -

- -

+
+ + '; - - - - -
+
- +

CLIENTES

@@ -63,20 +59,30 @@ public function __construct($params){
-

- -

+
diff --git a/src/Views/DashboardView.php b/src/Views/DashboardView.php index 6d4b056..d5bd52e 100644 --- a/src/Views/DashboardView.php +++ b/src/Views/DashboardView.php @@ -3,6 +3,7 @@ class DashboardView { public function __construct($params) { + $env = parse_ini_file('env.ini')['HOST']; ?> @@ -12,23 +13,29 @@ public function __construct($params) - + Dashboard + + -
+
- +

Business Enterprise Webshop


- Efetuar venda - Efetuar compra + + + +
diff --git a/src/Views/EditCategoryView.php b/src/Views/EditCategoryView.php index e50a66e..21b5253 100644 --- a/src/Views/EditCategoryView.php +++ b/src/Views/EditCategoryView.php @@ -5,7 +5,7 @@ public function __construct($params) { $env = parse_ini_file('env.ini')['HOST']; ?> - + @@ -20,10 +20,10 @@ public function __construct($params) -
+
- -

ADICIONAR CATEGORIA

+ +

EDITAR CATEGORIA

diff --git a/src/Views/EditClientView.php b/src/Views/EditClientView.php index f03ffd6..c280bb5 100644 --- a/src/Views/EditClientView.php +++ b/src/Views/EditClientView.php @@ -20,9 +20,9 @@ public function __construct($params) -
+
- +

EDITAR CLIENTE

diff --git a/src/Views/EditEmployeeView.php b/src/Views/EditEmployeeView.php index fe169eb..98a49dc 100644 --- a/src/Views/EditEmployeeView.php +++ b/src/Views/EditEmployeeView.php @@ -1,97 +1,74 @@ + public function __construct($params){ + $env = parse_ini_file('env.ini')['HOST']; +?> + Edição de funcionários - + + - + -
+
- +

EDITAR FUNCIONÁRIO

- -
- - -
-
- - -
-
- - -
-
- - -
-
- - +
+ + + + + + + + + + + + + + + + + + +
-
- - -
-
- - -
-
- - -
-
- -
+
+ +
- - - -

- -

+
@@ -100,4 +77,4 @@ public function __construct($params){ ?> \ No newline at end of file +?> diff --git a/src/Views/EditProductView.php b/src/Views/EditProductView.php index 46a11a2..4e7028c 100644 --- a/src/Views/EditProductView.php +++ b/src/Views/EditProductView.php @@ -20,9 +20,9 @@ public function __construct($params) -
+
- +

EDITAR PRODUTO

@@ -30,15 +30,15 @@ public function __construct($params)
- + - + - + - + - + - -
- -
- -
- - -

- -

- - - \ No newline at end of file +class EditPromotionProductView +{ + public function __construct($params) + { + $env = parse_ini_file('env.ini')['HOST']; ?> + + + + + + + + + Editar relação da promoção + + + + + +
+
+ +

ADICIONAR PRODUTO À UMA PROMOÇÃO

+
+ +
+
+
+ + + + + + + +
+
+ + +
+
+ +
+
+ + + + + diff --git a/src/Views/EditPromotionView.php b/src/Views/EditPromotionView.php index fcab2f1..8476cb9 100644 --- a/src/Views/EditPromotionView.php +++ b/src/Views/EditPromotionView.php @@ -1,32 +1,66 @@ +class EditPromotionView +{ + public function __construct($params) + { + $env = parse_ini_file('env.ini')['HOST']; ?> + - Cadastro de promoções + + Editar Promoção + + -
- - -
- -
- -
- -
-

- -

+ +
+
+ +

ADICIONAR Promoção

+
+ +
+
+
+ + + + + + + +
+
+ + +
+
+ +
+
+ + - \ No newline at end of file + diff --git a/src/Views/EditProviderView.php b/src/Views/EditProviderView.php index 6e38c64..41663d7 100644 --- a/src/Views/EditProviderView.php +++ b/src/Views/EditProviderView.php @@ -20,9 +20,9 @@ public function __construct($params) -
+
- +

EDITAR FORNECEDOR

diff --git a/src/Views/EmployeeView.php b/src/Views/EmployeeView.php index 2ea8b56..406cdf3 100644 --- a/src/Views/EmployeeView.php +++ b/src/Views/EmployeeView.php @@ -14,21 +14,17 @@ public function __construct($params){ const host = ''; - - - - -
+
- +

FUNCIONÁRIOS

@@ -63,20 +59,28 @@ public function __construct($params){
-

- -

+
diff --git a/src/Views/LoginView.php b/src/Views/LoginView.php index 4f4b2d8..bcd62b8 100755 --- a/src/Views/LoginView.php +++ b/src/Views/LoginView.php @@ -5,10 +5,13 @@ class LoginView{ ?> - Login de Usuário - - - + + + + Login de Usuário + @@ -26,13 +29,20 @@ class LoginView{ - Esqueci minha senha - - - + diff --git a/src/Views/ProductView.php b/src/Views/ProductView.php index 6b8544e..b61aa6b 100644 --- a/src/Views/ProductView.php +++ b/src/Views/ProductView.php @@ -14,21 +14,19 @@ public function __construct($params){ const host = ''; - - - - -
+
- +

PRODUTOS

@@ -54,8 +52,8 @@ public function __construct($params){ - - + + @@ -66,28 +64,38 @@ public function __construct($params){
- + + +
-

- -

+
- + + public function __construct($params) { + $env = parse_ini_file('env.ini')['HOST']; +?> + Relações das promoções - + - Adicionar promoção ao produto - + +
+
+ +
+

RELAÇÕES DAS PROMOÇÕES

+ +
+
+
+
+ + @@ -30,23 +48,43 @@ public function __construct($params) { ?> - - + +
ID Produto Promoção Valor de descontoEditarDeletar
- Editar - Deletar + + + + + + + +
-

- -

+ + +
+ + + + \ No newline at end of file +?> diff --git a/src/Views/PromotionView.php b/src/Views/PromotionView.php index fe0f135..fd379c8 100644 --- a/src/Views/PromotionView.php +++ b/src/Views/PromotionView.php @@ -1,28 +1,50 @@ + public function __construct($params){ + $env = parse_ini_file('env.ini')['HOST']; +?> + Promoções - + - Adicionar promoção - Relacionar promoção - + +
+
+ +
+

PROMOÇÕES

+ +
+
+
+
+ + + + @@ -30,24 +52,47 @@ public function __construct($params){ ?> - - - + + + + + + +
ID Nome Data inicio Data fimEditarDeletar
- Editar - Deletar - + + + + + + + +
-

- -

+ + +
+ + + + \ No newline at end of file +?> diff --git a/src/Views/ProviderView.php b/src/Views/ProviderView.php index 489c81f..743652b 100644 --- a/src/Views/ProviderView.php +++ b/src/Views/ProviderView.php @@ -14,21 +14,19 @@ public function __construct($params){ const host = ''; - - - - -
+
- +

FORNECEDORES

@@ -62,21 +60,31 @@ public function __construct($params){
- + + +
-

- -

+
diff --git a/src/Views/PurchaseView.php b/src/Views/PurchaseView.php new file mode 100644 index 0000000..378c546 --- /dev/null +++ b/src/Views/PurchaseView.php @@ -0,0 +1,97 @@ + + + + + + + + Compras + + + + +
+
+ +
+

COMPRAS

+
+ Adicionar compra +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IDQuantidade de itensValor totalNota FiscalFornecedorData de compraAção
+
+ +
+
+ + + + + + diff --git a/src/Views/SaleView.php b/src/Views/SaleView.php index 7755a3b..d31c500 100644 --- a/src/Views/SaleView.php +++ b/src/Views/SaleView.php @@ -18,21 +18,17 @@ public function __construct($params) { const host = ''; - - - - -
+
- +

VENDAS

@@ -56,10 +52,10 @@ public function __construct($params) { - + - + @@ -70,19 +66,32 @@ public function __construct($params) {
- Editar
- + +
- - - + + + - \ No newline at end of file diff --git a/src/helpers/CheckPromotion.php b/src/helpers/CheckPromotion.php new file mode 100644 index 0000000..3c2cd02 --- /dev/null +++ b/src/helpers/CheckPromotion.php @@ -0,0 +1,6 @@ +checkPromotion(); +?> \ No newline at end of file diff --git a/src/helpers/Validate.php b/src/helpers/Validate.php new file mode 100644 index 0000000..0f9bf89 --- /dev/null +++ b/src/helpers/Validate.php @@ -0,0 +1,48 @@ + $param){ + $validate = explode('|',$validators[$key]); + foreach($validate as $val){ + switch ($val) { + case 'required': + if(!empty($param)){ + $success = true; + continue; + }else{ + $message = $key.' é um campo obrigatório e não foi passado'; + return array('success' => false, 'message' => str_replace('_',' ',$message) ?? null); + } + break; + case 'email': + if(preg_match('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/',$param)){ + $success = true; + continue; + }else{ + $message = $key.' não é valido'; + return array('success' => false, 'message' => str_replace('_',' ',$message) ?? null); + } + break; + case 'cpf': + if(preg_match('/([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})/',$param) && strlen(str_replace('.','',str_replace('-','',$param))) == 11){ + $success = true; + continue; + }else{ + $message = $key.' não é valido'; + return array('success' => false, 'message' => str_replace('_',' ',$message) ?? null); + } + break; + case 'cnpj': + if(preg_match('/([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})/',$param)){ + $success = true; + continue; + }else{ + $message = $key.' não é valido'; + return array('success' => false, 'message' => str_replace('_',' ',$message) ?? null); + } + break; + } + } + } + return array('success' => $success, 'message' => str_replace('_',' ',$message ?? null)); + } +?> \ No newline at end of file