public JsonResult FinalizarProducao(int IdProduto, int IdPedido, int TempoDecorrido)
        {
            try
            {
                using (var producaoPorPedido = new ProducaoPorPedido())
                {

                    var pedidoPrducao = new PedidoProdutoProduzido()
                    {
                        Pedido = producaoPorPedido.GetPedidoById(IdPedido),
                        Produto = producaoPorPedido.GetProdutoById(IdProduto),
                        TempoProducao = TempoDecorrido
                    };

                    producaoPorPedido.FinalizarProducao(pedidoPrducao, User.Identity.Name, Request.ServerVariables["REMOTE_ADDR"]);
                    return Json(new { TipoMensagem = TipoMensagemRetorno.Ok, PedidoFinalizado = producaoPorPedido.VerificaPedidoFinalizado(producaoPorPedido.GetPedidoById(IdPedido)) }, "text/html", JsonRequestBehavior.AllowGet);
                }

            }
            catch (Exception ex)
            {
                return Json(
                    new
                    {
                        TipoMensagem = TipoMensagemRetorno.Erro,
                        Mensagem = ex.Message

                    }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
 private void AtualiarHistoricoStatusProducao(StatusProducaoHistorico Status, string UsuarioAtualizacao, string IpAtualizacao, PedidoProdutoProduzido PedidoProduzido)
 {
     pedidoProdutoProduzidoHistoricoProducaoBm.Insert(new PedidoProdutoProduzidoHistoricoProducao
     {
         DataHoraIncluscai = DateTime.Now,
         IpAtualizacao = IpAtualizacao,
         UuarioResponsável = usuarioBm.GetByLogin(UsuarioAtualizacao),
         PedidoProdutoProduzido = PedidoProduzido,
         Status = Status
     });
 }
        public JsonResult SairTelaProducaoPorProduto(string strProdutos, string UsuarioResponsavel, string IpAtualizacao)
        {
            var listaProduto = JsonConvert.DeserializeObject<IList<ProducaoVisaoPedidoModel>>(strProdutos);

            using (var producaoPorPedido = new ProducaoPorPedido())
            {

                foreach(var produtoProduzidoModel in listaProduto)
                {
                    var ProdutoProduzido = new PedidoProdutoProduzido()
                    {
                        Pedido = producaoPorPedido.GetPedidoById(produtoProduzidoModel.Pedido.IdPedido),
                        Produto = producaoPorPedido.GetProdutoById(produtoProduzidoModel.Produto.IdProduto),
                        Quantidade = produtoProduzidoModel.Quantidade,
                        TempoProducao = produtoProduzidoModel.TempoProducao,
                        StatusAtual = (StatusProducaoProduto)produtoProduzidoModel.StatusAtual
                    };

                    producaoPorPedido.IncluirProducaoPedido(ProdutoProduzido);

                }

            }

            return Json(new { }, JsonRequestBehavior.AllowGet);
        }
        public void IniciarProducao(int idProduto, string UsuarioAtualizacao, string IpAtualizacao)
        {
            var produto = produtoBm.GetByID(idProduto);

            var ListaPedidos = GetPedidosEmProducaoByProduto(produto);

            foreach (var pedido in ListaPedidos)
            {

                var pedidoProdutoProduzido = new PedidoProdutoProduzido()
                {
                    DataHoraInicioFabricacao = DateTime.Now,
                    Pedido = pedido,
                    Produto = produto,
                    StatusAtual = StatusProducaoProduto.Produzindo,
                    TempoProducao = 0,
                    Quantidade = pedidoProdutoBm.GetPedidoProdutoByPedidoEProduto(pedido, produto).Quantidade

                };

                pedidoProdutoProduzidoBm.Insert(pedidoProdutoProduzido);

                AtualiarHistoricoStatusProducao(StatusProducaoHistorico.Inicio, UsuarioAtualizacao, IpAtualizacao, pedidoProdutoProduzido);

            }
        }
        public void IncluirProducaoPedido(PedidoProdutoProduzido produtoProduzido)
        {
            var produto = produtoBm.GetByID(produtoProduzido.Produto.IdProduto);

            var ListaPedidos = pedidoBm.GetListaPedidosEmProducao();

            foreach (var pedido in ListaPedidos)
            {
                var pedidoProduto = pedidoProdutoProduzidoBm.GetByPedidoAndProduto(pedido, produto);

                if (pedidoProduto != null)
                {
                    pedidoProduto.Quantidade = produtoProduzido.Quantidade;
                    pedidoProduto.TempoProducao = produtoProduzido.TempoProducao;
                    pedidoProduto.StatusAtual = produtoProduzido.StatusAtual;

                    pedidoProdutoProduzidoBm.Update(pedidoProduto);

                }
                else {

                    if (pedidoProdutoBm.GetPedidoProdutoByPedidoEProduto(pedido, produto) != null)
                    {
                        produtoProduzido.DataHoraInicioFabricacao = DateTime.Now;
                        produtoProduzido.TempoProducao = 0;
                        pedidoProdutoProduzidoBm.Insert(produtoProduzido);
                    }

                }
            }
        }
        public void IniciarProducaoPedido(int idProduto, int IdPedido, int Quantidade, string LoginUsuario, string IpAtualzacao)
        {
            var pedido = pedidoBm.GetByID(IdPedido);
            var produto = produtoBm.GetByID(idProduto);

            var pedidoProdutoProduzido = pedidoProdutoProduzidoBm.GetByPedidoAndProduto(pedido, produto);

            if (pedidoProdutoProduzido != null)
            {
                pedidoProdutoProduzido.StatusAtual = StatusProducaoProduto.Produzindo;
                pedidoProdutoProduzido.Quantidade = Quantidade;
                pedidoProdutoProduzidoBm.Update(pedidoProdutoProduzido);
            }
            else
            {
                pedidoProdutoProduzido = new PedidoProdutoProduzido()
                {
                    DataHoraInicioFabricacao = DateTime.Now,
                    Pedido = pedido,
                    Quantidade = Quantidade,
                    Produto = produtoBm.GetByID(idProduto),
                    StatusAtual = StatusProducaoProduto.Produzindo
                };

                pedidoProdutoProduzidoBm.Insert(pedidoProdutoProduzido);
            }

            AtualiarHistoricoStatusProducao(StatusProducaoHistorico.Inicio,LoginUsuario, IpAtualzacao, pedidoProdutoProduzido);
        }
        public void IncluirProducaoPedido(PedidoProdutoProduzido produtoProduzido)
        {
            var pedidoProduto = pedidoProdutoProduzidoBm.GetByPedidoAndProduto(produtoProduzido.Pedido, produtoProduzido.Produto);

            if (pedidoProduto != null)
            {
                pedidoProduto.Quantidade = produtoProduzido.Quantidade;
                pedidoProduto.TempoProducao = produtoProduzido.TempoProducao;
                pedidoProduto.StatusAtual = produtoProduzido.StatusAtual;

                pedidoProdutoProduzidoBm.Update(pedidoProduto);

            }
            else {
                produtoProduzido.DataHoraInicioFabricacao = DateTime.Now;
                pedidoProdutoProduzidoBm.Insert(produtoProduzido);
            }
        }
        public void FinalizarProducao(PedidoProdutoProduzido PedidoProduzido, string UsuarioAtualizacao, string IpAtualizacao)
        {
            PedidoProduzido.StatusAtual = StatusProducaoProduto.Concluido;
            PedidoProduzido.DataHoraInicioFabricacao = DateTime.Now;

            pedidoProdutoProduzidoBm.Update(PedidoProduzido);

            AtualiarHistoricoStatusProducao(StatusProducaoHistorico.Finalizacao, UsuarioAtualizacao, IpAtualizacao, PedidoProduzido);

            if (VerificaPedidoFinalizado(PedidoProduzido.Pedido))
            {
                var pedido = pedidoBm.GetByID(PedidoProduzido.Pedido.IdPedido);
                pedido.StatusAtual = StatusPedido.AguardandoEntrega;
                pedidoBm.Update(pedido);

                var pedidoHistorico = new PedidoHistoricoStatus()
                {
                    DataHoraMudança = DateTime.Now,
                    StatusDe = StatusPedido.EmProducao,
                    Pedido = pedidoBm.GetByID(PedidoProduzido.Pedido.IdPedido),
                    StatusPara = StatusPedido.AguardandoEntrega,
                    UsuarioResponsavel = usuarioBm.GetByLogin(UsuarioAtualizacao)
                };

                pedidoHistoricoStatusBm.Insert(pedidoHistorico);

            }
        }