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); } }
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 EstimadoDetVersionDTO(EstimadoDetDTO estDet) { DTOHelper.FillObjectByObject(estDet, this); }
private List<EstimadoDetDTO> CopiarPeriodos(DateTime fOrigenDesde, DateTime fOrigenHasta, DateTime fDestinoDesde, List<EstimadoDetDTO> lineas) { bool preExistentesFlag = false; EspacioContDTO espacio = GetEspacioContenido(); //Armo lista de elementos 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>(); List<EstimadoDetDTO> preExistentes = new List<EstimadoDetDTO>(); DateTime diasEnElFuturo = fOrigenDesde; int cantDias; fechaTmp = fDestinoDesde; cantDias = 0; //Por cada linea que encontre, genero una nueva e igual, x dias en el futuro. foreach (var linea in lineasACopiar) { FrecuenciaDTO frecuencia = CRUDHelper.Read(string.Format("IdentifFrecuencia = '{0}'", ucIdentifFrecuencia.SelectedValue), BusinessMapper.GetDaoByEntity(BusinessMapper.eEntities.Frecuencia)); List<FrecuenciaDetDTO> frecuenciaDetalles = CRUDHelper.ReadAll(string.Format("IdentifFrecuencia = '{0}'", frecuencia.IdentifFrecuencia), BusinessMapper.GetDaoByEntity(BusinessMapper.eEntities.FrecuenciaDet)); nuevaLinea = new EstimadoDetDTO(); nuevaLinea.RecId = NextTempRecId(); nuevaLinea.DatareaId = linea.DatareaId; //cargo lineas nuevas if (fOrigenDesde != linea.Fecha) { cantDias++; diasEnElFuturo = linea.Fecha; fechaTmp = fechaTmp.AddDays(cantDias); } nuevaLinea.Fecha = fDestinoDesde.AddDays(cantDias); nuevaLinea.Dia = nuevaLinea.Fecha.Day; string[] sDias = { "DOMINGO", "LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO" }; for (int x = 0; x <= 6; x++) { if ((int)nuevaLinea.Fecha.DayOfWeek == x) { nuevaLinea.DiaSemana = sDias[x]; } } //evito que se carguen datos fuera de los dias pautados bool retval = false; for (int k = 0; k <= frecuenciaDetalles.Count - 1; k++) { if (nuevaLinea.DiaSemana.Trim() == frecuenciaDetalles[k].DiaSemana.Trim()) { retval = true; break; } } if (retval == false) throw new Exception("No se puede grabar en dias de semana distintos a los pautados."); nuevaLinea.Hora = linea.Hora ; nuevaLinea.Costo = linea.Costo ; nuevaLinea.CostoOp = linea.CostoOp ; nuevaLinea.CostoOpUni = linea.CostoOpUni ; nuevaLinea.CostoUni = linea.CostoUni ; nuevaLinea.Duracion = linea.Duracion ; nuevaLinea.IdentifAviso = linea.IdentifAviso; nuevaLinea.PautaId = linea.PautaId ; nuevaLinea.Salida = linea.Salida ; foreach (EstimadoDetDTO l in lineas) { if (l.Fecha == fechaTmp.Date) if (l.Hora == linea.Hora) if (l.Salida == nuevaLinea.Salida) preExistentes.Add(linea); } lineasTmp.Add(nuevaLinea);//Agrego la nueva linea. } //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)); if (preExistentesFlag == true) lblErrorLineas.Text = "No se pudieron grabar todas las lineas. No olvide GRABAR antes de continuar."; //Guardo la lista en el Viewstate. gv.DataSource = lineasTmp; return lineasTmp; } else { throw new Exception("No hay avisos para copiar dentro del rango seleccionado"); } }
private List<EstimadoDetDTO> PeriodosCopiar(DateTime fOrigenDesde, DateTime fOrigenHasta, DateTime fDestinoDesde, DateTime fDestinoHasta, List<EstimadoDetDTO> lineas) { List<EstimadoDetDTO> LineasOrigen = lineas; List<EstimadoDetDTO> LineasSeleccionadas = new List<EstimadoDetDTO>(); List<EstimadoDetDTO> LineasDestino = lineas; FrecuenciaDTO frecuencia = CRUDHelper.Read(string.Format("IdentifFrecuencia = '{0}'", ucIdentifFrecuencia.SelectedValue), BusinessMapper.GetDaoByEntity(BusinessMapper.eEntities.Frecuencia)); List<FrecuenciaDetDTO> frecuenciaDetalles = CRUDHelper.ReadAll(string.Format("IdentifFrecuencia = '{0}'", frecuencia.IdentifFrecuencia), BusinessMapper.GetDaoByEntity(BusinessMapper.eEntities.FrecuenciaDet)); lineas = Lineas.OrderBy(p => p.Dia).ThenBy(q => q.Hora).ThenBy(r => r.Salida).ToList(); EspacioContDTO espacio = GetEspacioContenido(); string[,] DiasSemana = { { "LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO", "DOMINGO" }, { "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" } }; var lineasACopiar = lineas.FindAll((x) => (x.Fecha.DayOfYear >= fOrigenDesde.DayOfYear && x.Fecha.DayOfYear <= fOrigenHasta.DayOfYear)); DateTime origenM; // ARMADO DE LINEAS SELECCIONADAS // for (int i = 0; i <= LineasOrigen.Count - 1; i++) { origenM = new DateTime(LineasOrigen[i].Fecha.Year, LineasOrigen[i].Fecha.Month, LineasOrigen[i].Fecha.Day); if (origenM >= fOrigenDesde && origenM <= fOrigenHasta) { LineasSeleccionadas.Add(lineas[i]); } } //ORDENA LAS LINEAS SELECCIONADAS LineasSeleccionadas = LineasSeleccionadas.OrderBy(o => o.Dia).ThenBy(p => p.Hora).ThenBy(q => q.Salida).ToList(); //CALCULO CANTIDAD DE DIAS EN EL MES int DiasEnMes = System.DateTime.DaysInMonth(LineasOrigen[0].Fecha.Year, LineasOrigen[0].Fecha.Month); //CALCULO CUAL ES EL DIA DE LA SEMANA DEL 1 DEL MES int DiaSemana = Convert.ToInt32(Convert.ToDateTime( LineasOrigen[0].Fecha.Year.ToString() + "-" + LineasOrigen[0].Fecha.Month.ToString("00") + "-" + "01").DayOfWeek); // RECORRO UNO A UNO LOS DIAS DEL MES for (int i = 1; i <= DiasEnMes; i++) { // PREGUNTO SI EL DIA DEL MES ESTA DENTRO DEL RANGO DE DIAS SELECCIONADOS COMO DESTINO if (i >= fDestinoDesde.Day && i <= fDestinoHasta.Day) { DateTime muleto = new DateTime(LineasSeleccionadas[0].Fecha.Year, LineasSeleccionadas[0].Fecha.Month, i); string diamuleto = muleto.DayOfWeek.ToString().Trim().ToUpper(); for (int x = 0; x <= DiasSemana.Length - 1; x++) { if (DiasSemana[1, x].ToUpper() == diamuleto) { diamuleto = DiasSemana[0, x].ToUpper(); break; } } var listamuleto = frecuenciaDetalles.FindAll(q => q.DiaSemana.Trim().ToUpper() == diamuleto); if (listamuleto.Count > 0) { //BUSCO A VER SI EXISTEN LINEAS PREVIAS CON DATOS PARA ESA FECHA var newList = LineasOrigen.FindAll(s => s.Fecha.Day == i); DAO.EstimadoDetDAO odd = new DAO.EstimadoDetDAO(); int LastId = odd.GetLastRecId(); if (newList.Count > 0) LineasDestino.RemoveAll(p => p.Fecha.Day == i); //NO HAY DATOS PREEXISTENTES PARA ESE DIA DEL MES DateTime diaActual = new DateTime(LineasOrigen[0].Fecha.Year, LineasOrigen[0].Fecha.Month, i); // CREO UNA NUEVA LINEA CON LOS DATOS DE LA PRESELECCION PARA ESE DIA DE LA SEMANA for (int j = 0; j <= LineasSeleccionadas.Count - 1; j++) { var miLineaSeleccionada = LineasSeleccionadas[j].DiaSemana.ToUpper().Trim().Replace("É", "E").Replace("Á", "A"); var lista = frecuenciaDetalles.FindAll(q => q.DiaSemana.Trim() == miLineaSeleccionada); if (lista.Count == 1) { EstimadoDetDTO newLine = new EstimadoDetDTO(); LastId++; newLine.DatareaId = 0 ; newLine.RecId = LastId ; newLine.Costo = LineasSeleccionadas[j].Costo ; newLine.CostoOp = LineasSeleccionadas[j].CostoOp ; newLine.CostoOpUni = LineasSeleccionadas[j].CostoOpUni; newLine.CostoUni = LineasSeleccionadas[j].CostoUni ; newLine.Dia = i; newLine.Fecha = new DateTime(LineasSeleccionadas[j].Fecha.Year, LineasSeleccionadas[j].Fecha.Month, i); string dia = newLine.Fecha.DayOfWeek.ToString().ToUpper(); for (int k = 0; k <= DiasSemana.Length - 1; k++) { if (DiasSemana[1, k].ToUpper() == dia) { newLine.DiaSemana = DiasSemana[0, k].ToUpper(); break; } } newLine.Duracion = LineasSeleccionadas[j].Duracion ; newLine.Hora = LineasSeleccionadas[j].Hora ; newLine.IdentifAviso = LineasSeleccionadas[j].IdentifAviso ; newLine.PautaId = LineasSeleccionadas[j].PautaId ; newLine.Salida = LineasSeleccionadas[j].Salida ; LineasDestino.Add(newLine); } } } } DiaSemana = DiaSemana == 7 ? 1 : DiaSemana++; } lineas = LineasDestino.OrderBy(p => p.Dia).ThenBy(q => q.Hora).ThenBy(r => r.Salida).ToList(); return lineas; }
private List<EstimadoDetDTO> GenerarLineas(TimeSpan horaInicio, TimeSpan horaFin, IntervaloDTO intervalo, FrecuenciaDTO frecuenciaCab, AvisosDTO aviso, List<FrecuenciaDetDTO> frecuenciaDetalles) { List<EstimadoDetDTO> lineas = Lineas; List<EstimadoDetDTO> preExistentes = new List<EstimadoDetDTO>(); if (Validaciones(horaInicio, horaFin, intervalo, frecuenciaCab, aviso, frecuenciaDetalles) == false) { RefreshAbmGrid(gv); return lineas; } TimeSpan incremento = TimeSpan.FromMinutes(Convert.ToDouble(intervalo.CantMinutos)); TimeSpan horaTemp; EstimadoDetDTO linea; List<DateTime> periodo; int year = Convert.ToInt32(Estimado.Cabecera.AnoMes.ToString().Substring(0,4)); int month = Convert.ToInt32(Estimado.Cabecera.AnoMes.ToString().Substring(4,2)); try { //Obtengo la lista de los días partiedo de fechas o nombres de dia. if (frecuenciaCab.SemMes == "SEMANA") periodo = Ordenados.GetDatesByDayNames(year, month, GetDiasSeleccionados()); else periodo = Ordenados.GetDatesByDayNumbers(year, month, GetDiasSeleccionados()); foreach (DateTime fecha in periodo) { horaTemp = horaInicio; //Mientras no supere la hora hasta... while (horaTemp.CompareTo(horaFin) < 0) { DateTime fechaTmp = new DateTime(fecha.Year, fecha.Month, fecha.Day, horaTemp.Hours, horaTemp.Minutes, horaTemp.Seconds); linea = new EstimadoDetDTO(); linea.RecId = lineas.Count; linea.Fecha = fechaTmp; linea.Hora = horaTemp; linea.Dia = fecha.Day; linea.DiaSemana = fecha.ToString("dddd", new CultureInfo("es-ES")).ToUpper().Trim(); linea.IdentifAviso = aviso != null ? aviso.IdentifAviso : string.Empty; linea.Duracion = aviso != null ? aviso.Duracion : null; linea.Salida = spSalidasInsertar.Value != null ? spSalidasInsertar.Number : 0; lineas.Add(linea); if (!lineas.Exists( (x) => (x.Fecha == fechaTmp && x.Hora == horaTemp))) { lineas.Add(linea); } else { preExistentes.Add(linea); } horaTemp = horaTemp.Add(incremento); } } } catch (Exception ex) { MsgErrorLinas(ex); } if (preExistentes.Count > 0) lblErrorLineas.Text = "No se pudieron grabar todas las lineas"; return lineas; }
public EstimadoDetVersionDTO(EstimadoDetDTO estDet) { DTOHelper.FillObjectByObject(estDet, this); }
public CertificadoDetDTO(EstimadoDetDTO estDet) { DTOHelper.FillObjectByObject(estDet, this); }
public CertificadoDetDTO(EstimadoDetDTO estDet) { DTOHelper.FillObjectByObject(estDet, this); }