public HtrabPorRecDto HorasPorRecurso(int idEmpleado, DateTime inicio, DateTime fin) { var consulta = (from b in _context.HoraTrabajada where (b.PerfilIdPerfil == idEmpleado) && (b.FechaHorasTrab >= inicio) && (b.FechaHorasTrab <= fin) select b).ToList(); var perfiles = (from c in _context.Perfil select c.IdPerfil).ToList(); var idsProyActivos = (from p in _context.Proyecto where p.EstadoProyecto == "Vigente" select p.IdProyecto).ToList(); List <SumaPerfiles> sumaPerfiles = new List <SumaPerfiles>(); List <HtrabDto> htrabDtos = new List <HtrabDto>(); perfiles.ForEach(delegate(int p) { int horas = consulta.Where( x => x.PerfilIdPerfil == p).Sum(x => x.CatidadHorasTrab); if (horas > 0) { sumaPerfiles.Add(new SumaPerfiles() { IdPerfil = p, HorasPerfil = horas }); } }); idsProyActivos.ForEach(delegate(int p) { int horas = consulta.Where( x => x.ProyectoIdProyecto == p).Sum(x => x.CatidadHorasTrab); if (horas > 0) { htrabDtos.Add(new HtrabDto() { IdProy = p, TotalHorasProy = horas }); } }); HtrabPorRecDto htrabPorRecDto = new HtrabPorRecDto() { TotalHorasRec = consulta.Sum(x => x.CatidadHorasTrab), PorPerfil = sumaPerfiles, PorProyecto = htrabDtos }; return(htrabPorRecDto); }
private void getHorasPorPeriodo() { HtrabPorRecDto horasTrabajadas = null; HttpResponseMessage response = HttpUtils.getHorasTrabajadasFecha(Settings.Default.Client, "/horatrabajadas/porfecha/", ComboBoxPerfiles.SelectedValue.ToString(), fechaInicio.Value.Date.ToString(("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz")), fechaFin.Value.Date.ToString(("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz"))); string stringCR = response.Content.ReadAsStringAsync().Result; horasTrabajadas = JsonConvert.DeserializeObject <HtrabPorRecDto>(stringCR); if (response.IsSuccessStatusCode && horasTrabajadas.TotalHorasRec > 0) { DialogResult result = MessageBox.Show("Total de horas: " + horasTrabajadas.TotalHorasRec, "Horas Trabajadas por Período", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("No posee horas cargadas en ese período.", "Oops!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }