internal static List <EstimadoDetDTO> CopiarPeriodos(DateTime fOrigenDesde, DateTime fOrigenHasta, DateTime fDestinoDesde, List <EstimadoDetDTO> lineas, StateBag viewState) { //Armo lista de elemtnos que SI reemplazo. //Busco en la coleccion, todas las lineas en el periodo, y con el aviso seleccionado. var lineasACopiar = lineas.FindAll( (x) => (x.Fecha >= fOrigenDesde && x.Fecha <= fOrigenHasta)); //Si encontre líneas a copiar... if (lineasACopiar.Count > 0) { EstimadoDetDTO nuevaLinea; DateTime fechaTmp; List <EstimadoDetDTO> lineasTmp = new List <EstimadoDetDTO>(); TimeSpan diasEnElFuturo = fDestinoDesde.Subtract(fOrigenDesde); //Por cada linea que encontre, genero una nueva e igual, x dias en el futuro. foreach (var linea in lineasACopiar) { nuevaLinea = new EstimadoDetDTO(); nuevaLinea.RecId = NextTempRecId(viewState); nuevaLinea.DatareaId = linea.DatareaId; //Avanzo la fecha tantos dias como corresponda... fechaTmp = linea.Fecha.Add(diasEnElFuturo); nuevaLinea.Fecha = fechaTmp; nuevaLinea.Dia = fechaTmp.Day; nuevaLinea.DiaSemana = fechaTmp.ToString("dddd", new CultureInfo("es-ES")).ToUpper().Trim(); nuevaLinea.Costo = linea.Costo; nuevaLinea.CostoOp = linea.CostoOp; nuevaLinea.CostoOpUni = linea.CostoOpUni; nuevaLinea.CostoUni = linea.CostoUni; nuevaLinea.Duracion = linea.Duracion; nuevaLinea.Hora = linea.Hora; nuevaLinea.IdentifAviso = linea.IdentifAviso; nuevaLinea.PautaId = linea.PautaId; nuevaLinea.Salida = linea.Salida; //Agrego la nueva linea. lineasTmp.Add(nuevaLinea); } //Junto las dos listas (temporal y la que ya tenia). lineasTmp.AddRange(lineas); //Ordeno por fecha. lineasTmp.Sort( (x, y) => DateTime.Compare(x.Fecha, y.Fecha)); //Guardo la lista en el Viewstate. return(lineasTmp); } else { return(lineas); } }
public Estimado(Ordenado ordenado, string usuario) { EstimadoDetDTO estDet; EstimadoSKUDTO estSKU; Cabecera = new EstimadoCabDTO(ordenado.Cabecera); Cabecera.Confirmado = usuario; Cabecera.FecConfirma = DateTime.Now; Cabecera.Version = 1; Cabecera.FecUltModif = DateTime.Now; Cabecera.FecCierre = null; Cabecera.UsuCierre = string.Empty; Lineas = new List <EstimadoDetDTO>(); foreach (var ordDet in ordenado.Lineas) { estDet = new EstimadoDetDTO(ordDet); estDet.RecId = 0; Lineas.Add(estDet); } SKUs = new List <EstimadoSKUDTO>(); foreach (var ordSKU in ordenado.SKUs) { estSKU = new EstimadoSKUDTO(ordSKU); estSKU.RecId = 0; SKUs.Add(estSKU); } }