public async Task <IActionResult> ListFromService(int idServicio, DateTime?creationDateFrom = null, DateTime?creationDateTo = null, int?idTipoRecurso = null) { try { var filter = new ServicioRecursoFilterDTO(creationDateFrom, creationDateTo, idTipoRecurso); var entities = await _recursoService.ListFromService(idServicio, filter, Usuario); return(Ok(entities)); } catch (Exception e) { return(StatusCode(500, e.Message)); } }
public async Task <IEnumerable <ServicioRecursoDTO> > ListFromService(int IdServicio, ServicioRecursoFilterDTO filter, UsuarioDTO currUser) { var result = new List <ServicioRecursoDTO>(); var rrhh = await _servicioRecursoRepository.ListBy(s => s.Active == true && s.IdServicio == IdServicio && s.IdRecursoNavigation.IdTipoRecurso == TipoRecursoEnum.Recurso_Humano.ToInt() && s.IdRecursoNavigation.IdEmpresa == currUser.IdEmpresa, s => s.IdRecursoNavigation, s => s.IdRecursoNavigation.IdTipoRecursoNavigation, s => s.IdRecursoNavigation.RecursoHumano); var rrmat = await _servicioRecursoRepository.ListBy(s => s.Active == true && s.IdServicio == IdServicio && s.IdRecursoNavigation.IdTipoRecurso == TipoRecursoEnum.Recurso_Material.ToInt() && s.IdRecursoNavigation.IdEmpresa == currUser.IdEmpresa, s => s.IdRecursoNavigation, s => s.IdUbicacionNavigation, s => s.IdRecursoNavigation.IdTipoRecursoNavigation, s => s.IdRecursoNavigation.RecursoMaterial); if (rrhh.Any()) { result.AddRange(rrhh.Select(s => new ServicioRecursoDTO { Recurso = new RecursoDTO { Id = s.IdRecurso, Descripcion = s.IdRecursoNavigation.RecursoHumano.FirstOrDefault().Apellido + ", " + s.IdRecursoNavigation.RecursoHumano.FirstOrDefault().Nombre + " - " + s.IdRecursoNavigation.RecursoHumano.FirstOrDefault().Cuil, CreationDate = s.IdRecursoNavigation.CreationDate }, TipoRecurso = _mapper.Map <TipoRecursoDTO>(s.IdRecursoNavigation.IdTipoRecursoNavigation), FechaAsignado = s.FechaAsignado, Id = s.Id, FechaDesasignado = s.FechaDesasignado, IdRecurso = s.IdRecurso, IdUbicacion = s.IdUbicacion, IdServicio = s.IdServicio }).ToList()); } if (rrmat.Any()) { result.AddRange(rrmat.Select(s => new ServicioRecursoDTO { Recurso = new RecursoDTO { Id = s.IdRecurso, Descripcion = s.IdRecursoNavigation.RecursoMaterial.FirstOrDefault().Marca + ", " + s.IdRecursoNavigation.RecursoMaterial.FirstOrDefault().Modelo + (s.IdUbicacionNavigation != null ? " - " + s.IdUbicacionNavigation.Referencia :""), CreationDate = s.IdRecursoNavigation.CreationDate }, TipoRecurso = _mapper.Map <TipoRecursoDTO>(s.IdRecursoNavigation.IdTipoRecursoNavigation), FechaAsignado = s.FechaAsignado, Id = s.Id, FechaDesasignado = s.FechaDesasignado, IdRecurso = s.IdRecurso, IdUbicacion = s.IdUbicacion, IdServicio = s.IdServicio }).ToList()); } return(result.Where(s => (!filter.FechaAsignadoFrom.HasValue || s.FechaAsignado >= filter.FechaAsignadoFrom.Value) && (!filter.FechaAsignadoTo.HasValue || s.FechaAsignado <= filter.FechaAsignadoTo.Value) && (!filter.IdTipoRecurso.HasValue || s.TipoRecurso.Id == filter.IdTipoRecurso.Value) ).OrderBy(x => x.Id)); }