private async Task <List <Ave> > FiltrarResultados(AveVM ave, bool hayNombre, bool hayZona, List <Ave> aves) { if (hayNombre && hayZona) { aves = await _aveServices .ListarAsyncFilteredAsNoTracking( x => (x.NombreComun.Contains(ave.NombreComunOCientifico) || x.NombreCientifico.Contains(ave.NombreComunOCientifico)) && x.AvesPais.Any(avepais => avepais.Pais.Zona.NombreZona == ave.NombreZona), "AvesPais.Pais.Zona"); } else if (hayNombre) { aves = await _aveServices .ListarAsyncFilteredAsNoTracking( x => x.NombreComun.Contains(ave.NombreComunOCientifico) || x.NombreCientifico.Contains(ave.NombreComunOCientifico)); } else if (hayZona) { aves = await _aveServices .ListarAsyncFilteredAsNoTracking(x => x.AvesPais.Any(avepais => avepais.Pais.Zona.NombreZona == ave.NombreZona), "AvesPais.Pais.Zona"); } return(aves); }
//GET: Ave/Delete/5 public async Task <ActionResult> Eliminar(string codigo) { if (codigo == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } paisesDisponibles = await _paisServices.ListarAsyncAsNoTracking(); Ave ave = await _aveServices.FindAsync(codigo); AveVM aveVM = new AveVM { Codigo = codigo, NombreComun = ave.NombreComun, NombreCientifico = ave.NombreCientifico, PaisesSeleccionados = ave.AvesPais.Select(x => x.CodigoPais).ToArray(), PaisesDisponibles = paisesDisponibles, Paises = ave.AvesPais.Select(y => y.Pais).ToList() }; if (aveVM == null) { return(HttpNotFound()); } return(View(aveVM)); }
// GET: Ave/Create public async Task <ActionResult> Crear() { paisesDisponibles = await _paisServices.ListarAsyncAsNoTracking(); var aveVM = new AveVM(); aveVM.PaisesDisponibles = paisesDisponibles; aveVM.ZonasDisponibles = zonasDisponibles; return(View(aveVM)); }
public async Task <ActionResult> Listar(AveVM ave, int?page = 1) { zonasDisponibles = await _zonaServices.ListarAsyncAsNoTracking(); ave.ZonasDisponibles = zonasDisponibles; ave.NombreComunOCientifico = ave.NombreComunOCientifico ?? ""; ave.NombreZona = ave.NombreZona ?? ""; bool hayNombre = !string.IsNullOrEmpty(ave.NombreComunOCientifico); bool hayZona = !string.IsNullOrEmpty(ave.NombreZona); bool hayFiltros = hayNombre || hayZona; IEnumerable <AveVM> lista = null; List <Ave> aves = new List <Ave>(); if (!hayFiltros) { aves = await _aveServices.ListarAsyncAsNoTracking(); } else { ave.NombreComunOCientifico = ave.NombreComunOCientifico.ToUpperInvariant().Trim(); ave.NombreZona = ave.NombreZona.ToUpperInvariant().Trim(); aves = await FiltrarResultados(ave, hayNombre, hayZona, aves); } lista = aves.Select(x => new AveVM { Codigo = x.Codigo, NombreComun = x.NombreComun, NombreCientifico = x.NombreCientifico, Paises = x.AvesPais.Select(y => y.Pais).ToList() }); IPagedList <AveVM> paginaConAves = lista.ToPagedList(page ?? 1, pageSize); ave.Lista = paginaConAves; if (Request.IsAjaxRequest()) { return(PartialView("_AvesPartialView", ave)); } return(View(ave)); }
public async Task <ActionResult> Editar([Bind(Include = "Codigo,NombreComun,NombreCientifico,Paises,PaisesSeleccionados")] AveVM aveVM) { aveVM.PaisesDisponibles = paisesDisponibles; if (ModelState.IsValid) { Ave ave = await _aveServices.FindAsync(aveVM.Codigo); ave.NombreCientifico = aveVM.NombreCientifico.ToUpperInvariant(); ave.NombreComun = aveVM.NombreComun.ToUpperInvariant(); foreach (string codigoPais in aveVM.PaisesSeleccionados) { if (ave.AvesPais.Any(x => x.CodigoPais == codigoPais)) { continue; } else { ave.AvesPais.Add(new AvePais { CodigoPais = codigoPais, CodigoAve = aveVM.Codigo }); } } //remover paises no seleccionados ave.AvesPais = ave.AvesPais.Where(x => aveVM.PaisesSeleccionados.Contains(x.CodigoPais)).ToList(); RespuestaApi respuesta = await _aveServices.ModificarAve(ave); bool exito = respuesta.Mensajes.Count == 0; if (exito) { return(RedirectToAction("Listar")); } else { ViewBag.Mensajes = respuesta.Mensajes; } } return(View(aveVM)); }
public async Task <ActionResult> Crear([Bind(Include = "Codigo,NombreComun,NombreCientifico,PaisesSeleccionados")] AveVM aveVM) { aveVM.PaisesDisponibles = paisesDisponibles; aveVM.ZonasDisponibles = zonasDisponibles; if (ModelState.IsValid) { var ave = new Ave { Codigo = aveVM.Codigo.ToUpperInvariant(), NombreComun = aveVM.NombreComun.ToUpperInvariant(), NombreCientifico = aveVM.NombreCientifico.ToUpperInvariant() }; List <AvePais> avePaises = new List <AvePais>(); foreach (string codigoPais in aveVM.PaisesSeleccionados) { avePaises.Add(new AvePais { CodigoPais = codigoPais, CodigoAve = aveVM.Codigo }); } ave.AvesPais = avePaises; RespuestaApi respuesta = await _aveServices.CrearAve(ave); bool exito = respuesta.Mensajes.Count == 0; if (exito) { return(RedirectToAction("Listar")); } else { ViewBag.Mensajes = respuesta.Mensajes; } } return(View(aveVM)); }