/// <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)
 {
     Campaña databaseCampaña = this.GetByCodigo(pCampaña.Codigo);
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         //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)
         {
             this.iUnitOfWork.ImagenRepository.Update(pImagen);
         }
         foreach (Imagen pImagen in imagenesEliminadas)
         {
             this.iUnitOfWork.ImagenRepository.Delete(pImagen);
         }
         foreach (Imagen pImagen in imagenesAInsertar)
         {
             this.iUnitOfWork.ImagenRepository.Insert(pImagen);
         }
         //RANGOS FECHA y HORARIO
         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)
         {
             this.iUnitOfWork.RangoFechaRepository.Delete(pRangoFecha);
         }
         foreach (RangoFecha pRangoFecha in rangosFechaAInsertar)
         {
             this.iUnitOfWork.RangoFechaRepository.Insert(pRangoFecha);
         }
         foreach (RangoFecha pRangoFecha in rangosFechaModificados)
         {
             //Rangos Horarios
             List<RangoHorario> rangosHorarioDatabase = databaseCampaña.RangosFecha.Find(x => x == pRangoFecha).RangosHorario;
             List<RangoHorario> rangosHorariosEliminados = ExtesionLista.GetDeleted<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             List<RangoHorario> rangosHorariosModificados = ExtesionLista.GetModified<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             List<RangoHorario> rangosHorariosAInsertar = ExtesionLista.GetNew<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             foreach (RangoHorario pRangoHorario in rangosHorariosEliminados)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Delete(pRangoHorario);
             }
             foreach (RangoHorario pRangoHorario in rangosHorariosAInsertar)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Insert(pRangoHorario);
             }
             foreach (RangoHorario pRangoHorario in rangosHorariosModificados)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Update(pRangoHorario);
             }
             this.iUnitOfWork.RangoFechaRepository.Update(pRangoFecha);
         }
         this.iUnitOfWork.CampañaRepository.Update(pCampaña);
         this.iUnitOfWork.Save();
     }
 }
 /// <summary>
 /// Crea una Banner en la base de datos
 /// </summary>
 /// <param name="pBanner">Banner a almacenar en la base de datos</param>
 public virtual void Create(Banner pBanner)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         this.iUnitOfWork.BannerRepository.Insert(pBanner);
         this.iUnitOfWork.Save();
     }
 }
 /// <summary>
 /// Obtiene una instancia de Persona
 /// </summary>
 /// <param name="pInformacionAdicionalCodigo">Id de la persona que se desea obtener</param>
 /// <returns></returns>
 public virtual InformacionAdicional GetByCodigo(int pInformacionAdicionalCodigo)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         InformacionAdicional informacionAdicional = this.iUnitOfWork.InformacionAdicionalRepository.GetByCodigo(pInformacionAdicionalCodigo);
         return informacionAdicional;
     }
 }
 /// <summary>
 /// Obtiene toda la Informacion Adicional de la base de datos
 /// </summary>
 /// <returns>Tipo de datos Lista que representa la Información Adicional almacenada</returns>
 public virtual List<InformacionAdicional> GetAll()
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         List<InformacionAdicional> listaInformacionAdicional = this.iUnitOfWork.InformacionAdicionalRepository.context.InformacionAdicional.ToList<InformacionAdicional>();
         return listaInformacionAdicional;
     }
 }
 /// <summary>
 /// Elimina una Información Adicional de la base de datos
 /// </summary>
 /// <param name="pInformacionAdicional">Información Adicional a eliminar</param>
 public virtual void Delete(InformacionAdicional pInformacionAdicional)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = new UnitOfWork();
         this.iUnitOfWork.InformacionAdicionalRepository.Delete(pInformacionAdicional);
         this.iUnitOfWork.Save();
     }
 }
 /// <summary>
 /// Crea (guarda) una Información Adicional
 /// </summary>
 /// <param name="pInformacionAdicional">Información Adicional a agregar a la base datos</param>
 public virtual void Create(InformacionAdicional pInformacionAdicional)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         this.iUnitOfWork.InformacionAdicionalRepository.Insert(pInformacionAdicional);
         this.iUnitOfWork.Save();
     }
 }
 /// <summary>
 /// Crea (guarda) una Campaña junto con sus Imágenes y Rangos de Fecha en la base de datos
 /// </summary>
 /// <param name="pCampaña">Campaña a almacenar en la base datos</param>
 public virtual void Create(Campaña pCampaña)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         this.iUnitOfWork.CampañaRepository.Insert(pCampaña);
         this.iUnitOfWork.Save();
     }
 }
 /// <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)
 {
     Banner databaseBanner = this.GetByCodigo(pBanner.Codigo);
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         //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)
         {
             this.iUnitOfWork.RangoFechaRepository.Delete(pRangoFecha);
         }
         foreach (RangoFecha pRangoFecha in rangosFechaAInsertar)
         {
             this.iUnitOfWork.RangoFechaRepository.Insert(pRangoFecha);
         }
         foreach (RangoFecha pRangoFecha in rangosFechaModificados)
         {
             //Rangos Horarios
             List<RangoHorario> rangosHorarioDatabase = databaseBanner.RangosFecha.Find(x => x == pRangoFecha).RangosHorario;
             List<RangoHorario> rangosHorariosEliminados = ExtesionLista.GetDeleted<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             List<RangoHorario> rangosHorariosModificados = ExtesionLista.GetModified<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             List<RangoHorario> rangosHorariosAInsertar = ExtesionLista.GetNew<RangoHorario>(rangosHorarioDatabase, pRangoFecha.RangosHorario);
             foreach (RangoHorario pRangoHorario in rangosHorariosEliminados)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Delete(pRangoHorario);
             }
             foreach (RangoHorario pRangoHorario in rangosHorariosAInsertar)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Insert(pRangoHorario);
             }
             foreach (RangoHorario pRangoHorario in rangosHorariosModificados)
             {
                 this.iUnitOfWork.RangoHorarioRepository.Update(pRangoHorario);
             }
             this.iUnitOfWork.RangoFechaRepository.Update(pRangoFecha);
             this.iUnitOfWork.BannerRepository.Update(pBanner);
             this.iUnitOfWork.Save();
         }
     }
 }
 /// <summary>
 /// Elimina un Banner de la base de datos
 /// </summary>
 /// <param name="pBanner">Banner a eliminar</param>
 public virtual void Delete(Banner pBanner)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = new UnitOfWork();
         this.iUnitOfWork.BannerRepository.Delete(pBanner);
         this.iUnitOfWork.Save();
     }
 }
 /// <summary>
 /// Obtiene una instancia de Banner
 /// </summary>
 /// <param name="pBannerCodigo">Código del Banner que se desea obtener</param>
 /// <returns></returns>
 public virtual Banner GetByCodigo(int pBannerCodigo)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         Banner banner = this.iUnitOfWork.BannerRepository.GetByCodigo(pBannerCodigo);
         this.iUnitOfWork.CampañaRepository.context.Entry(banner).Collection("RangosFecha").Load();
         foreach (RangoFecha rangoFecha in banner.RangosFecha)
         {
             this.iUnitOfWork.RangoFechaRepository.context.Entry(rangoFecha).Collection("RangosHorario").Load();
         }
         return banner;
     }
 }
 /// <summary>
 /// Obtiene todos los Banners de la base de datos
 /// </summary>
 /// <returns>Tipo de dato Lista que representa los Banners almacenados en la base de dato</returns>
 public virtual List<Banner> GetAll()
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         List<Banner> listaBanners = this.iUnitOfWork.BannerRepository.context.Banners.ToList<Banner>();
         foreach (Banner banner in listaBanners)
         {
             this.iUnitOfWork.CampañaRepository.Queryable.Include("RangosFecha").ToList();
             foreach (RangoFecha rangoFecha in banner.RangosFecha)
             {
                 this.iUnitOfWork.RangoFechaRepository.Queryable.Include("RangosHorario").ToList();
             }
         }
         return listaBanners;
     }
 }
 /// <summary>
 /// Obtiene una instancia de Campaña
 /// </summary>
 /// <param name="pCampañaCodigo">Código de la Campaña que se desea obtener</param>
 /// <returns></returns>
 public virtual Campaña GetByCodigo(int pCampañaCodigo)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         Campaña campaña = this.iUnitOfWork.CampañaRepository.GetByCodigo(pCampañaCodigo);
         this.iUnitOfWork.CampañaRepository.context.Entry(campaña).Collection("Imagenes").Load();
         this.iUnitOfWork.CampañaRepository.context.Entry(campaña).Collection("RangosFecha").Load();
         foreach(RangoFecha rangoFecha in campaña.RangosFecha)
         {
             this.iUnitOfWork.RangoFechaRepository.context.Entry(rangoFecha).Collection("RangosHorario").Load();
         }
         return campaña;
     }
 }
 /// <summary>
 /// Obtiene todos las Campañas de la base de datos
 /// </summary>
 /// <returns>Tipo de dato Lista que representa todas las Campañas almacenadas en la base de datos</returns>
 public virtual List<Campaña> GetAll()
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = pUnitOfWork;
         List<Campaña> listaCampañas = this.iUnitOfWork.CampañaRepository.context.Campañas.ToList<Campaña>();
         foreach (Campaña campaña in listaCampañas)
         {
             this.iUnitOfWork.CampañaRepository.Queryable.Include("Imagen").ToList();
             this.iUnitOfWork.CampañaRepository.Queryable.Include("RangosFecha").ToList();
             foreach (RangoFecha rangoFecha in campaña.RangosFecha)
             {
                 this.iUnitOfWork.RangoFechaRepository.Queryable.Include("RangosHorario").ToList();
             }
         }
         return listaCampañas;
     }
 }
 /// <summary>
 /// Elimina una Campaña de la base de datos
 /// </summary>
 /// <param name="pCampaña">Campaña a eliminar</param>
 public virtual void Delete(Campaña pCampaña)
 {
     using (UnitOfWork pUnitOfWork = new UnitOfWork())
     {
         this.iUnitOfWork = new UnitOfWork();
         this.iUnitOfWork.CampañaRepository.Delete(pCampaña);
         this.iUnitOfWork.Save();
     }
 }