/// <summary> /// Actualiza un Banner de la base de datos /// </summary> /// <param name="pBanner">Banner a actualizar de la base de datos</param> public virtual void Update(Banner pBanner) { using (UnitOfWork pUnitOfWork = new UnitOfWork()) { Banner databaseBanner = this.GetByCodigo(pBanner.Codigo); pUnitOfWork.BannerRepository.Update(databaseBanner); pUnitOfWork.BannerRepository.ChangeValues(databaseBanner, pBanner); //Rangos Fecha List <RangoFecha> rangosFechaEliminados = ExtesionLista.GetDeleted <RangoFecha>(databaseBanner.RangosFecha, pBanner.RangosFecha); List <RangoFecha> rangosFechaModificados = ExtesionLista.GetModified <RangoFecha>(databaseBanner.RangosFecha, pBanner.RangosFecha); List <RangoFecha> rangosFechaAInsertar = ExtesionLista.GetNew <RangoFecha>(databaseBanner.RangosFecha, pBanner.RangosFecha); foreach (RangoFecha pRangoFecha in rangosFechaEliminados) { pRangoFecha.Principal = null; pUnitOfWork.RangoFechaRepository.DeleteWithRelated(pRangoFecha); } foreach (RangoFecha pRangoFecha in rangosFechaAInsertar) { pRangoFecha.Principal = null; pUnitOfWork.RangoFechaRepository.Insert(pRangoFecha); } foreach (RangoFecha pRangoFecha in rangosFechaModificados) { //Actualizar Rango Fecha RangoFecha rangoFechaOriginal = databaseBanner.RangosFecha.Find(x => x.Equals(pRangoFecha)); pUnitOfWork.RangoFechaRepository.ChangeValues(rangoFechaOriginal, pRangoFecha); //Rangos Horarios List <RangoHorario> rangosHorariosAInsertar = pRangoFecha.RangosHorario; for (int i = rangoFechaOriginal.RangosHorario.Count - 1; i >= 0; i--) { pUnitOfWork.RangoHorarioRepository.Delete(rangoFechaOriginal.RangosHorario[i]); } foreach (RangoHorario pRangoHorario in rangosHorariosAInsertar) { pRangoHorario.RangoFecha = null; pUnitOfWork.RangoHorarioRepository.Insert(pRangoHorario); } } pUnitOfWork.Save(); } }
/// <summary> /// Actualiza una Campaña de la base de datos /// </summary> /// <param name="pCampaña">Campaña a actualizar</param> public virtual void Update(Campaña pCampaña) { using (UnitOfWork pUnitOfWork = new UnitOfWork()) { Campaña databaseCampaña = this.GetByCodigo(pCampaña.Codigo); pUnitOfWork.CampañaRepository.Update(databaseCampaña); pUnitOfWork.CampañaRepository.ChangeValues(databaseCampaña, pCampaña); //Imágenes List <Imagen> imagenesEliminadas = ExtesionLista.GetDeleted <Imagen>(databaseCampaña.Imagenes, pCampaña.Imagenes); List <Imagen> imagenesModificadas = ExtesionLista.GetModified <Imagen>(databaseCampaña.Imagenes, pCampaña.Imagenes); List <Imagen> imagenesAInsertar = ExtesionLista.GetNew <Imagen>(databaseCampaña.Imagenes, pCampaña.Imagenes); foreach (Imagen pImagen in imagenesModificadas) { Imagen imagenOriginal = databaseCampaña.Imagenes.Find(x => x.Equals(pImagen)); pUnitOfWork.ImagenRepository.ChangeValues(imagenOriginal, pImagen); } foreach (Imagen pImagen in imagenesEliminadas) { //Para que no lance excepción pImagen.Campaña = null; pUnitOfWork.ImagenRepository.DeleteWithRelated(pImagen); } foreach (Imagen pImagen in imagenesAInsertar) { //Para que no cree otra campaña pImagen.Campaña = null; pUnitOfWork.ImagenRepository.Insert(pImagen); } //Rangos Fecha List <RangoFecha> rangosFechaEliminados = ExtesionLista.GetDeleted <RangoFecha>(databaseCampaña.RangosFecha, pCampaña.RangosFecha); List <RangoFecha> rangosFechaModificados = ExtesionLista.GetModified <RangoFecha>(databaseCampaña.RangosFecha, pCampaña.RangosFecha); List <RangoFecha> rangosFechaAInsertar = ExtesionLista.GetNew <RangoFecha>(databaseCampaña.RangosFecha, pCampaña.RangosFecha); foreach (RangoFecha pRangoFecha in rangosFechaEliminados) { pRangoFecha.Principal = null; pUnitOfWork.RangoFechaRepository.DeleteWithRelated(pRangoFecha); } foreach (RangoFecha pRangoFecha in rangosFechaAInsertar) { pRangoFecha.Principal = null; pUnitOfWork.RangoFechaRepository.Insert(pRangoFecha); } foreach (RangoFecha pRangoFecha in rangosFechaModificados) { //Actualizar Rango Fecha RangoFecha rangoFechaOriginal = databaseCampaña.RangosFecha.Find(x => x.Equals(pRangoFecha)); pUnitOfWork.RangoFechaRepository.ChangeValues(rangoFechaOriginal, pRangoFecha); //Rangos Horarios List <RangoHorario> rangosHorariosAInsertar = pRangoFecha.RangosHorario; for (int i = rangoFechaOriginal.RangosHorario.Count - 1; i >= 0; i--) { pUnitOfWork.RangoHorarioRepository.Delete(rangoFechaOriginal.RangosHorario[i]); } foreach (RangoHorario pRangoHorario in rangosHorariosAInsertar) { pRangoHorario.RangoFecha = null; pUnitOfWork.RangoHorarioRepository.Insert(pRangoHorario); } } pUnitOfWork.Save(); } }