public void UpdateProperties(int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, bool VendaExpress) { ValidateAndSetProperties(IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress); }
private void ValidateAndSetProperties(int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, bool VendaExpress) { DomainException.When(IDCompany == 0, "Compania não informada."); DomainException.When(IDUser == 0, "Usuário não informado."); DomainException.When(DataVenda == DateTime.MinValue, "Data da Venda Inválida."); DomainException.When(Status == 0, "Status não informado."); DomainException.When(IDVendedor == 0, "Vendedor não informado."); DomainException.When(IDEmpresa == 0, "Cliente não informado."); DomainException.When(QtdeParcelas == 0, "Qtde de Parcelas Inválida."); this.IDCompany = IDCompany; this.IDUser = IDUser; this.DataVenda = DataVenda; this.Status = Status; this.IDUsuario = IDUsuario; this.IDVendedor = IDVendedor; this.IDEmpresa = IDEmpresa; this.TipoPagamento = TipoPagamento; this.QtdeParcelas = QtdeParcelas; this.Observacao = Observacao; this.VendaExpress = VendaExpress; }
public int Save(int IDPedidoVenda, int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, List <PedidoVendaItemEN> ListPedidoVendaItens, bool VendaExpress) { int idPedido = 0; _unitOfWork.BeginTransaction(); try { PedidoVendaEN pedidoVendaEN = _repositoryPedidoVenda.GetByID(IDPedidoVenda); if (pedidoVendaEN != null) { if (pedidoVendaEN.Status != PedidoVendaStatusEnum.Aberto) { pedidoVendaEN.UpdateProperties ( IDCompany, IDUser, pedidoVendaEN.DataVenda, pedidoVendaEN.Status, pedidoVendaEN.IDUsuario, pedidoVendaEN.IDVendedor, pedidoVendaEN.IDEmpresa, pedidoVendaEN.TipoPagamento, pedidoVendaEN.QtdeParcelas, Observacao, VendaExpress ); } else { pedidoVendaEN.UpdateProperties ( IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress ); } _repositoryPedidoVenda.Edit(pedidoVendaEN); } else { pedidoVendaEN = new PedidoVendaEN ( IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress ); pedidoVendaEN.DataCadastro = DateTime.Now.ToLocalTime(); _repositoryPedidoVenda.Save(pedidoVendaEN); } _unitOfWork.Commit(); if (pedidoVendaEN.Status == PedidoVendaStatusEnum.Aberto) { idPedido = pedidoVendaEN.IDPedido; List <PedidoVendaItemEN> listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == idPedido).ToList(); //VERIFICA SE ALGUM ITEM FOI EXCLUÍDO foreach (var itemPedidoBD in listPedidoVendaItem) { var itemPedido = ListPedidoVendaItens.Where(obj => obj.IDProduto == itemPedidoBD.IDProduto).FirstOrDefault(); if (itemPedido == null) { _pedidoVendaItemBU.RemoveItem(itemPedidoBD); } } listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == idPedido).ToList(); int item = 0; foreach (var itemPedido in ListPedidoVendaItens) { var itemPedidoBD = listPedidoVendaItem.Where(obj => obj.IDProduto == itemPedido.IDProduto).FirstOrDefault(); int pedidoItem = 0; if (itemPedidoBD != null) { pedidoItem = itemPedidoBD.IDPedidoItem; item = itemPedidoBD.Item; } else { pedidoItem = itemPedido.IDPedidoItem; item++; } _pedidoVendaItemBU.Save(pedidoItem, idPedido, item, itemPedido.IDProduto, itemPedido.Qtde, itemPedido.Valor); if (pedidoItem != 0) { item = listPedidoVendaItem.Count(); } } } _unitOfWork.CommitTransaction(); } catch (DomainException ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException(ex.Message); } catch (Exception ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException("Erro ao salvar pedido. Tente novamente mais tarde"); } return(idPedido); }