protected void BtnGuardar_OnClick(object sender, EventArgs e) { ValidarDatosVigencia(); using (var transaction = SmartTransaction.BeginTransaction()) { if (EditObject.Id == 0) { GuardarNuevaLinea(); } var nuevaVigencia = new VigenciaPlanLinea { Inicio = SecurityExtensions.ToDataBaseDateTime(dtDesde.SelectedDate.Value), LineaTelefonica = EditObject, Plan = cbPlan.Selected > 0 ? DAOFactory.PlanDAO.FindById(cbPlan.Selected) : null }; ValidarCondicionesVigencia(nuevaVigencia); EditObject.Vigencias.Add(nuevaVigencia); DAOFactory.LineaTelefonicaDAO.SaveOrUpdate(EditObject); transaction.Commit(); } Response.Redirect(RedirectUrl); }
private void ValidarCondicionesVigencia(VigenciaPlanLinea nuevaVigencia) { if (dtHasta.SelectedDate.HasValue) // SI SE DEFINE UNA FECHA FIN { nuevaVigencia.Fin = SecurityExtensions.ToDataBaseDateTime(dtHasta.SelectedDate.Value); // LA FECHA DE FIN NO TIENE QUE ESTAR CONTENIDA EN NINGUNA VIGENCIA EXISTENTE var vigenteFin = EditObject.Vigencias.Cast <VigenciaPlanLinea>() .Where(v => nuevaVigencia.Fin > v.Inicio && nuevaVigencia.Fin < v.Fin); if (vigenteFin.Count() > 0) { DisplayError(string.Format(CultureManager.GetError("INVALID_VALUE"), CultureManager.GetLabel("VIGENCIA_HASTA"))); return; } } else // SI NO SE DEFINE UNA FECHA FIN { // NO PUEDE EXISTIR UNA VIGENCIA POSTERIOR A LA FECHA INICIO var vigenciasPosteriores = EditObject.Vigencias.Cast <VigenciaPlanLinea>().Where(v => v.Inicio > nuevaVigencia.Inicio); if (vigenciasPosteriores.Count() > 0) { DisplayError(string.Format(CultureManager.GetError("INVALID_VALUE"), CultureManager.GetLabel("VIGENCIA_DESDE"))); return; } } // LA FECHA DE INICIO NO TIENE QUE ESTAR CONTENIDA EN NINGUNA VIGENCIA EXISTENTE var vigenteInicio = EditObject.Vigencias.Cast <VigenciaPlanLinea>() .Where(v => nuevaVigencia.Inicio > v.Inicio && nuevaVigencia.Inicio < v.Fin); if (vigenteInicio.Count() > 0) { DisplayError(string.Format(CultureManager.GetError("INVALID_VALUE"), CultureManager.GetLabel("VIGENCIA_DESDE"))); return; } // SI HAY ALGUNA VIGENCIA SIN FECHA DE FIN // Y CON FECHA DE INICIO MENOR A LA FECHA DE INICIO DE LA NUEVA VIGENCIA // => SE ASIGNA SU FECHA DE FIN COMO LA FECHA DE INICIO DE LA NUEVA VIGENCIA var vigenteActual = EditObject.Vigencias.Cast <VigenciaPlanLinea>() .Where(v => v.Inicio < nuevaVigencia.Inicio && v.Fin == null); if (vigenteActual.Count() > 0 && vigenteActual.First() != null && vigenteActual.First().Fin == null && vigenteActual.First().Inicio < nuevaVigencia.Inicio) { vigenteActual.First().Fin = nuevaVigencia.Inicio; } }
public VigenciaPlanLineaVo(VigenciaPlanLinea vigenciaPlanLinea) { Id = vigenciaPlanLinea.Id; Inicio = vigenciaPlanLinea.Inicio.ToDisplayDateTime().ToString("dd/MM/yyyy"); Fin = vigenciaPlanLinea.Fin != null?vigenciaPlanLinea.Fin.Value.ToDisplayDateTime().ToString("dd/MM/yyyy") : ""; Plan = vigenciaPlanLinea.Plan.CodigoAbono; switch (vigenciaPlanLinea.Plan.Empresa) { case 1: Empresa = "Claro"; break; case 2: Empresa = "Movistar"; break; case 3: Empresa = "Personal"; break; case 4: Empresa = "Orbcom"; break; default: Empresa = ""; break; } }