public clsListaCompleta(clsLista lista, SortableBindingList <clsItem> itens) { ListaID = lista.ID; Data = lista.Data; Descricao = lista.Descricao; LojaID = lista.LojaID; Itens = itens.OriginalList; }
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); } }