Reservas.cs
1 using sage.ew.interficies;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 
7 namespace sage.ew.serie.Clases
8 {
12  public static class ReservaDeSeries
13  {
14  static Dictionary<string, List<string>> _dicReservas = new Dictionary<string, List<string>>();
15 
19  public static void Inicializar()
20  {
21  _dicReservas = new Dictionary<string, List<string>>();
22  }
23 
27  public static void Clear()
28  {
29  _dicReservas.Clear();
30  }
31 
37  public static void Add(IDocumentLinea linea, List<string> listaSeries)
38  {
39  string clave = linea._Articulo.TrimEnd();
40  if (listaSeries == null) //Me guardo una lista vacia para obviar el trabajo con nulos
41  listaSeries = new List<string>();
42 
43  if (_dicReservas.ContainsKey(clave))
44  _dicReservas[clave].AddRange(listaSeries);
45  else
46  {
47  //Bug 199722 => Hay que crear una copia de la lista pq sino la instrucción Remove se ejecuta sobre la propia lista y sólo elimina 1 elemento
48  // Seguramente a internamente le debe saltar un error de colección modificada que no llega a trascender.
49  _dicReservas.Add(clave, new List<string>(listaSeries));
50  }
51  }
52 
58  public static void Remove(IDocumentLinea linea, List<string> listaSeries)
59  {
60  string clave = linea._Articulo.TrimEnd();
61  if (listaSeries == null) //Me guardo una lista vacia para obviar el trabajo con nulos
62  listaSeries = new List<string>();
63 
64  if (_dicReservas.ContainsKey(clave))
65  {
66  listaSeries.ForEach(serie => _dicReservas[clave].Remove(serie));
67  }
68  }
69 
75  public static void Remove(IDocumentLinea linea, string serie)
76  {
77  string clave = linea._Articulo.TrimEnd();
78  if (String.IsNullOrWhiteSpace(serie)) //Sino hay serie, acabo
79  return;
80 
81  if (_dicReservas.ContainsKey(clave))
82  {
83  _dicReservas[clave].Remove(serie);
84  }
85  }
86 
92  public static void Update(IDocumentLinea linea, List<string> listaSeries)
93  {
94  string clave = linea._Articulo.TrimEnd();
95  if (listaSeries == null) //Me guardo una lista vacia para obviar el trabajo con nulos
96  listaSeries = new List<string>();
97 
98  if (_dicReservas.ContainsKey(clave))
99  _dicReservas[clave] = listaSeries;
100  else
101  _dicReservas.Add(clave, listaSeries);
102  }
103 
109  public static List<string> GetReservadas(string clave)
110  {
111  List<string> listaReservadas = new List<string>();
112 
113  //CCR 197410 => Las series por contador no van ligadas al artículo, incluyo todas las que tengo
114  //clave = clave.TrimEnd();
115  //if (_dicReservas.ContainsKey(clave))
116  //{
117  // listaReservadas.AddRange(_dicReservas[clave]);
118  //}
119  foreach (var articulo in _dicReservas.Keys)
120  {
121  listaReservadas.AddRange(_dicReservas[articulo]);
122  }
123  //FCCR 197410
124 
125  return listaReservadas;
126  }
127  }
128 }
Interficie mínima de las líneas (Mantener lo mas reducida posible)
Definition: IDocument.cs:186