Exemple #1
0
 public clsListaCompleta(clsLista lista, SortableBindingList <clsItem> itens)
 {
     ListaID   = lista.ID;
     Data      = lista.Data;
     Descricao = lista.Descricao;
     LojaID    = lista.LojaID;
     Itens     = itens.OriginalList;
 }
Exemple #2
0
        public static bool ListaUpdate(clsLista lista, List <clsItem> itens)
        {
            try {
                var produtoCorredor = ProdutoMapaLojaGet(lista.LojaID);
                var corredorMapaId  = MapaLojaGet(lista.LojaID);
                using (var conn = GetConnectionShopping()) {
                    var transaction = conn.BeginTransaction("Transaction");
                    var cmd         = new SqlCommand("sp_ListaUpsert", conn)
                    {
                        CommandType = CommandType.StoredProcedure,
                        Transaction = transaction
                    };
                    try {
                        if (lista.Updated)
                        {
                            cmd.Parameters.Add(new SqlParameter("@ID", lista.ID));
                            cmd.Parameters.Add(new SqlParameter("@Data", lista.Data));
                            cmd.Parameters.Add(new SqlParameter("@Descricao", lista.Descricao));
                            cmd.Parameters.Add(new SqlParameter("@lojaID", lista.LojaID));
                            var pNewID = cmd.Parameters.Add("@NewId", SqlDbType.Int);
                            pNewID.Direction = ParameterDirection.Output;
                            cmd.ExecuteNonQuery();
                            var NewID = pNewID.Value as int?;
                            lista.ID = NewID ?? lista.ID;
                        }

                        foreach (var item in itens)
                        {
                            cmd.CommandText = "sp_ItemUpdate";
                            cmd.Parameters.Clear();
                            cmd.Parameters.Add(new SqlParameter("@ID", item.ID));
                            cmd.Parameters.Add(new SqlParameter("@Marca", item.Marca));
                            cmd.Parameters.Add(new SqlParameter("@Preco", item.Preco));
                            cmd.Parameters.Add(new SqlParameter("@QtdPrevista", item.QtdPrevista));
                            cmd.Parameters.Add(new SqlParameter("@QtdReal", item.QtdReal));
                            cmd.ExecuteNonQuery();

                            int oldCorredor;
                            var mustUpdate = true;
                            if (produtoCorredor.TryGetValue(item.ProdutoID, out oldCorredor))
                            {
                                mustUpdate = oldCorredor != item.CorredorNum;
                            }
                            else
                            {
                                mustUpdate = item.CorredorNum != 0;
                            }
                            if (!mustUpdate)
                            {
                                continue;
                            }
                            int oldMapaId, newMapaId;
                            corredorMapaId.TryGetValue(oldCorredor, out oldMapaId);
                            corredorMapaId.TryGetValue(item.CorredorNum, out newMapaId);
                            if (!(item.CorredorNum > 0 && newMapaId == 0)) // Não fazer se CorredorNum não existir
                            {
                                ProdutoMapaUpsert(item.ProdutoID, oldMapaId, newMapaId);
                            }
                        }
                        transaction.Commit();
                        return(true);
                    }
                    catch (Exception ex) {
                        ShowError("Database.ListaUpdate", ex);

                        // Attempt to roll back the transaction.
                        try {
                            transaction.Rollback();
                            return(false);
                        }
                        catch (Exception ex2) {
                            // This catch block will handle any errors that may have occurred
                            // on the server that would cause the rollback to fail, such as
                            // a closed connection.
                            ShowError("Database.ListaUpdate", ex2);
                            return(false);
                        }
                    }
                }
            }
            catch (Exception ex) {
                ShowError("Database.ListaUpdate", ex);
                return(false);
            }
        }